- /// 演習で受けたダメージが次の戦闘の結果に影響しない\r
- /// </summary>\r
- [TestMethod]\r
- public void DamageInPracticeNotSpillIntoSortie()\r
- {\r
- var expected = new[] {31, 15, 15};\r
- var sniffer = new Sniffer();\r
- SniffLogFile(sniffer, "battle_001");\r
- var result = sniffer.GetShipStatuses(0).Select(s => s.NowHp);\r
- PAssert.That(() => (expected.SequenceEqual(result)));\r
- }\r
-\r
- /// <summary>\r
- /// 演習では大破警告を出さない\r
- /// </summary>\r
- [TestMethod]\r
- public void IgnoreDamagedShipsInPractice()\r
- {\r
- var sniffer = new Sniffer();\r
- SniffLogFile(sniffer, "practice_001");\r
- PAssert.That(() => !sniffer.BadlyDamagedShips.Any());\r
- }\r
-\r
- /// <summary>\r
- /// 夜戦のダメージを戦闘結果に反映する\r
- /// </summary>\r
- [TestMethod]\r
- public void CaptureDamageInNightCombat()\r
- {\r
- 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
- {\r
- var result = sniffer.GetShipStatuses(0).Select(s => s.NowHp);\r
- PAssert.That(() => (expected.SequenceEqual(result)), msg);\r
- }\r
-\r
- /// <summary>\r
- /// 連合艦隊(水上打撃部隊)による戦闘のダメージを結果に反映する\r
- /// </summary>\r
- [TestMethod]\r
- public void CombinedFleetSurface()\r
- {\r
- 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
- string msg = null)\r
- {\r
- var result0 = sniffer.GetShipStatuses(0).Select(s => s.NowHp);\r
- var result1 = sniffer.GetShipStatuses(1).Select(s => s.NowHp);\r
- PAssert.That(() => (expected0.SequenceEqual(result0) && expected1.SequenceEqual(result1)), msg);\r
- }\r
-\r
- /// <summary>\r
- /// 開幕夜戦のダメージを戦闘結果に反映する\r
- /// </summary>\r
- [TestMethod]\r
- public void SpMidnight()\r
- {\r
- var sniffer = new Sniffer();\r
- SniffLogFile(sniffer, "sp_midnight_001");\r
- AssertEqualBattleResult(sniffer, new[] {1});\r
- PAssert.That(() => sniffer.BadlyDamagedShips.Any());\r
- }\r
-\r
- /// <summary>\r
- /// 連合艦隊(空母機動部隊)による戦闘のダメージを結果に反映する\r
- /// </summary>\r
- [TestMethod]\r
- public void CombinedFleetAir()\r
- {\r
- var sniffer = new Sniffer();\r
- SniffLogFile(sniffer, "combined_air_001");\r
- AssertEauqlCombinedResult(sniffer, new[] {40, 98, 90, 66, 78, 86}, new[] {47, 41, 5, 42, 43, 29});\r
- PAssert.That(() => sniffer.BadlyDamagedShips.Any());\r
-\r
- SniffLogFile(sniffer, "combined_air_002");\r
- AssertEauqlCombinedResult(sniffer, new[] {13, 87, 90, 59, 69, 86}, new[] {47, 41, 5, 20, 43, 29});\r
- }\r
-\r
- /// <summary>\r
- /// 護衛退避を正しく処理する\r
- /// </summary>\r
- [TestMethod]\r
- public void EscapeShip()\r
- {\r
- var sniffer = new Sniffer();\r
- SniffLogFile(sniffer, "combined_escape_001");\r
- AssertEauqlCombinedResult(sniffer, new[] {37, 105, 106, 90, 66, 10}, new[] {41, 41, 37, 44, 43, 43},\r
- "連合艦隊で2戦して大破が出るまで");\r
- PAssert.That(() => sniffer.BadlyDamagedShips.Any());\r
- SniffLogFile(sniffer, "combined_escape_002");\r
- PAssert.That(() => sniffer.GetShipStatuses(0)[5].Escaped && sniffer.GetShipStatuses(1)[1].Escaped,\r
- "続けて護衛退避を実行");\r
- PAssert.That(() => !sniffer.BadlyDamagedShips.Any());\r
- SniffLogFile(sniffer, "combined_escape_003");\r
- AssertEauqlCombinedResult(sniffer, new[] {37, 105, 106, 90, 1, 10}, new[] {41, 41, 32, 44, 43, 43},\r
- "もう一戦して大破が出るまで");\r
- PAssert.That(() => sniffer.BadlyDamagedShips.Any());\r
- SniffLogFile(sniffer, "combined_escape_004");\r
- PAssert.That(() => sniffer.GetShipStatuses(0)[5].Escaped && sniffer.GetShipStatuses(1)[1].Escaped &&\r
- sniffer.GetShipStatuses(0)[4].Escaped && sniffer.GetShipStatuses(1)[2].Escaped,\r
- "続けて護衛退避を実行");\r
- PAssert.That(() => !sniffer.BadlyDamagedShips.Any());\r
- }\r
-\r
- /// <summary>\r
- /// 護衛退避した空母を除いた制空値を計算する\r
- /// </summary>\r
- [TestMethod]\r
- public void FighterPowerWithoutEscapedShip()\r
- {\r
- var sniffer = new Sniffer();\r
- SniffLogFile(sniffer, "combined_escape_001");\r
- PAssert.That(() => sniffer.GetFighterPower(0)[0] == 187);\r
- SniffLogFile(sniffer, "combined_escape_002");\r
- PAssert.That(() => sniffer.GetFighterPower(0)[0] == 65);\r
- }\r
-\r
- /// <summary>\r
- /// 護衛退避した艦娘を除いて勝利判定を計算する\r