X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=KancolleSniffer.Test%2FSnifferTest.cs;h=fa7050fc8ff3b7394f268d4563f41c9d154be111;hb=40d4c83d6729779ded6f55b47e5881517c4dc185;hp=bf3e4d2b3a80c1b5d33a261890d9543bc9c22eb9;hpb=b65c70edeb8f920b2f7b34af8535563fba06b054;p=kancollesniffer%2FKancolleSniffer.git diff --git a/KancolleSniffer.Test/SnifferTest.cs b/KancolleSniffer.Test/SnifferTest.cs index bf3e4d2..fa7050f 100644 --- a/KancolleSniffer.Test/SnifferTest.cs +++ b/KancolleSniffer.Test/SnifferTest.cs @@ -21,6 +21,7 @@ using ExpressionToCodeLib; using KancolleSniffer.Model; using KancolleSniffer.Util; using Microsoft.VisualStudio.TestTools.UnitTesting; +using static System.Math; namespace KancolleSniffer.Test { @@ -80,208 +81,6 @@ namespace KancolleSniffer.Test } /// - /// 4-2-1で開幕対潜雷撃を含む戦闘を行う - /// - [TestMethod] - public void NormalBattleWithVariousTypesOfAttack() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "battle_001"); - PAssert.That(() => sniffer.Battle.ResultRank == BattleResultRank.A); - AssertEqualBattleResult(sniffer, - new[] {57, 66, 50, 65, 40, 42}, new[] {34, 5, 0, 0, 0, 0}); - } - - private void AssertEqualBattleResult(Sniffer sniffer, IEnumerable expected, IEnumerable enemy, - string msg = null) - { - var result = sniffer.Fleets[0].Ships.Select(s => s.NowHp); - PAssert.That(() => expected.SequenceEqual(result), msg); - var enemyResult = sniffer.Battle.Result.Enemy.Main.Select(s => s.NowHp); - PAssert.That(() => enemy.SequenceEqual(enemyResult), msg); - } - - /// - /// 開幕夜戦で潜水艦同士がお見合いする - /// - [TestMethod] - public void SpMidnightWithoutBattle() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "sp_midnight_001"); - PAssert.That(() => sniffer.Battle.ResultRank == BattleResultRank.D); - } - - /// - /// 夜戦で戦艦が攻撃すると一回で三発分のデータが来る - /// そのうち存在しない攻撃はターゲット、ダメージともに-1になる - /// - [TestMethod] - public void BattleShipAttackInMidnight() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "midnight_001"); - PAssert.That(() => sniffer.Battle.ResultRank == BattleResultRank.S); - } - - /// - /// 7隻編成の戦闘で7隻目が攻撃される - /// - [TestMethod] - public void Ship7Battle() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "ship7battle_001"); - PAssert.That(() => sniffer.Battle.ResultRank == BattleResultRank.P); - } - - /// - /// 演習のあとのportで戦闘結果の検証を行わない - /// - [TestMethod] - public void NotVerifyBattleResultAfterPractice() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "practice_001"); - PAssert.That(() => !sniffer.IsBattleResultStatusError); - } - - /// - /// 演習でダメコンを発動させない - /// - [TestMethod] - public void NotTriggerDameConInPractice() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "practice_002"); - PAssert.That(() => !sniffer.Battle.DisplayedResultRank.IsError); - } - - /// - /// 演習中の艦を要修復リストに載せない - /// - [TestMethod] - public void DamagedShipListNotShowShipInPractice() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "practice_003"); - PAssert.That(() => sniffer.RepairList.Select(s => s.Name).SequenceEqual(new[] {"飛龍改二", "翔鶴改二"})); - } - - /// - /// 連合艦隊が開幕雷撃で被弾する - /// - [TestMethod] - public void OpeningTorpedoInCombinedBattle() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "combined_battle_001"); - PAssert.That(() => !sniffer.IsBattleResultStatusError); - } - - /// - /// 連合艦隊が閉幕雷撃で被弾する - /// - [TestMethod] - public void ClosingTorpedoInCombinedBattle() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "combined_battle_002"); - PAssert.That(() => !sniffer.IsBattleResultStatusError); - } - - /// - /// 第一が6隻未満の連合艦隊で戦闘する - /// - [TestMethod] - public void SmallCombinedFleetBattle() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "combined_battle_003"); - PAssert.That(() => !sniffer.IsBattleResultStatusError); - } - - /// - /// 護衛退避する - /// - [TestMethod] - public void EscapeWithEscort() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "escape_001"); - var fleets = sniffer.Fleets; - PAssert.That(() => fleets[0].Ships[5].Escaped && - fleets[1].Ships[2].Escaped); - } - - /// - /// 開幕夜戦に支援が来る - /// - [TestMethod] - public void SpMidnightSupportAttack() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "sp_midnight_002"); - PAssert.That(() => !sniffer.Battle.DisplayedResultRank.IsError); - } - - /// - /// 払暁戦を行う - /// - [TestMethod] - public void NightToDay() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "nighttoday_001"); - PAssert.That(() => !sniffer.Battle.DisplayedResultRank.IsError && !sniffer.IsBattleResultStatusError); - } - - /// - /// 単艦退避する - /// - [TestMethod] - public void EscapeWithoutEscort() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "escape_002"); - PAssert.That(() => sniffer.Fleets[2].Ships[1].Escaped); - PAssert.That(() => !sniffer.IsBattleResultStatusError); - } - - /// - /// 出撃時に大破している艦娘がいたら警告する - /// - [TestMethod] - public void DamagedShipWarningOnMapStart() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "mapstart_001"); - PAssert.That(() => sniffer.BadlyDamagedShips.SequenceEqual(new[] {"大潮"})); - } - - /// - /// 連合艦隊に大破艦がいる状態で第3艦隊が出撃したときに警告しない - /// - [TestMethod] - public void NotWarnDamagedShipInCombinedFleetOnMapStart() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "mapstart_002"); - PAssert.That(() => !sniffer.BadlyDamagedShips.Any()); - } - - /// - /// 連合艦隊の第二旗艦の大破を警告しない - /// - [TestMethod] - public void NotWarnDamaged1StShipInGuardFleet() - { - var sniffer = new Sniffer(); - SniffLogFile(sniffer, "combined_battle_004"); - PAssert.That(() => !sniffer.BadlyDamagedShips.Any()); - } - - /// /// 熟練度込みの制空値を正しく計算する /// [TestMethod] @@ -372,11 +171,11 @@ namespace KancolleSniffer.Test var sniffer = new Sniffer(); SniffLogFile(sniffer, "lineofsight_001"); var fleet = sniffer.Fleets[0]; - PAssert.That(() => Math.Abs(fleet.GetLineOfSights(1) - 39.45) < 0.01); - PAssert.That(() => Math.Abs(fleet.GetLineOfSights(3) - 115.19) < 0.01); - PAssert.That(() => Math.Abs(fleet.GetLineOfSights(4) - 153.06) < 0.01); + PAssert.That(() => Abs(fleet.GetLineOfSights(1) - 39.45) < 0.01); + PAssert.That(() => Abs(fleet.GetLineOfSights(3) - 115.19) < 0.01); + PAssert.That(() => Abs(fleet.GetLineOfSights(4) - 153.06) < 0.01); SniffLogFile(sniffer, "lineofsight_002"); - PAssert.That(() => Math.Abs(fleet.GetLineOfSights(1) - -25.10) < 0.01, "艦隊に空きがある"); + PAssert.That(() => Abs(fleet.GetLineOfSights(1) - -25.10) < 0.01, "艦隊に空きがある"); } /// @@ -387,7 +186,7 @@ namespace KancolleSniffer.Test { var sniffer = new Sniffer(); SniffLogFile(sniffer, "contact_001"); - PAssert.That(() => Math.Abs(sniffer.Fleets[0].ContactTriggerRate - 1.8182) < 0.0001); + PAssert.That(() => Abs(sniffer.Fleets[0].ContactTriggerRate - 1.8182) < 0.0001); } /// @@ -477,6 +276,20 @@ namespace KancolleSniffer.Test } /// + /// 対潜攻撃力を計算する + /// + [TestMethod] + public void AntiSubmarine() + { + var sniffer = new Sniffer(); + SniffLogFile(sniffer, "antisubmarine_001"); + PAssert.That(() => Abs(sniffer.Fleets[0].Ships[0].EffectiveAntiSubmarine - 92.16) < 0.01); + PAssert.That(() => Abs(sniffer.Fleets[0].Ships[1].EffectiveAntiSubmarine - 84.49) < 0.01); + PAssert.That(() => Abs(sniffer.Fleets[0].Ships[2].EffectiveAntiSubmarine - 57.84) < 0.01); + PAssert.That(() => Abs(sniffer.Fleets[0].Ships[3].EffectiveAntiSubmarine - 61.37) < 0.01); + } + + /// /// 編成で空き番号を使ったローテートを正しく反映する /// [TestMethod] @@ -580,7 +393,7 @@ namespace KancolleSniffer.Test { var sniffer = new Sniffer(); SniffLogFile(sniffer, "powerup_001"); - PAssert.That(() => Math.Abs(sniffer.Fleets[0].Ships[0].EffectiveFirepower - 30) < 0.0001); + PAssert.That(() => Abs(sniffer.Fleets[0].Ships[0].EffectiveFirepower - 30) < 0.0001); } /// @@ -909,10 +722,10 @@ namespace KancolleSniffer.Test PAssert.That(() => sniffer.MiscText == "[海域ゲージ]\r\n" + - "1-6 : 撃破 2/7\r\n" + - "2-5 : 撃破 0/4\r\n" + - "3-5 : 撃破 0/4\r\n" + - "4-4 : 撃破 0/4\r\n"); + "1-6 : 残り 5/7\r\n" + + "2-5 : 残り 4/4\r\n" + + "3-5 : 残り 4/4\r\n" + + "4-4 : 残り 4/4\r\n"); } ///