OSDN Git Service

ReSharperの指摘に従って直す
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer.Test / SnifferTest.cs
index dd767cb..8701f75 100644 (file)
@@ -91,7 +91,6 @@ namespace KancolleSniffer.Test
             var sniffer = new Sniffer();\r
             SniffLogFile(sniffer, "battle_002");\r
             AssertEqualBattleResult(sniffer, new[] {28, 1, 13});\r
-            PAssert.That(() => sniffer.BadlyDamagedShips.Any());\r
         }\r
 \r
         private void AssertEqualBattleResult(Sniffer sniffer, IEnumerable<int> expected, string msg = null)\r
@@ -109,11 +108,9 @@ namespace KancolleSniffer.Test
             var sniffer = new Sniffer();\r
             SniffLogFile(sniffer, "combined_surface_001");\r
             AssertEauqlCombinedResult(sniffer, new[] {40, 77, 77, 33, 51, 47}, new[] {39, 35, 11, 39, 37, 40});\r
-            PAssert.That(() => !sniffer.BadlyDamagedShips.Any());\r
 \r
             SniffLogFile(sniffer, "combined_surface_002");\r
             AssertEauqlCombinedResult(sniffer, new[] {40, 77, 77, 33, 15, 6}, new[] {39, 35, 4, 3, 14, 40});\r
-            PAssert.That(() => sniffer.BadlyDamagedShips.Any());\r
         }\r
 \r
         private void AssertEauqlCombinedResult(Sniffer sniffer, IEnumerable<int> expected0, IEnumerable<int> expected1,\r
@@ -241,6 +238,17 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 敵連合艦隊への航空支援攻撃を反映させる\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void SupportAirAttackResultRank()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "support_002");\r
+            PAssert.That(() => sniffer.Battle.ResultRank == BattleResultRank.P);\r
+        }\r
+\r
+        /// <summary>\r
         /// ダメコンの使用を戦闘結果に反映させる\r
         /// </summary>\r
         [TestMethod]\r
@@ -297,6 +305,18 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 轟沈した艦娘に大破警告を出さない\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void NotWarnToSunkShip()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "sunk_001");\r
+            AssertEqualBattleResult(sniffer, new[]{26, 0, 1, 3});\r
+            PAssert.That(() => sniffer.BadlyDamagedShips.SequenceEqual(new[] {"菊月", "雪風"}));\r
+        }\r
+\r
+        /// <summary>\r
         /// 連合艦隊(水上打撃部隊)で二回目の砲撃戦がない場合を正しく処理する\r
         /// </summary>\r
         [TestMethod]\r
@@ -392,9 +412,56 @@ namespace KancolleSniffer.Test
         [TestMethod]\r
         public void ZeroValueEmptySlot()\r
         {\r
-            var sniffer = new Sniffer();\r
+            var sniffer = new Sniffer {UseOldEnemyId = true};\r
             SniffLogFile(sniffer, "battle_006");\r
-            PAssert.That(() => sniffer.Battle.EnemyFighterPower == "0");\r
+            PAssert.That(() => sniffer.Battle.EnemyFighterPower.AirCombat == 0);\r
+        }\r
+\r
+        /// <summary>\r
+        /// B勝利を正しく判定する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void JudgeResultRankB()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "battle_008");\r
+            PAssert.That(() => sniffer.Battle.ResultRank == BattleResultRank.B);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 最終セルで大破警告を出さない\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void NotWarnDamagedShipInLastCell()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "taiha_001");\r
+            PAssert.That(() => sniffer.GetShipStatuses(0)[2].NowHp == 2);\r
+            PAssert.That(() => !sniffer.BadlyDamagedShips.Any());\r
+        }\r
+\r
+        /// <summary>\r
+        /// 道中で大破警告を出す\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void WarnDamagedShip()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "taiha_002");\r
+            PAssert.That(() => sniffer.GetShipStatuses(0)[2].NowHp == 1);\r
+            PAssert.That(() => sniffer.BadlyDamagedShips.Any());\r
+        }\r
+\r
+        /// <summary>\r
+        /// 連合艦隊の第二艦隊の旗艦の大破警告を出さない\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void NotWarnDamagedFlagshipInGuardFleet()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "taiha_003");\r
+            PAssert.That(() => sniffer.GetShipStatuses(1)[0].NowHp == 12);\r
+            PAssert.That(() => !sniffer.BadlyDamagedShips.Any());\r
         }\r
 \r
         /// <summary>\r
@@ -418,7 +485,7 @@ namespace KancolleSniffer.Test
         {\r
             var sniffer = new Sniffer();\r
             SniffLogFile(sniffer, "fighterpower_003");\r
-            PAssert.That(() => sniffer.GetFighterPower(0).SequenceEqual(new [] {135, 135}));\r
+            PAssert.That(() => sniffer.GetFighterPower(0).SequenceEqual(new[] {135, 135}));\r
         }\r
 \r
         /// <summary>\r
@@ -431,7 +498,7 @@ namespace KancolleSniffer.Test
             SniffLogFile(sniffer, "baseaircorps_001");\r
             PAssert.That(() => sniffer.BaseAirCorps[0].AirCorps[0].FighterPower[1] == 301);\r
             sniffer.BaseAirCorps[0].AirCorps[0].Action = 2; // 防空\r
-            PAssert.That(()=>sniffer.BaseAirCorps[0].AirCorps[0].FighterPower[1] == 320);\r
+            PAssert.That(() => sniffer.BaseAirCorps[0].AirCorps[0].FighterPower[1] == 320);\r
         }\r
 \r
         /// <summary>\r
@@ -446,6 +513,32 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 陸上攻撃機の熟練度を制空値に反映させる\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void FighterPowerOfLandBasedAttackAircraft()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "baseaircorps_003");\r
+            PAssert.That(() => sniffer.BaseAirCorps[1].AirCorps[0].FighterPower[0] == 121);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 敵艦隊の制空値を計算する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void EnemyFighterPower()\r
+        {\r
+            var sniffer1 = new Sniffer{UseOldEnemyId = true};\r
+            SniffLogFile(sniffer1, "airbattle_002");\r
+            PAssert.That(() => sniffer1.Battle.EnemyFighterPower.AirCombat == 28);\r
+\r
+            var sniffer2 = new Sniffer {UseOldEnemyId = true};\r
+            SniffLogFile(sniffer2, "both_combined_001");\r
+            PAssert.That(() => sniffer2.Battle.EnemyFighterPower.AirCombat == 389);\r
+        }\r
+\r
+        /// <summary>\r
         /// マップ索敵の判定式(33)を正しく計算する\r
         /// </summary>\r
         [TestMethod]\r
@@ -453,9 +546,11 @@ namespace KancolleSniffer.Test
         {\r
             var sniffer = new Sniffer();\r
             SniffLogFile(sniffer, "lineofsight_001");\r
-            PAssert.That(() => Math.Abs(sniffer.GetFleetLineOfSights(0) - 39.45) < 0.01);\r
+            PAssert.That(() => Math.Abs(sniffer.GetFleetLineOfSights(0, 1) - 39.45) < 0.01);\r
+            PAssert.That(() => Math.Abs(sniffer.GetFleetLineOfSights(0, 3) - 115.19) < 0.01);\r
+            PAssert.That(() => Math.Abs(sniffer.GetFleetLineOfSights(0, 4) - 153.06) < 0.01);\r
             SniffLogFile(sniffer, "lineofsight_002");\r
-            PAssert.That(() => Math.Abs(sniffer.GetFleetLineOfSights(0) - -25.10) < 0.01, "艦隊に空きがある");\r
+            PAssert.That(() => Math.Abs(sniffer.GetFleetLineOfSights(0, 1) - -25.10) < 0.01, "艦隊に空きがある");\r
         }\r
 \r
         /// <summary>\r
@@ -544,6 +639,72 @@ namespace KancolleSniffer.Test
             var sniffer2 = new Sniffer();\r
             SniffLogFile(sniffer2, "both_combined_001");\r
             PAssert.That(() => sniffer2.Battle.ResultRank == BattleResultRank.S);\r
+\r
+            // 護衛艦隊に雷撃を受ける場合\r
+            var sniffer3 = new Sniffer();\r
+            SniffLogFile(sniffer3, "both_combined_002");\r
+            PAssert.That(() => sniffer2.Battle.ResultRank == BattleResultRank.S);\r
+            PAssert.That(\r
+                () => sniffer3.GetShipStatuses(0).Select(s => s.NowHp).SequenceEqual(new[] {89, 86, 87, 78, 87, 57}));\r
+            PAssert.That(\r
+                () => sniffer3.GetShipStatuses(1).Select(s => s.NowHp).SequenceEqual(new[] {46, 37, 14, 59, 49, 63}));\r
+        }\r
+\r
+        /// <summary>\r
+        /// 噴式強襲に対応する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void Injection()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "injection_001");\r
+            PAssert.That(() => sniffer.Battle.ResultRank == BattleResultRank.P);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 基地航空隊噴式強襲でapi_stage3_combinedがnullの場合に対応する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void AirbaseInjection()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "airbase_injection_001");\r
+            PAssert.That(() => sniffer.Battle.ResultRank == BattleResultRank.P);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 対空砲火のパラメータを計算する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void AntiAirFire()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "antiairfire_001");\r
+            var ships = sniffer.GetShipStatuses(0);\r
+            PAssert.That(() => ships.Sum(ship => ship.EffectiveAntiAirForFleet) == 88);\r
+            PAssert.That(\r
+                () =>\r
+                    ships.Select(ship => ship.EffectiveAntiAirForShip)\r
+                        .SequenceEqual(new[] {92, 90, 88, 228, 146, 226}));\r
+        }\r
+\r
+        /// <summary>\r
+        /// 航空戦の結果を処理する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void AirBattleResult()\r
+        {\r
+            var sniffer1 = new Sniffer();\r
+            SniffLogFile(sniffer1, "battle_001");\r
+            PAssert.That(() => sniffer1.Battle.AirBattleResults.Count == 0);\r
+\r
+            var sniffer2 = new Sniffer();\r
+            SniffLogFile(sniffer2, "ec_battle_001");\r
+            PAssert.That(() => sniffer2.Battle.AirBattleResults.Count == 4);\r
+\r
+            var sniffer3 = new Sniffer();\r
+            SniffLogFile(sniffer3, "battle_007");\r
+            PAssert.That(() => sniffer3.Battle.AirBattleResults.Count == 1, "stage2がない場合");\r
         }\r
 \r
         /// <summary>\r
@@ -670,7 +831,18 @@ namespace KancolleSniffer.Test
         {\r
             var sniffer = new Sniffer();\r
             SniffLogFile(sniffer, "powerup_001");\r
-            PAssert.That(() => Math.Abs(sniffer.GetShipStatuses(0)[0].RealFirepower - 30) < 0.0001);\r
+            PAssert.That(() => Math.Abs(sniffer.GetShipStatuses(0)[0].EffectiveFirepower - 30) < 0.0001);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 近代化改修が二重に行われた場合に対応する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void DuplicatedPowerup()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "powerup_002");\r
+            PAssert.That(() => sniffer.Item.NowShips == 218);\r
         }\r
 \r
         /// <summary>\r