OSDN Git Service

連合艦隊時の僚艦夜戦突撃で第一旗艦に発動マークが付くのを直す
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer.Test / BattleTest.cs
index c1ef2c9..e4b4e0d 100644 (file)
@@ -14,8 +14,8 @@
 \r
 using System.Collections.Generic;\r
 using System.Linq;\r
-using KancolleSniffer.Model;\r
 using ExpressionToCodeLib;\r
+using KancolleSniffer.Model;\r
 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
 \r
 namespace KancolleSniffer.Test\r
@@ -266,6 +266,10 @@ namespace KancolleSniffer.Test
             var night = new Sniffer();\r
             SniffLogFile(night, "nelsontouch_003");\r
             PAssert.That(() => night.Battle.Result.Friend.Main[0].SpecialAttack == ShipStatus.Attack.Fire);\r
+            // 海戦をまたがってフラグを引き継ぐ\r
+            var fired = new Sniffer();\r
+            SniffLogFile(fired, "nelsontouch_004");\r
+            PAssert.That(() => fired.Fleets[0].Ships[0].SpecialAttack == ShipStatus.Attack.Fired);\r
         }\r
 \r
         /// <summary>\r
@@ -297,6 +301,19 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 連合艦隊時の僚艦夜戦突撃に対応する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void KongoSpecial()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "kongospecial_001");\r
+            PAssert.That(() => !sniffer.IsBattleResultError);\r
+            PAssert.That(() => sniffer.Battle.Result.Friend.Guard[0].SpecialAttack == ShipStatus.Attack.Fire);\r
+            PAssert.That(() => sniffer.Fleets[1].Ships[0].SpecialAttack == ShipStatus.Attack.Fired);\r
+        }\r
+\r
+        /// <summary>\r
         /// レーダー射撃戦に対応する\r
         /// </summary>\r
         [TestMethod]\r
@@ -306,5 +323,114 @@ namespace KancolleSniffer.Test
             SniffLogFile(sniffer, "ld_shooting_001");\r
             PAssert.That(() => !sniffer.IsBattleResultError);\r
         }\r
+\r
+        /// <summary>\r
+        /// 敵連合艦隊の護衛の装備を正しく読み取る\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void EnemyGuardSlot()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "enemy_combined_001");\r
+            PAssert.That(() => sniffer.Battle.Result.Enemy.Guard[0].Slot[0].Spec.Id == 506);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 敵艦隊の制空値を計算する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void EnemyFighterPower()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "enemy_combined_001");\r
+            var fp = sniffer.Battle.EnemyFighterPower;\r
+            PAssert.That(() => fp.AirCombat == 209 && fp.Interception == 212);\r
+        }\r
+\r
+        /// <summary>\r
+        /// ダメコン進撃する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void NotWarnDamagedShipWithDamageControl()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "damecon_advance_001");\r
+            PAssert.That(() => sniffer.BadlyDamagedShips.Length == 0);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 迎撃機ありの基地空襲戦\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void AirRaidBattleWithInterceptor()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "airraid_battle_001");\r
+            var battle = sniffer.Battle;\r
+            Assert.AreEqual(BattleState.AirRaid, battle.BattleState);\r
+            Assert.AreEqual(2, battle.AirControlLevel);\r
+            Assert.AreEqual(425, battle.FighterPower.Min);\r
+            Assert.AreEqual(231, battle.EnemyFighterPower.AirCombat);\r
+            Assert.AreEqual(BattleResultRank.S, battle.ResultRank);\r
+            var ships = battle.Result.Friend.Main;\r
+            Assert.IsTrue(new[] {200, 200, 200}.SequenceEqual(ships.Select(ship => ship.NowHp)));\r
+            Assert.IsTrue(new[] {"基地航空隊1", "基地航空隊2", "基地航空隊3"}.SequenceEqual(ships.Select(ship => ship.Name)));\r
+            Assert.IsTrue(\r
+                new[] {"烈風改(三五二空/熟練)", "雷電", "雷電", "烈風改"}.SequenceEqual(ships[2].Slot.Select(item => item.Spec.Name)));\r
+            Assert.IsTrue(new[]{18, 18, 18, 18}.SequenceEqual(ships[2].OnSlot));\r
+        }\r
+\r
+        /// <summary>\r
+        /// 迎撃機なしの基地航空戦\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void AirRaidBattleWithoutInterceptor()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "airraid_battle_002");\r
+            var battle = sniffer.Battle;\r
+            Assert.AreEqual(BattleState.AirRaid, battle.BattleState);\r
+            Assert.AreEqual(4, battle.AirControlLevel);\r
+            Assert.AreEqual(0, battle.FighterPower.Min);\r
+            Assert.AreEqual(231, battle.EnemyFighterPower.AirCombat);\r
+            Assert.AreEqual(BattleResultRank.B, battle.ResultRank);\r
+            var ships = battle.Result.Friend.Main;\r
+            Assert.IsTrue(new[] {82, 174, 147}.SequenceEqual(ships.Select(ship => ship.NowHp)));\r
+        }\r
+\r
+        /// <summary>\r
+        /// 基地航空戦直後のボス戦\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void AirRaidBattleBeforeBoss()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "airraid_battle_004");\r
+            var battle = sniffer.Battle;\r
+            Assert.AreEqual(BattleState.Result, battle.BattleState);\r
+            Assert.AreEqual(0, sniffer.BadlyDamagedShips.Length);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 緊急泊地修理\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void AnchorageRepair()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "anchorage_repair_001");\r
+            PAssert.That(() => !sniffer.IsBattleResultError);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 大破進撃しても平気なマスでの大破警告抑制\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void IgnoreDamagedShips()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "endpoint_001");\r
+            PAssert.That(() => sniffer.BadlyDamagedShips.Length == 0);\r
+        }\r
     }\r
 }
\ No newline at end of file