diff options
| author | Syndamia <kamen.d.mladenov@protonmail.com> | 2020-05-16 14:10:55 +0300 |
|---|---|---|
| committer | Syndamia <kamen.d.mladenov@protonmail.com> | 2020-05-16 14:10:55 +0300 |
| commit | 65b1ad12f3874395f5abb80783c0b52ac0d4e721 (patch) | |
| tree | 053c23318f7d1b698660479f556f362674148b97 /MundusTests | |
| parent | fe663e73be099a06bb5c164d543e86fcb953d0d0 (diff) | |
| download | Mundus-65b1ad12f3874395f5abb80783c0b52ac0d4e721.tar Mundus-65b1ad12f3874395f5abb80783c0b52ac0d4e721.tar.gz Mundus-65b1ad12f3874395f5abb80783c0b52ac0d4e721.zip | |
Started working on view layer tests and did a bit of restructuring.
Diffstat (limited to 'MundusTests')
| -rw-r--r-- | MundusTests/DataTests/Crafting/CraftingTableContextTests.cs | 20 | ||||
| -rw-r--r-- | MundusTests/DataTests/GameEventLogs/GameEventLogContextTests.cs | 50 | ||||
| -rw-r--r-- | MundusTests/DataTests/GameEventLogs/GameEventLogTests.cs | 16 | ||||
| -rw-r--r-- | MundusTests/DataTests/SuperLayers/LandContextTests.cs | 153 | ||||
| -rw-r--r-- | MundusTests/DataTests/SuperLayers/SkyContextTests.cs | 153 | ||||
| -rw-r--r-- | MundusTests/DataTests/SuperLayers/UndergroundContextTests.cs | 153 | ||||
| -rw-r--r-- | MundusTests/MundusTests.csproj | 198 | ||||
| -rw-r--r-- | MundusTests/packages.config | 44 |
8 files changed, 787 insertions, 0 deletions
diff --git a/MundusTests/DataTests/Crafting/CraftingTableContextTests.cs b/MundusTests/DataTests/Crafting/CraftingTableContextTests.cs new file mode 100644 index 0000000..224e250 --- /dev/null +++ b/MundusTests/DataTests/Crafting/CraftingTableContextTests.cs @@ -0,0 +1,20 @@ +using System; +using System.Linq; +using Mundus.Data.Crafting; +using Mundus.Data.Superlayers.Mobs; +using Mundus.Data.Windows; +using Mundus.Service; +using Mundus.Service.Tiles.Mobs.LandMobs; +using NUnit.Framework; + +namespace MundusTests.DataTests.Crafting { + [TestFixture] + public static class CraftingTableContextTests { + [Test] + public static void AddsRecipesUponInitialization() { + CraftingTableContext craftingTC = new CraftingTableContext(); + + Assert.Less(0, craftingTC.CraftingRecipes.Count(), "CraftingTableContext doesn't add any recipes upon initialization"); + } + } +} diff --git a/MundusTests/DataTests/GameEventLogs/GameEventLogContextTests.cs b/MundusTests/DataTests/GameEventLogs/GameEventLogContextTests.cs new file mode 100644 index 0000000..c801c7d --- /dev/null +++ b/MundusTests/DataTests/GameEventLogs/GameEventLogContextTests.cs @@ -0,0 +1,50 @@ +using System.Linq; +using Mundus.Data.GameEventLogs; +using NUnit.Framework; + +namespace MundusTests.DataTests.GameEventLogs { + [TestFixture] + public static class GameEventLogContextTests { + [Test] + public static void TableGetsResetOnInitialization() { + GameEventLogContext gelc = new GameEventLogContext(); + + Assert.AreEqual(0, gelc.GameEventLogs.Count(), "GameEventLogContext doesn't remove all values from table after being initialized."); + } + + [Test] + [TestCase("Test message one.", "Test message two.")] + public static void AddsMessageToTable(string message1, string message2) { + GameEventLogContext gelc = new GameEventLogContext(); + + gelc.AddMessage(message1); + gelc.AddMessage(message2); + + Assert.AreEqual(message1, gelc.GetMessage(1), "First message isn't properly added or can't get it from table."); + Assert.AreEqual(message2, gelc.GetMessage(2), "Second message isn't properly added or can't get it from table."); + } + + [Test] + [TestCase("Test message 1.", "Test message 2.")] + public static void AddsMessagesToTable(string message1, string message2) { + GameEventLogContext gelc = new GameEventLogContext(); + + gelc.AddMessage(message1); + gelc.AddMessage(message2); + + Assert.AreEqual(message1, gelc.GameEventLogs.Find(1).Message, "Didn't get the first message"); + Assert.AreEqual(message2, gelc.GameEventLogs.Find(2).Message, "Didn't get the second message"); + } + + [Test] + [TestCase("Test message 1.", "Test message 2.")] + public static void CountsProperAmmountOfMessages(string message1, string message2) { + GameEventLogContext gelc = new GameEventLogContext(); + + gelc.AddMessage(message1); + gelc.AddMessage(message2); + + Assert.AreEqual(2, gelc.GetCount(), "Count of messages is wrong"); + } + } +} diff --git a/MundusTests/DataTests/GameEventLogs/GameEventLogTests.cs b/MundusTests/DataTests/GameEventLogs/GameEventLogTests.cs new file mode 100644 index 0000000..b6d75cd --- /dev/null +++ b/MundusTests/DataTests/GameEventLogs/GameEventLogTests.cs @@ -0,0 +1,16 @@ +using System; +using Mundus.Data.GameEventLogs; +using NUnit.Framework; + +namespace MundusTests.DataTests.GameEventLogs { + [TestFixture] + public static class GameEventLogTests { + [Test] + [TestCase("Testing message")] + public static void InitializesWithProperMessageValue(string message) { + GameEventLog log = new GameEventLog(message); + + Assert.AreEqual(message, log.Message, "GameEventLog doesn't properly set message on initialization"); + } + } +} diff --git a/MundusTests/DataTests/SuperLayers/LandContextTests.cs b/MundusTests/DataTests/SuperLayers/LandContextTests.cs new file mode 100644 index 0000000..f083841 --- /dev/null +++ b/MundusTests/DataTests/SuperLayers/LandContextTests.cs @@ -0,0 +1,153 @@ +using System; +using System.Linq; +using Mundus.Data.SuperLayers; +using Mundus.Data.SuperLayers.DBTables; +using NUnit.Framework; + +namespace MundusTests.DataTests.SuperLayers { + [TestFixture] + public static class LandContextTests { + [Test] + public static void AddsCorrectValues() { + var mob = new LMPlacedTile("mob_stock", 0, 1, 1); + var structure = new LSPlacedTile("structure_stock", 0, 2, 1); + var ground = new LGPlacedTile("ground_stock", 3, 4); + + LandContext lc = new LandContext(); + + lc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + lc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + lc.AddGroundAtPosition(ground.stock_id, ground.YPos, ground.XPos); + lc.SaveChanges(); + + Assert.AreEqual(mob.stock_id, lc.GetMobLayerStock(mob.YPos, mob.XPos), "Didn't add the mob correctly"); + Assert.AreEqual(structure.stock_id, lc.GetStructureLayerStock(structure.YPos, structure.XPos), "Didn't add the structure correctly"); + Assert.AreEqual(ground.stock_id, lc.GetGroundLayerStock(ground.YPos, ground.XPos), "Didn't add the ground correctly"); + } + + [Test] + public static void ConsideredAliveAfterSmallDamage() { + var mob = new LMPlacedTile("mob_stock", 10, 1, 1); + var structure = new LSPlacedTile("structure_stock", 4, 2, 1); + + LandContext lc = new LandContext(); + + lc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + lc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + lc.SaveChanges(); + + Assert.IsTrue(lc.TakeDamageMobAtPosition(mob.YPos, mob.XPos, 3), "Mob is considered dead (health <= 0), but it shouldnt be"); + Assert.IsTrue(lc.TakeDamageStructureAtPosition(structure.YPos, structure.XPos, 2), "Structure is considered dead (health <= 0), but it shouldn't be"); + } + + [Test] + public static void ConsideredDeadAfterBigDamage() { + var mob = new LMPlacedTile("mob_stock", 10, 1, 1); + var structure = new LSPlacedTile("structure_stock", 4, 2, 1); + + LandContext lc = new LandContext(); + + lc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + lc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + lc.SaveChanges(); + + Assert.IsFalse(lc.TakeDamageMobAtPosition(mob.YPos, mob.XPos, 20), "Mob is considered alive (health > 0), but it shouldnt be"); + Assert.IsFalse(lc.TakeDamageStructureAtPosition(structure.YPos, structure.XPos, 20), "Structure is considered alive (health > 0), but it shouldn't be"); + } + + [Test] + public static void DamagesCorrectly() { + var mob = new LMPlacedTile("mob_stock", 10, 1, 1); + var structure = new LSPlacedTile("structure_stock", 4, 2, 1); + + LandContext lc = new LandContext(); + + lc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + lc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + lc.SaveChanges(); + + lc.TakeDamageMobAtPosition(mob.YPos, mob.XPos, 3); + lc.TakeDamageStructureAtPosition(structure.YPos, structure.XPos, 1); + + Assert.AreEqual(7, lc.LMobLayer.First(x => x.YPos == mob.YPos && x.XPos == mob.XPos).Health, "Mobs recieve incorrect amount of damage"); + Assert.AreEqual(3, lc.LStructureLayer.First(x => x.YPos == structure.YPos && x.XPos == structure.XPos).Health, "Structures recieve incorrect amount of damage"); + } + + [Test] + public static void GetsCorrectStocks() { + var mob = new LMPlacedTile("mob_stock", 0, 1, 1); + var structure = new LSPlacedTile("structure_stock", 0, 2, 1); + var ground = new LGPlacedTile("ground_stock", 3, 4); + + LandContext lc = new LandContext(); + + lc.LMobLayer.Add(mob); + lc.LStructureLayer.Add(structure); + lc.LGroundLayer.Add(ground); + lc.SaveChanges(); + + Assert.AreEqual(mob.stock_id, lc.GetMobLayerStock(mob.YPos, mob.XPos), "Doesn't get the correct mob layer stock"); + Assert.AreEqual(structure.stock_id, lc.GetStructureLayerStock(structure.YPos,structure.XPos), "Doesn't get the correct structure layer stock"); + Assert.AreEqual(ground.stock_id, lc.GetGroundLayerStock(ground.YPos, ground.XPos), "Doesn't get the correct ground layer stock"); + } + + [Test] + public static void RemovesCorrectValues() { + var mob = new LMPlacedTile("mob_stock", 0, 1, 1); + var structure = new LSPlacedTile("structure_stock", 0, 2, 1); + var ground = new LGPlacedTile("ground_stock", 3, 4); + + LandContext lc = new LandContext(); + + lc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + lc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + lc.AddGroundAtPosition(ground.stock_id, ground.YPos, ground.XPos); + lc.SaveChanges(); + + lc.RemoveMobFromPosition(mob.YPos, mob.XPos); + lc.RemoveStructureFromPosition(structure.YPos, structure.XPos); + lc.RemoveGroundFromPosition(ground.YPos, ground.XPos); + lc.SaveChanges(); + + Assert.AreEqual(null, lc.GetMobLayerStock(mob.YPos, mob.XPos), "Didn't remove the mob correctly"); + Assert.AreEqual(null, lc.GetStructureLayerStock(structure.YPos, structure.XPos), "Didn't remove the structure correctly"); + Assert.AreEqual(null, lc.GetGroundLayerStock(ground.YPos, ground.XPos), "Didn't remove the ground correctly"); + } + + + [Test] + public static void SetsCorrectValues() { + var mob = new LMPlacedTile("mob_stock", 0, 1, 1); + var newMob = new LMPlacedTile("new_mob_stock", 1, 1, 1); + var structure = new LSPlacedTile("structure_stock", 0, 2, 1); + var newStructure = new LSPlacedTile("new_structure_stock", 1, 2, 1); + var ground = new LGPlacedTile("ground_stock", 3, 4); + var newGround = new LGPlacedTile("new_ground_stock", 3, 4); + + LandContext lc = new LandContext(); + + lc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + lc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + lc.AddGroundAtPosition(ground.stock_id, ground.YPos, ground.XPos); + lc.SaveChanges(); + + lc.SetMobAtPosition(newMob.stock_id, newMob.Health, newMob.YPos, newMob.XPos); + lc.SetStructureAtPosition(newStructure.stock_id, newStructure.Health, newStructure.YPos, newStructure.XPos); + lc.SetGroundAtPosition(newGround.stock_id, newGround.YPos, newGround.XPos); + lc.SaveChanges(); + + Assert.AreEqual(newMob.stock_id, lc.GetMobLayerStock(mob.YPos, mob.XPos), "Didn't set the mob correctly"); + Assert.AreEqual(newStructure.stock_id, lc.GetStructureLayerStock(structure.YPos, structure.XPos), "Didn't set the structure correctly"); + Assert.AreEqual(newGround.stock_id, lc.GetGroundLayerStock(ground.YPos, ground.XPos), "Didn't set the ground correctly"); + } + + [Test] + public static void TruncatesTablesOnInitialization() { + LandContext lc = new LandContext(); + + Assert.AreEqual(0, lc.LMobLayer.Count(), "LMobLayer table isn't properly truncated upon LandContext initialization"); + Assert.AreEqual(0, lc.LStructureLayer.Count(), "LStructureLayer table isn't properly truncated upon LandContext initialization"); + Assert.AreEqual(0, lc.LGroundLayer.Count(), "LGroungLayer table isn't properly truncated upon LandContext initialization"); + } + } +} diff --git a/MundusTests/DataTests/SuperLayers/SkyContextTests.cs b/MundusTests/DataTests/SuperLayers/SkyContextTests.cs new file mode 100644 index 0000000..91a05b2 --- /dev/null +++ b/MundusTests/DataTests/SuperLayers/SkyContextTests.cs @@ -0,0 +1,153 @@ +using System; +using System.Linq; +using Mundus.Data.SuperLayers; +using Mundus.Data.SuperLayers.DBTables; +using NUnit.Framework; + +namespace MundusTests.DataTests.SuperLayers { + [TestFixture] + public static class SkyContextTests { + [Test] + public static void AddsCorrectValues() { + var mob = new SMPlacedTile("mob_stock", 0, 1, 1); + var structure = new SSPlacedTile("structure_stock", 0, 2, 1); + var ground = new SGPlacedTile("ground_stock", 3, 4); + + SkyContext sc = new SkyContext(); + + sc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + sc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + sc.AddGroundAtPosition(ground.stock_id, ground.YPos, ground.XPos); + sc.SaveChanges(); + + Assert.AreEqual(mob.stock_id, sc.GetMobLayerStock(mob.YPos, mob.XPos), "Didn't add the mob correctly"); + Assert.AreEqual(structure.stock_id, sc.GetStructureLayerStock(structure.YPos, structure.XPos), "Didn't add the structure correctly"); + Assert.AreEqual(ground.stock_id, sc.GetGroundLayerStock(ground.YPos, ground.XPos), "Didn't add the ground correctly"); + } + + [Test] + public static void ConsideredAliveAfterSmallDamage() { + var mob = new SMPlacedTile("mob_stock", 10, 1, 1); + var structure = new SSPlacedTile("structure_stock", 4, 2, 1); + + SkyContext sc = new SkyContext(); + + sc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + sc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + sc.SaveChanges(); + + Assert.IsTrue(sc.TakeDamageMobAtPosition(mob.YPos, mob.XPos, 3), "Mob is considered dead (health <= 0), but it shouldnt be"); + Assert.IsTrue(sc.TakeDamageStructureAtPosition(structure.YPos, structure.XPos, 2), "Structure is considered dead (health <= 0), but it shouldn't be"); + } + + [Test] + public static void ConsideredDeadAfterBigDamage() { + var mob = new SMPlacedTile("mob_stock", 10, 1, 1); + var structure = new SSPlacedTile("structure_stock", 4, 2, 1); + + SkyContext sc = new SkyContext(); + + sc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + sc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + sc.SaveChanges(); + + Assert.IsFalse(sc.TakeDamageMobAtPosition(mob.YPos, mob.XPos, 20), "Mob is considered alive (health > 0), but it shouldnt be"); + Assert.IsFalse(sc.TakeDamageStructureAtPosition(structure.YPos, structure.XPos, 20), "Structure is considered alive (health > 0), but it shouldn't be"); + } + + [Test] + public static void DamagesCorrectly() { + var mob = new SMPlacedTile("mob_stock", 10, 1, 1); + var structure = new SSPlacedTile("structure_stock", 4, 2, 1); + + SkyContext sc = new SkyContext(); + + sc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + sc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + sc.SaveChanges(); + + sc.TakeDamageMobAtPosition(mob.YPos, mob.XPos, 3); + sc.TakeDamageStructureAtPosition(structure.YPos, structure.XPos, 1); + + Assert.AreEqual(7, sc.SMobLayer.First(x => x.YPos == mob.YPos && x.XPos == mob.XPos).Health, "Mobs recieve incorrect amount of damage"); + Assert.AreEqual(3, sc.SStructureLayer.First(x => x.YPos == structure.YPos && x.XPos == structure.XPos).Health, "Structures recieve incorrect amount of damage"); + } + + [Test] + public static void GetsCorrectStocks() { + var mob = new SMPlacedTile("mob_stock", 0, 1, 1); + var structure = new SSPlacedTile("structure_stock", 0, 2, 1); + var ground = new SGPlacedTile("ground_stock", 3, 4); + + SkyContext sc = new SkyContext(); + + sc.SMobLayer.Add(mob); + sc.SStructureLayer.Add(structure); + sc.SGroundLayer.Add(ground); + sc.SaveChanges(); + + Assert.AreEqual(mob.stock_id, sc.GetMobLayerStock(mob.YPos, mob.XPos), "Doesn't get the correct mob layer stock"); + Assert.AreEqual(structure.stock_id, sc.GetStructureLayerStock(structure.YPos, structure.XPos), "Doesn't get the correct structure layer stock"); + Assert.AreEqual(ground.stock_id, sc.GetGroundLayerStock(ground.YPos, ground.XPos), "Doesn't get the correct ground layer stock"); + } + + [Test] + public static void RemovesCorrectValues() { + var mob = new SMPlacedTile("mob_stock", 0, 1, 1); + var structure = new SSPlacedTile("structure_stock", 0, 2, 1); + var ground = new SGPlacedTile("ground_stock", 3, 4); + + SkyContext sc = new SkyContext(); + + sc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + sc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + sc.AddGroundAtPosition(ground.stock_id, ground.YPos, ground.XPos); + sc.SaveChanges(); + + sc.RemoveMobFromPosition(mob.YPos, mob.XPos); + sc.RemoveStructureFromPosition(structure.YPos, structure.XPos); + sc.RemoveGroundFromPosition(ground.YPos, ground.XPos); + sc.SaveChanges(); + + Assert.AreEqual(null, sc.GetMobLayerStock(mob.YPos, mob.XPos), "Didn't remove the mob correctly"); + Assert.AreEqual(null, sc.GetStructureLayerStock(structure.YPos, structure.XPos), "Didn't remove the structure correctly"); + Assert.AreEqual(null, sc.GetGroundLayerStock(ground.YPos, ground.XPos), "Didn't remove the ground correctly"); + } + + + [Test] + public static void SetsCorrectValues() { + var mob = new SMPlacedTile("mob_stock", 0, 1, 1); + var newMob = new SMPlacedTile("new_mob_stock", 1, 1, 1); + var structure = new SSPlacedTile("structure_stock", 0, 2, 1); + var newStructure = new SSPlacedTile("new_structure_stock", 1, 2, 1); + var ground = new SGPlacedTile("ground_stock", 3, 4); + var newGround = new SGPlacedTile("new_ground_stock", 3, 4); + + SkyContext sc = new SkyContext(); + + sc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + sc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + sc.AddGroundAtPosition(ground.stock_id, ground.YPos, ground.XPos); + sc.SaveChanges(); + + sc.SetMobAtPosition(newMob.stock_id, newMob.Health, newMob.YPos, newMob.XPos); + sc.SetStructureAtPosition(newStructure.stock_id, newStructure.Health, newStructure.YPos, newStructure.XPos); + sc.SetGroundAtPosition(newGround.stock_id, newGround.YPos, newGround.XPos); + sc.SaveChanges(); + + Assert.AreEqual(newMob.stock_id, sc.GetMobLayerStock(mob.YPos, mob.XPos), "Didn't set the mob correctly"); + Assert.AreEqual(newStructure.stock_id, sc.GetStructureLayerStock(structure.YPos, structure.XPos), "Didn't set the structure correctly"); + Assert.AreEqual(newGround.stock_id, sc.GetGroundLayerStock(ground.YPos, ground.XPos), "Didn't set the ground correctly"); + } + + [Test] + public static void TruncatesTablesOnInitialization() { + SkyContext sc = new SkyContext(); + + Assert.AreEqual(0, sc.SMobLayer.Count(), "SMobLayer table isn't properly truncated upon SkyContext initialization"); + Assert.AreEqual(0, sc.SStructureLayer.Count(), "SStructureLayer table isn't properly truncated upon SkyContext initialization"); + Assert.AreEqual(0, sc.SGroundLayer.Count(), "LGroungLayer table isn't properly truncated upon SkyContext initialization"); + } + } +} diff --git a/MundusTests/DataTests/SuperLayers/UndergroundContextTests.cs b/MundusTests/DataTests/SuperLayers/UndergroundContextTests.cs new file mode 100644 index 0000000..98d7679 --- /dev/null +++ b/MundusTests/DataTests/SuperLayers/UndergroundContextTests.cs @@ -0,0 +1,153 @@ +using System; +using System.Linq; +using Mundus.Data.SuperLayers; +using Mundus.Data.SuperLayers.DBTables; +using NUnit.Framework; + +namespace MundusTests.DataTests.SuperLayers { + [TestFixture] + public static class UndergroundContextTests { + [Test] + public static void AddsCorrectValues() { + var mob = new UMPlacedTile("mob_stock", 0, 1, 1); + var structure = new USPlacedTile("structure_stock", 0, 2, 1); + var ground = new UGPlacedTile("ground_stock", 3, 4); + + UndergroundContext uc = new UndergroundContext(); + + uc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + uc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + uc.AddGroundAtPosition(ground.stock_id, ground.YPos, ground.XPos); + uc.SaveChanges(); + + Assert.AreEqual(mob.stock_id, uc.GetMobLayerStock(mob.YPos, mob.XPos), "Didn't add the mob correctly"); + Assert.AreEqual(structure.stock_id, uc.GetStructureLayerStock(structure.YPos, structure.XPos), "Didn't add the structure correctly"); + Assert.AreEqual(ground.stock_id, uc.GetGroundLayerStock(ground.YPos, ground.XPos), "Didn't add the ground correctly"); + } + + [Test] + public static void ConsideredAliveAfterSmallDamage() { + var mob = new UMPlacedTile("mob_stock", 10, 1, 1); + var structure = new USPlacedTile("structure_stock", 4, 2, 1); + + UndergroundContext uc = new UndergroundContext(); + + uc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + uc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + uc.SaveChanges(); + + Assert.IsTrue(uc.TakeDamageMobAtPosition(mob.YPos, mob.XPos, 3), "Mob is considered dead (health <= 0), but it shouldnt be"); + Assert.IsTrue(uc.TakeDamageStructureAtPosition(structure.YPos, structure.XPos, 2), "Structure is considered dead (health <= 0), but it shouldn't be"); + } + + [Test] + public static void ConsideredDeadAfterBigDamage() { + var mob = new UMPlacedTile("mob_stock", 10, 1, 1); + var structure = new USPlacedTile("structure_stock", 4, 2, 1); + + UndergroundContext uc = new UndergroundContext(); + + uc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + uc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + uc.SaveChanges(); + + Assert.IsFalse(uc.TakeDamageMobAtPosition(mob.YPos, mob.XPos, 20), "Mob is considered alive (health > 0), but it shouldnt be"); + Assert.IsFalse(uc.TakeDamageStructureAtPosition(structure.YPos, structure.XPos, 20), "Structure is considered alive (health > 0), but it shouldn't be"); + } + + [Test] + public static void DamagesCorrectly() { + var mob = new UMPlacedTile("mob_stock", 10, 1, 1); + var structure = new USPlacedTile("structure_stock", 4, 2, 1); + + UndergroundContext uc = new UndergroundContext(); + + uc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + uc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + uc.SaveChanges(); + + uc.TakeDamageMobAtPosition(mob.YPos, mob.XPos, 3); + uc.TakeDamageStructureAtPosition(structure.YPos, structure.XPos, 1); + + Assert.AreEqual(7, uc.UMobLayer.First(x => x.YPos == mob.YPos && x.XPos == mob.XPos).Health, "Mobs recieve incorrect amount of damage"); + Assert.AreEqual(3, uc.UStructureLayer.First(x => x.YPos == structure.YPos && x.XPos == structure.XPos).Health, "Structures recieve incorrect amount of damage"); + } + + [Test] + public static void GetsCorrectStocks() { + var mob = new UMPlacedTile("mob_stock", 0, 1, 1); + var structure = new USPlacedTile("structure_stock", 0, 2, 1); + var ground = new UGPlacedTile("ground_stock", 3, 4); + + UndergroundContext uc = new UndergroundContext(); + + uc.UMobLayer.Add(mob); + uc.UStructureLayer.Add(structure); + uc.UGroundLayer.Add(ground); + uc.SaveChanges(); + + Assert.AreEqual(mob.stock_id, uc.GetMobLayerStock(mob.YPos, mob.XPos), "Doesn't get the correct mob layer stock"); + Assert.AreEqual(structure.stock_id, uc.GetStructureLayerStock(structure.YPos, structure.XPos), "Doesn't get the correct structure layer stock"); + Assert.AreEqual(ground.stock_id, uc.GetGroundLayerStock(ground.YPos, ground.XPos), "Doesn't get the correct ground layer stock"); + } + + [Test] + public static void RemovesCorrectValues() { + var mob = new UMPlacedTile("mob_stock", 0, 1, 1); + var structure = new USPlacedTile("structure_stock", 0, 2, 1); + var ground = new UGPlacedTile("ground_stock", 3, 4); + + UndergroundContext uc = new UndergroundContext(); + + uc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + uc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + uc.AddGroundAtPosition(ground.stock_id, ground.YPos, ground.XPos); + uc.SaveChanges(); + + uc.RemoveMobFromPosition(mob.YPos, mob.XPos); + uc.RemoveStructureFromPosition(structure.YPos, structure.XPos); + uc.RemoveGroundFromPosition(ground.YPos, ground.XPos); + uc.SaveChanges(); + + Assert.AreEqual(null, uc.GetMobLayerStock(mob.YPos, mob.XPos), "Didn't remove the mob correctly"); + Assert.AreEqual(null, uc.GetStructureLayerStock(structure.YPos, structure.XPos), "Didn't remove the structure correctly"); + Assert.AreEqual(null, uc.GetGroundLayerStock(ground.YPos, ground.XPos), "Didn't remove the ground correctly"); + } + + + [Test] + public static void SetsCorrectValues() { + var mob = new UMPlacedTile("mob_stock", 0, 1, 1); + var newMob = new UMPlacedTile("new_mob_stock", 1, 1, 1); + var structure = new USPlacedTile("structure_stock", 0, 2, 1); + var newStructure = new USPlacedTile("new_structure_stock", 1, 2, 1); + var ground = new UGPlacedTile("ground_stock", 3, 4); + var newGround = new UGPlacedTile("new_ground_stock", 3, 4); + + UndergroundContext uc = new UndergroundContext(); + + uc.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos); + uc.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos); + uc.AddGroundAtPosition(ground.stock_id, ground.YPos, ground.XPos); + uc.SaveChanges(); + + uc.SetMobAtPosition(newMob.stock_id, newMob.Health, newMob.YPos, newMob.XPos); + uc.SetStructureAtPosition(newStructure.stock_id, newStructure.Health, newStructure.YPos, newStructure.XPos); + uc.SetGroundAtPosition(newGround.stock_id, newGround.YPos, newGround.XPos); + uc.SaveChanges(); + + Assert.AreEqual(newMob.stock_id, uc.GetMobLayerStock(mob.YPos, mob.XPos), "Didn't set the mob correctly"); + Assert.AreEqual(newStructure.stock_id, uc.GetStructureLayerStock(structure.YPos, structure.XPos), "Didn't set the structure correctly"); + Assert.AreEqual(newGround.stock_id, uc.GetGroundLayerStock(ground.YPos, ground.XPos), "Didn't set the ground correctly"); + } + + [Test] + public static void TruncatesTablesOnInitialization() { + UndergroundContext uc = new UndergroundContext(); + + Assert.AreEqual(0, uc.UMobLayer.Count(), "UMobLayer table isn't properly truncated upon UndergroundContext initialization"); + Assert.AreEqual(0, uc.UStructureLayer.Count(), "UStructureLayer table isn't properly truncated upon UndergroundContext initialization"); + Assert.AreEqual(0, uc.UGroundLayer.Count(), "LGroungLayer table isn't properly truncated upon UndergroundContext initialization"); + } + } +} diff --git a/MundusTests/MundusTests.csproj b/MundusTests/MundusTests.csproj new file mode 100644 index 0000000..75aab6b --- /dev/null +++ b/MundusTests/MundusTests.csproj @@ -0,0 +1,198 @@ +<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{F2107038-D6F0-4E37-85E2-287A8C1B3006}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <RootNamespace>MundusTests</RootNamespace>
+ <AssemblyName>MundusTests</AssemblyName>
+ <TargetFrameworkVersion>v4.7</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug</OutputPath>
+ <DefineConstants>DEBUG;</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="nunit.framework">
+ <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Bcl.HashCode">
+ <HintPath>..\packages\Microsoft.Bcl.HashCode.1.1.0\lib\net461\Microsoft.Bcl.HashCode.dll</HintPath>
+ </Reference>
+ <Reference Include="mscorlib" />
+ <Reference Include="Microsoft.EntityFrameworkCore.Abstractions">
+ <HintPath>..\packages\Microsoft.EntityFrameworkCore.Abstractions.3.1.4\lib\netstandard2.0\Microsoft.EntityFrameworkCore.Abstractions.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions">
+ <HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.3.1.4\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Extensions.Logging.Abstractions">
+ <HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.3.1.4\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Buffers">
+ <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ComponentModel.Annotations">
+ <HintPath>..\packages\System.ComponentModel.Annotations.4.7.0\lib\net461\System.ComponentModel.Annotations.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ComponentModel.DataAnnotations" />
+ <Reference Include="System.Numerics.Vectors">
+ <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Numerics" />
+ <Reference Include="System.Runtime.CompilerServices.Unsafe">
+ <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Memory">
+ <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Extensions.Primitives">
+ <HintPath>..\packages\Microsoft.Extensions.Primitives.3.1.4\lib\netstandard2.0\Microsoft.Extensions.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Extensions.Caching.Abstractions">
+ <HintPath>..\packages\Microsoft.Extensions.Caching.Abstractions.3.1.4\lib\netstandard2.0\Microsoft.Extensions.Caching.Abstractions.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Extensions.Configuration.Abstractions">
+ <HintPath>..\packages\Microsoft.Extensions.Configuration.Abstractions.3.1.4\lib\netstandard2.0\Microsoft.Extensions.Configuration.Abstractions.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Extensions.Configuration">
+ <HintPath>..\packages\Microsoft.Extensions.Configuration.3.1.4\lib\netstandard2.0\Microsoft.Extensions.Configuration.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Extensions.Configuration.Binder">
+ <HintPath>..\packages\Microsoft.Extensions.Configuration.Binder.3.1.4\lib\netstandard2.0\Microsoft.Extensions.Configuration.Binder.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Extensions.Options">
+ <HintPath>..\packages\Microsoft.Extensions.Options.3.1.4\lib\netstandard2.0\Microsoft.Extensions.Options.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Extensions.Caching.Memory">
+ <HintPath>..\packages\Microsoft.Extensions.Caching.Memory.3.1.4\lib\netstandard2.0\Microsoft.Extensions.Caching.Memory.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Collections.Immutable">
+ <HintPath>..\packages\System.Collections.Immutable.1.7.1\lib\net461\System.Collections.Immutable.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Core" />
+ <Reference Include="System.Diagnostics.DiagnosticSource">
+ <HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.7.1\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading.Tasks.Extensions">
+ <HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Bcl.AsyncInterfaces">
+ <HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.1.1.1\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Extensions.DependencyInjection">
+ <HintPath>..\packages\Microsoft.Extensions.DependencyInjection.3.1.4\lib\net461\Microsoft.Extensions.DependencyInjection.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Extensions.Logging">
+ <HintPath>..\packages\Microsoft.Extensions.Logging.3.1.4\lib\netstandard2.0\Microsoft.Extensions.Logging.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.EntityFrameworkCore">
+ <HintPath>..\packages\Microsoft.EntityFrameworkCore.3.1.4\lib\netstandard2.0\Microsoft.EntityFrameworkCore.dll</HintPath>
+ </Reference>
+ <Reference Include="CairoSharp">
+ <HintPath>..\packages\CairoSharp.3.22.25.74\lib\netstandard2.0\CairoSharp.dll</HintPath>
+ </Reference>
+ <Reference Include="GLibSharp">
+ <HintPath>..\packages\GLibSharp.3.22.25.74\lib\netstandard2.0\GLibSharp.dll</HintPath>
+ </Reference>
+ <Reference Include="AtkSharp">
+ <HintPath>..\packages\AtkSharp.3.22.25.74\lib\netstandard2.0\AtkSharp.dll</HintPath>
+ </Reference>
+ <Reference Include="GioSharp">
+ <HintPath>..\packages\GioSharp.3.22.25.74\lib\netstandard2.0\GioSharp.dll</HintPath>
+ </Reference>
+ <Reference Include="PangoSharp">
+ <HintPath>..\packages\PangoSharp.3.22.25.74\lib\netstandard2.0\PangoSharp.dll</HintPath>
+ </Reference>
+ <Reference Include="GdkSharp">
+ <HintPath>..\packages\GdkSharp.3.22.25.74\lib\netstandard2.0\GdkSharp.dll</HintPath>
+ </Reference>
+ <Reference Include="GtkSharp">
+ <HintPath>..\packages\GtkSharp.3.22.25.74\lib\netstandard2.0\GtkSharp.dll</HintPath>
+ </Reference>
+ <Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <Reference Include="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <Reference Include="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <Reference Include="Microsoft.EntityFrameworkCore.Relational">
+ <HintPath>..\packages\Microsoft.EntityFrameworkCore.Relational.3.1.4\lib\netstandard2.0\Microsoft.EntityFrameworkCore.Relational.dll</HintPath>
+ </Reference>
+ <Reference Include="BouncyCastle.Crypto">
+ <HintPath>..\packages\BouncyCastle.1.8.3.1\lib\BouncyCastle.Crypto.dll</HintPath>
+ </Reference>
+ <Reference Include="Google.Protobuf">
+ <HintPath>..\packages\Google.Protobuf.3.6.1\lib\net45\Google.Protobuf.dll</HintPath>
+ </Reference>
+ <Reference Include="Renci.SshNet">
+ <HintPath>..\packages\SSH.NET.2016.1.0\lib\net40\Renci.SshNet.dll</HintPath>
+ </Reference>
+ <Reference Include="K4os.Compression.LZ4">
+ <HintPath>..\packages\K4os.Compression.LZ4.1.1.11\lib\net46\K4os.Compression.LZ4.dll</HintPath>
+ </Reference>
+ <Reference Include="K4os.Hash.xxHash">
+ <HintPath>..\packages\K4os.Hash.xxHash.1.0.6\lib\net46\K4os.Hash.xxHash.dll</HintPath>
+ </Reference>
+ <Reference Include="K4os.Compression.LZ4.Streams">
+ <HintPath>..\packages\K4os.Compression.LZ4.Streams.1.1.11\lib\net46\K4os.Compression.LZ4.Streams.dll</HintPath>
+ </Reference>
+ <Reference Include="MySql.Data">
+ <HintPath>..\packages\MySql.Data.8.0.20\lib\net452\MySql.Data.dll</HintPath>
+ </Reference>
+ <Reference Include="Ubiety.Dns.Core">
+ <HintPath>..\packages\MySql.Data.8.0.20\lib\net452\Ubiety.Dns.Core.dll</HintPath>
+ </Reference>
+ <Reference Include="Zstandard.Net">
+ <HintPath>..\packages\MySql.Data.8.0.20\lib\net452\Zstandard.Net.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.ComponentModel" />
+ <Reference Include="System.Configuration" />
+ <Reference Include="System.Configuration.Install" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="System.Drawing.Design" />
+ <Reference Include="System.Management" />
+ <Reference Include="System.Transactions" />
+ <Reference Include="System.Xml" />
+ <Reference Include="MySql.Data.EntityFrameworkCore">
+ <HintPath>..\packages\MySql.Data.EntityFrameworkCore.8.0.20\lib\netstandard2.0\MySql.Data.EntityFrameworkCore.dll</HintPath>
+ </Reference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="DataTests\GameEventLogs\GameEventLogContextTests.cs" />
+ <Compile Include="DataTests\GameEventLogs\GameEventLogTests.cs" />
+ <Compile Include="DataTests\Crafting\CraftingTableContextTests.cs" />
+ <Compile Include="DataTests\SuperLayers\LandContextTests.cs" />
+ <Compile Include="DataTests\SuperLayers\SkyContextTests.cs" />
+ <Compile Include="DataTests\SuperLayers\UndergroundContextTests.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="packages.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="DataTests\" />
+ <Folder Include="DataTests\GameEventLogs\" />
+ <Folder Include="DataTests\Crafting\" />
+ <Folder Include="DataTests\SuperLayers\" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Mundus\Mundus.csproj">
+ <Project>{BED2FBB2-55AC-430D-8126-E75C726DF53D}</Project>
+ <Name>Mundus</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <Import Project="..\packages\GtkSharp.3.22.25.74\build\GtkSharp.targets" Condition="Exists('..\packages\GtkSharp.3.22.25.74\build\GtkSharp.targets')" />
+</Project>
\ No newline at end of file diff --git a/MundusTests/packages.config b/MundusTests/packages.config new file mode 100644 index 0000000..f3e0a41 --- /dev/null +++ b/MundusTests/packages.config @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8"?> +<packages> + <package id="AtkSharp" version="3.22.25.74" targetFramework="net47" /> + <package id="BouncyCastle" version="1.8.3.1" targetFramework="net47" /> + <package id="CairoSharp" version="3.22.25.74" targetFramework="net47" /> + <package id="GdkSharp" version="3.22.25.74" targetFramework="net47" /> + <package id="GioSharp" version="3.22.25.74" targetFramework="net47" /> + <package id="GLibSharp" version="3.22.25.74" targetFramework="net47" /> + <package id="Google.Protobuf" version="3.6.1" targetFramework="net47" /> + <package id="GtkSharp" version="3.22.25.74" targetFramework="net47" /> + <package id="K4os.Compression.LZ4" version="1.1.11" targetFramework="net47" /> + <package id="K4os.Compression.LZ4.Streams" version="1.1.11" targetFramework="net47" /> + <package id="K4os.Hash.xxHash" version="1.0.6" targetFramework="net47" /> + <package id="Microsoft.Bcl.AsyncInterfaces" version="1.1.1" targetFramework="net47" /> + <package id="Microsoft.Bcl.HashCode" version="1.1.0" targetFramework="net47" /> + <package id="Microsoft.EntityFrameworkCore" version="3.1.4" targetFramework="net47" /> + <package id="Microsoft.EntityFrameworkCore.Abstractions" version="3.1.4" targetFramework="net47" /> + <package id="Microsoft.EntityFrameworkCore.Analyzers" version="3.1.4" targetFramework="net47" /> + <package id="Microsoft.EntityFrameworkCore.Relational" version="3.1.4" targetFramework="net47" /> + <package id="Microsoft.Extensions.Caching.Abstractions" version="3.1.4" targetFramework="net47" /> + <package id="Microsoft.Extensions.Caching.Memory" version="3.1.4" targetFramework="net47" /> + <package id="Microsoft.Extensions.Configuration" version="3.1.4" targetFramework="net47" /> + <package id="Microsoft.Extensions.Configuration.Abstractions" version="3.1.4" targetFramework="net47" /> + <package id="Microsoft.Extensions.Configuration.Binder" version="3.1.4" targetFramework="net47" /> + <package id="Microsoft.Extensions.DependencyInjection" version="3.1.4" targetFramework="net47" /> + <package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="3.1.4" targetFramework="net47" /> + <package id="Microsoft.Extensions.Logging" version="3.1.4" targetFramework="net47" /> + <package id="Microsoft.Extensions.Logging.Abstractions" version="3.1.4" targetFramework="net47" /> + <package id="Microsoft.Extensions.Options" version="3.1.4" targetFramework="net47" /> + <package id="Microsoft.Extensions.Primitives" version="3.1.4" targetFramework="net47" /> + <package id="MySql.Data" version="8.0.20" targetFramework="net47" /> + <package id="MySql.Data.EntityFrameworkCore" version="8.0.20" targetFramework="net47" /> + <package id="NUnit" version="2.6.4" targetFramework="net47" /> + <package id="PangoSharp" version="3.22.25.74" targetFramework="net47" /> + <package id="SSH.NET" version="2016.1.0" targetFramework="net47" /> + <package id="System.Buffers" version="4.5.1" targetFramework="net47" /> + <package id="System.Collections.Immutable" version="1.7.1" targetFramework="net47" /> + <package id="System.ComponentModel.Annotations" version="4.7.0" targetFramework="net47" /> + <package id="System.Diagnostics.DiagnosticSource" version="4.7.1" targetFramework="net47" /> + <package id="System.Memory" version="4.5.4" targetFramework="net47" /> + <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net47" /> + <package id="System.Runtime.CompilerServices.Unsafe" version="4.7.1" targetFramework="net47" /> + <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net47" /> +</packages>
\ No newline at end of file |
