1 using KancolleSniffer.Model;
\r
2 using Microsoft.VisualStudio.TestTools.UnitTesting;
\r
4 namespace KancolleSniffer.Test
\r
7 public class ShipStatusTest
\r
9 private static readonly ItemStatus 三式水中探信儀 = new ItemStatus
\r
21 private static readonly ItemStatus 三式爆雷投射機 = new ItemStatus
\r
33 private static readonly ItemStatus 九五式爆雷 = new ItemStatus
\r
45 // ReSharper disable once InconsistentNaming
\r
46 private static readonly ItemStatus SGレーダー初期型 = new ItemStatus
\r
52 Name = "SG レーダー(初期型)",
\r
58 // ReSharper disable once InconsistentNaming
\r
59 private static readonly ItemStatus 試製15cm9連装対潜噴進砲 = new ItemStatus
\r
65 Name = "試製15cm9連装対潜噴進砲",
\r
71 private static readonly ItemStatus 流星改 = new ItemStatus
\r
83 private static readonly ItemStatus カ号観測機 = new ItemStatus
\r
95 private static readonly ItemStatus 三式指揮連絡機対潜 = new ItemStatus
\r
101 Name = "三式指揮連絡機(対潜)",
\r
107 private static readonly ItemStatus 九九式艦爆 = new ItemStatus
\r
110 Spec = new ItemSpec
\r
119 private static readonly ItemStatus 水中聴音機零式 = new ItemStatus
\r
122 Spec = new ItemSpec
\r
131 private static readonly ItemStatus 九七式艦攻九三一空 = new ItemStatus
\r
134 Spec = new ItemSpec
\r
137 Name = "九七式艦攻(九三一空)",
\r
145 public class OpeningSubmarineAttack
\r
151 public void CheckStandardCase()
\r
153 var ship = new ShipStatus
\r
155 Spec = new ShipSpec {ShipType = 3},
\r
156 Slot = new[] {三式水中探信儀},
\r
159 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack, "対潜不足");
\r
160 ship.AntiSubmarine = 100;
\r
161 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
162 ship.Slot = new[] {new ItemStatus()};
\r
163 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack, "ソナー未搭載");
\r
171 public void CheckCoastGuard()
\r
173 var ship = new ShipStatus
\r
175 Spec = new ShipSpec {ShipType = 1},
\r
176 Slot = new[] {九五式爆雷},
\r
179 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack, "対潜不足");
\r
180 ship.AntiSubmarine = 75;
\r
181 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
186 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack, "装備対潜不足");
\r
195 [DataRow("Jervis改")]
\r
196 [DataRow("Samuel B.Roberts改")]
\r
197 [DataRow("Johnston")]
\r
198 [DataRow("Johnston改")]
\r
199 public void CheckNonConditional(string name)
\r
201 var ship = new ShipStatus
\r
203 Spec = new ShipSpec
\r
208 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
219 public void CheckSpecialEscortCarrier(string name)
\r
221 var ship = new ShipStatus
\r
223 Spec = new ShipSpec
\r
227 Slot = new ItemStatus[0]
\r
229 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
231 ship.Slot = new[] {流星改};
\r
232 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
234 ship.Slot = new[] {カ号観測機};
\r
235 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
237 ship.Slot = new[] {三式指揮連絡機対潜};
\r
238 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
240 ship.Slot = new[] {九九式艦爆};
\r
241 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
246 [DataRow("Gambier Bay")]
\r
247 [DataRow("Gambier Bay改")]
\r
250 public void CheckEscortCarrierLevel50(string name)
\r
252 var ship = new ShipStatus
\r
254 Spec = new ShipSpec
\r
258 Slot = new ItemStatus[0]
\r
260 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
262 ship.AntiSubmarine = 49;
\r
268 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
270 ship.AntiSubmarine = 50;
\r
271 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
278 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
285 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
290 [DataRow("Gambier Bay")]
\r
291 [DataRow("Gambier Bay改")]
\r
294 public void CheckEscortCarrierLevel65(string name)
\r
296 var ship = new ShipStatus
\r
298 Spec = new ShipSpec
\r
302 Slot = new ItemStatus[0]
\r
304 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
306 ship.AntiSubmarine = 64;
\r
311 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
313 ship.AntiSubmarine = 65;
\r
314 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
320 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
326 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
331 [DataRow("Gambier Bay")]
\r
332 [DataRow("Gambier Bay改")]
\r
335 public void CheckEscortCarrierLevel100(string name)
\r
337 var ship = new ShipStatus
\r
339 Spec = new ShipSpec
\r
343 Slot = new ItemStatus[0]
\r
345 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
347 ship.AntiSubmarine = 100;
\r
353 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
360 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
362 ship.AntiSubmarine = 99;
\r
363 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
365 ship.AntiSubmarine = 100;
\r
371 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
377 CheckEscortCarrierLevel50("瑞鳳改二");
\r
379 var ship = new ShipStatus
\r
381 Spec = new ShipSpec
\r
385 Slot = new ItemStatus[0]
\r
387 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
389 ship.AntiSubmarine = 65;
\r
394 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
396 ship.AntiSubmarine = 100;
\r
402 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
407 public class NightBattlePower
\r
410 public void 甲標的の改修効果()
\r
412 var ship = new ShipStatus
\r
420 Spec = new ItemSpec
\r
424 AntiSubmarine = 14,
\r
431 Assert.AreEqual(104, ship.NightBattlePower);
\r
436 public class AntiSubmarine
\r
441 var ship = new ShipStatus
\r
443 Fleet = new Fleet(null, 0, null),
\r
445 Spec = new ShipSpec
\r
449 AntiSubmarine = 47 + 11,
\r
455 Assert.AreEqual(0, ship.EffectiveAntiSubmarine, "艦載機なし");
\r
457 ship.AntiSubmarine = 47 + 18;
\r
463 Assert.AreEqual("48.7", ship.EffectiveAntiSubmarine.ToString("f1"), "艦載機あり");
\r
467 public void 水上機母艦()
\r
469 var ship = new ShipStatus
\r
471 Fleet = new Fleet(null, 0, null),
\r
473 Spec = new ShipSpec
\r
477 AntiSubmarine = 10,
\r
483 Assert.AreEqual(0, ship.EffectiveAntiSubmarine);
\r
485 ship.AntiSubmarine = 19;
\r
491 Assert.AreEqual("36.5", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
495 public void 対潜装備一つ()
\r
497 var ship = new ShipStatus
\r
499 Fleet = new Fleet(null, 0, null),
\r
501 Spec = new ShipSpec
\r
505 AntiSubmarine = 63 + 10,
\r
511 Assert.AreEqual("43.9", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
513 ship.AntiSubmarine = 63 + 8;
\r
518 Assert.AreEqual("40.9", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
520 ship.AntiSubmarine = 63 + 4;
\r
525 Assert.AreEqual("34.9", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
529 public void 爆雷投射機と爆雷()
\r
531 var ship = new ShipStatus
\r
533 Fleet = new Fleet(null, 0, null),
\r
535 Spec = new ShipSpec
\r
539 AntiSubmarine = 63 + 12,
\r
546 Assert.AreEqual("51.6", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
550 public void ソナーとそれ以外()
\r
552 var ship = new ShipStatus
\r
554 Fleet = new Fleet(null, 0, null),
\r
556 Spec = new ShipSpec
\r
560 AntiSubmarine = 63 + 18,
\r
567 Assert.AreEqual("64.3", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
569 ship.AntiSubmarine = 63 + 14;
\r
575 Assert.AreEqual("57.4", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
577 ship.AntiSubmarine = 63 + 25;
\r
583 Assert.AreEqual("76.3", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
587 public void 三種コンビネーション()
\r
589 var ship = new ShipStatus
\r
591 Fleet = new Fleet(null, 0, null),
\r
593 Spec = new ShipSpec
\r
597 AntiSubmarine = 63 + 22,
\r
605 Assert.AreEqual("88.9", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
607 ship.AntiSubmarine = 63 + 33;
\r
614 Assert.AreEqual("83.8", ship.EffectiveAntiSubmarine.ToString("f1"), "三種コンビネーションにならない");
\r
618 // ReSharper disable once InconsistentNaming
\r
619 private static readonly ItemStatus A12cm30連装噴進砲改二 = new ItemStatus
\r
622 Spec = new ItemSpec
\r
631 // ReSharper disable once InconsistentNaming
\r
632 private static readonly ItemStatus A25mm三連装機銃集中配備 = new ItemStatus
\r
635 Spec = new ItemSpec{
\r
644 public class AntiAirPropellantBarrageChance
\r
646 private ShipStatus _ship;
\r
649 public void Initialize()
\r
651 _ship =new ShipStatus
\r
655 Spec = new ShipSpec
\r
659 Slot = new ItemStatus[0]
\r
664 public void 噴進砲改二なし()
\r
666 Assert.AreEqual(0, _ship.AntiAirPropellantBarrageChance);
\r
670 public void 噴進砲改二1つ()
\r
672 _ship.AntiAir = 85 + 8;
\r
677 Assert.AreEqual("61.7", _ship.AntiAirPropellantBarrageChance.ToString("f1"));
\r
681 public void 補強増設に噴進砲改二()
\r
683 _ship.AntiAir = 85 + 8;
\r
684 _ship.SlotEx = A12cm30連装噴進砲改二;
\r
685 Assert.AreEqual("61.7", _ship.AntiAirPropellantBarrageChance.ToString("f1"));
\r
689 public void 噴進砲改二2つ()
\r
691 _ship.AntiAir = 85 + 16;
\r
697 Assert.AreEqual("93.8", _ship.AntiAirPropellantBarrageChance.ToString("f1"));
\r
701 public void 噴進砲改二2つと機銃()
\r
703 _ship.AntiAir = 85 + 25;
\r
710 Assert.AreEqual("113.0", _ship.AntiAirPropellantBarrageChance.ToString("f1"), "噴進砲改二2+機銃");
\r
716 _ship.AntiAir = 85 + 8;
\r
721 _ship.Spec.ShipClass = 2;
\r
722 Assert.AreEqual("86.7", _ship.AntiAirPropellantBarrageChance.ToString("f1"));
\r