aboutsummaryrefslogtreecommitdiff
path: root/MundusTests/DataTests/SuperLayers/UndergroundContextTests.cs
blob: ad3c0c6b14c8967120d9ef8c1f3fae0565a6c0f6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
namespace MundusTests.DataTests.SuperLayers 
{
    using System.Linq;
    using Mundus.Data;
    using Mundus.Data.SuperLayers.DBTables;
    using NUnit.Framework;

    [TestFixture]
    public static class UndergroundContextTests 
    {
        [Test]
        public static void AddsCorrectValues() 
        {
            var mob = new UMPlacedTile("mob_stock", 0, 1000, 1000);
            var structure = new USPlacedTile("structure_stock", 0, 2000, 1000);
            var ground = new UGPlacedTile("ground_stock", 3000, 4000);             

            DataBaseContexts.UContext.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos);
            DataBaseContexts.UContext.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos);
            DataBaseContexts.UContext.AddGroundAtPosition(ground.stock_id, ground.YPos, ground.XPos);
            DataBaseContexts.UContext.SaveChanges();

            Assert.AreEqual(mob.stock_id, DataBaseContexts.UContext.GetMobLayerStock(mob.YPos, mob.XPos), "Didn't add the mob correctly");
            Assert.AreEqual(structure.stock_id, DataBaseContexts.UContext.GetStructureLayerStock(structure.YPos, structure.XPos), "Didn't add the structure correctly");
            Assert.AreEqual(ground.stock_id, DataBaseContexts.UContext.GetGroundLayerStock(ground.YPos, ground.XPos), "Didn't add the ground correctly");
        }

        [Test]
        public static void ConsideredAliveAfterSmallDamage() 
        {
            var mob = new UMPlacedTile("mob_stock", 10, 1000, 1001);
            var structure = new USPlacedTile("structure_stock", 4, 2000, 1001);

            DataBaseContexts.UContext.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos);
            DataBaseContexts.UContext.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos);
            DataBaseContexts.UContext.SaveChanges();

            Assert.IsTrue(DataBaseContexts.UContext.TakeDamageMobAtPosition(mob.YPos, mob.XPos, 3), "Mob is considered dead (health <= 0), but it shouldnt be");
            Assert.IsTrue(DataBaseContexts.UContext.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, 1000, 1000);
            var structure = new USPlacedTile("structure_stock", 4, 2000, 1000);

            DataBaseContexts.UContext.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos);
            DataBaseContexts.UContext.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos);
            DataBaseContexts.UContext.SaveChanges();

            Assert.IsFalse(DataBaseContexts.UContext.TakeDamageMobAtPosition(mob.YPos, mob.XPos, 20), "Mob is considered alive (health > 0), but it shouldnt be");
            Assert.IsFalse(DataBaseContexts.UContext.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, 1000, 1002);
            var structure = new USPlacedTile("structure_stock", 4, 2000, 1002);

            DataBaseContexts.UContext.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos);
            DataBaseContexts.UContext.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos);
            DataBaseContexts.UContext.SaveChanges();

            DataBaseContexts.UContext.TakeDamageMobAtPosition(mob.YPos, mob.XPos, 3);
            DataBaseContexts.UContext.TakeDamageStructureAtPosition(structure.YPos, structure.XPos, 1);

            Assert.AreEqual(7, DataBaseContexts.UContext.UMobLayer.First(x => x.YPos == mob.YPos && x.XPos == mob.XPos).Health, "Mobs recieve incorrect amount of damage");
            Assert.AreEqual(3, DataBaseContexts.UContext.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, 1000, 1000);
            var structure = new USPlacedTile("structure_stock", 0, 2000, 1000);
            var ground = new UGPlacedTile("ground_stock", 3000, 4000);

            DataBaseContexts.UContext.UMobLayer.Add(mob);
            DataBaseContexts.UContext.UStructureLayer.Add(structure);
            DataBaseContexts.UContext.UGroundLayer.Add(ground);
            DataBaseContexts.UContext.SaveChanges();

            Assert.AreEqual(mob.stock_id, DataBaseContexts.UContext.GetMobLayerStock(mob.YPos, mob.XPos), "Doesn't get the correct mob layer stock");
            Assert.AreEqual(structure.stock_id, DataBaseContexts.UContext.GetStructureLayerStock(structure.YPos, structure.XPos), "Doesn't get the correct structure layer stock");
            Assert.AreEqual(ground.stock_id, DataBaseContexts.UContext.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, 1000, 1000);
            var structure = new USPlacedTile("structure_stock", 0, 2000, 1000);
            var ground = new UGPlacedTile("ground_stock", 3000, 4000);

            DataBaseContexts.UContext.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos);
            DataBaseContexts.UContext.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos);
            DataBaseContexts.UContext.AddGroundAtPosition(ground.stock_id, ground.YPos, ground.XPos);
            DataBaseContexts.UContext.SaveChanges();

            DataBaseContexts.UContext.RemoveMobFromPosition(mob.YPos, mob.XPos);
            DataBaseContexts.UContext.RemoveStructureFromPosition(structure.YPos, structure.XPos);
            DataBaseContexts.UContext.RemoveGroundFromPosition(ground.YPos, ground.XPos);
            DataBaseContexts.UContext.SaveChanges();

            Assert.AreEqual(null, DataBaseContexts.UContext.GetMobLayerStock(mob.YPos, mob.XPos), "Didn't remove the mob correctly");
            Assert.AreEqual(null, DataBaseContexts.UContext.GetStructureLayerStock(structure.YPos, structure.XPos), "Didn't remove the structure correctly");
            Assert.AreEqual(null, DataBaseContexts.UContext.GetGroundLayerStock(ground.YPos, ground.XPos), "Didn't remove the ground correctly");
        }

        [Test]
        public static void SetsCorrectValues() 
        {
            var mob = new UMPlacedTile("mob_stock", 0, 1000, 1000);
            var newMob = new UMPlacedTile("new_mob_stock", 1, 1000, 1000);
            var structure = new USPlacedTile("structure_stock", 0, 2000, 1000);
            var newStructure = new USPlacedTile("new_structure_stock", 1, 2000, 1000);
            var ground = new UGPlacedTile("ground_stock", 3000, 4000);
            var newGround = new UGPlacedTile("new_ground_stock", 3000, 4000);

            DataBaseContexts.UContext.AddMobAtPosition(mob.stock_id, mob.Health, mob.YPos, mob.XPos);
            DataBaseContexts.UContext.AddStructureAtPosition(structure.stock_id, structure.Health, structure.YPos, structure.XPos);
            DataBaseContexts.UContext.AddGroundAtPosition(ground.stock_id, ground.YPos, ground.XPos);
            DataBaseContexts.UContext.SaveChanges();

            DataBaseContexts.UContext.SetMobAtPosition(newMob.stock_id, newMob.Health, newMob.YPos, newMob.XPos);
            DataBaseContexts.UContext.SetStructureAtPosition(newStructure.stock_id, newStructure.Health, newStructure.YPos, newStructure.XPos);
            DataBaseContexts.UContext.SetGroundAtPosition(newGround.stock_id, newGround.YPos, newGround.XPos);
            DataBaseContexts.UContext.SaveChanges();

            Assert.AreEqual(newMob.stock_id, DataBaseContexts.UContext.GetMobLayerStock(mob.YPos, mob.XPos), "Didn't set the mob correctly");
            Assert.AreEqual(newStructure.stock_id, DataBaseContexts.UContext.GetStructureLayerStock(structure.YPos, structure.XPos), "Didn't set the structure correctly");
            Assert.AreEqual(newGround.stock_id, DataBaseContexts.UContext.GetGroundLayerStock(ground.YPos, ground.XPos), "Didn't set the ground correctly");
        }
    }
}