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
144 private static readonly ItemStatus S51J = new ItemStatus
\r
147 Spec = new ItemSpec
\r
156 private static readonly ItemStatus S51J改 = new ItemStatus
\r
159 Spec = new ItemSpec
\r
169 public class OpeningSubmarineAttack
\r
175 public void CheckStandardCase()
\r
177 var ship = new ShipStatus
\r
179 Spec = new ShipSpec {ShipType = 3},
\r
180 Slot = new[] {三式水中探信儀},
\r
183 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack, "対潜不足");
\r
184 ship.AntiSubmarine = 100;
\r
185 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
186 ship.Slot = new[] {new ItemStatus()};
\r
187 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack, "ソナー未搭載");
\r
195 public void CheckCoastGuard()
\r
197 var ship = new ShipStatus
\r
199 Spec = new ShipSpec {ShipType = 1},
\r
200 Slot = new[] {九五式爆雷},
\r
203 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack, "対潜不足");
\r
204 ship.AntiSubmarine = 75;
\r
205 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
210 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack, "装備対潜不足");
\r
219 [DataRow("Jervis改")]
\r
220 [DataRow("Janus改")]
\r
221 [DataRow("Samuel B.Roberts改")]
\r
222 [DataRow("Johnston")]
\r
223 [DataRow("Johnston改")]
\r
224 [DataRow("Fletcher")]
\r
225 [DataRow("Fletcher改")]
\r
226 public void CheckNonConditional(string name)
\r
228 var ship = new ShipStatus
\r
230 Spec = new ShipSpec
\r
235 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
246 public void CheckSpecialEscortCarrier(string name)
\r
248 var ship = new ShipStatus
\r
250 Spec = new ShipSpec
\r
254 Slot = new ItemStatus[0]
\r
256 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
258 ship.Slot = new[] {流星改};
\r
259 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
261 ship.Slot = new[] {カ号観測機};
\r
262 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
264 ship.Slot = new[] {三式指揮連絡機対潜};
\r
265 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
267 ship.Slot = new[] {九九式艦爆};
\r
268 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
273 [DataRow("Gambier Bay")]
\r
274 [DataRow("Gambier Bay改")]
\r
277 public void CheckEscortCarrierLevel50(string name)
\r
279 var ship = new ShipStatus
\r
281 Spec = new ShipSpec
\r
285 Slot = new ItemStatus[0]
\r
287 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
289 ship.AntiSubmarine = 49;
\r
295 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
297 ship.AntiSubmarine = 50;
\r
298 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
305 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
312 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
317 [DataRow("Gambier Bay")]
\r
318 [DataRow("Gambier Bay改")]
\r
321 public void CheckEscortCarrierLevel65(string name)
\r
323 var ship = new ShipStatus
\r
325 Spec = new ShipSpec
\r
329 Slot = new ItemStatus[0]
\r
331 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
333 ship.AntiSubmarine = 64;
\r
338 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
340 ship.AntiSubmarine = 65;
\r
341 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
347 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
353 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
358 [DataRow("Gambier Bay")]
\r
359 [DataRow("Gambier Bay改")]
\r
362 public void CheckEscortCarrierLevel100(string name)
\r
364 var ship = new ShipStatus
\r
366 Spec = new ShipSpec
\r
370 Slot = new ItemStatus[0]
\r
372 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
374 ship.AntiSubmarine = 100;
\r
380 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
387 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
389 ship.AntiSubmarine = 99;
\r
390 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
392 ship.AntiSubmarine = 100;
\r
398 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
404 CheckEscortCarrierLevel50("瑞鳳改二");
\r
406 var ship = new ShipStatus
\r
408 Spec = new ShipSpec
\r
412 Slot = new ItemStatus[0]
\r
414 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
416 ship.AntiSubmarine = 65;
\r
421 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
423 ship.AntiSubmarine = 100;
\r
429 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
435 var ship = new ShipStatus
\r
437 Spec = new ShipSpec {Name = "日向改二"},
\r
438 Slot = new ItemStatus[0]
\r
440 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
442 ship.Slot = new[] {カ号観測機};
\r
443 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
445 ship.Slot = new[] {カ号観測機, カ号観測機};
\r
446 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
448 ship.Slot = new[] {S51J};
\r
449 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
451 ship.Slot = new[] {S51J改};
\r
452 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
457 public class NightBattlePower
\r
460 public void 甲標的の改修効果()
\r
462 var ship = new ShipStatus
\r
470 Spec = new ItemSpec
\r
474 AntiSubmarine = 14,
\r
481 Assert.AreEqual(104, ship.NightBattlePower);
\r
486 public class AntiSubmarine
\r
491 var ship = new ShipStatus
\r
493 Fleet = new Fleet(null, 0, null),
\r
495 Spec = new ShipSpec
\r
499 AntiSubmarine = 47 + 11,
\r
505 Assert.AreEqual(0, ship.EffectiveAntiSubmarine, "艦載機なし");
\r
507 ship.AntiSubmarine = 47 + 18;
\r
513 Assert.AreEqual("48.7", ship.EffectiveAntiSubmarine.ToString("f1"), "艦載機あり");
\r
517 public void 水上機母艦()
\r
519 var ship = new ShipStatus
\r
521 Fleet = new Fleet(null, 0, null),
\r
523 Spec = new ShipSpec
\r
527 AntiSubmarine = 10,
\r
533 Assert.AreEqual(0, ship.EffectiveAntiSubmarine);
\r
535 ship.AntiSubmarine = 19;
\r
541 Assert.AreEqual("36.5", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
545 public void 対潜装備一つ()
\r
547 var ship = new ShipStatus
\r
549 Fleet = new Fleet(null, 0, null),
\r
551 Spec = new ShipSpec
\r
555 AntiSubmarine = 63 + 10,
\r
561 Assert.AreEqual("43.9", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
563 ship.AntiSubmarine = 63 + 8;
\r
568 Assert.AreEqual("40.9", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
570 ship.AntiSubmarine = 63 + 4;
\r
575 Assert.AreEqual("34.9", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
579 public void 爆雷投射機と爆雷()
\r
581 var ship = new ShipStatus
\r
583 Fleet = new Fleet(null, 0, null),
\r
585 Spec = new ShipSpec
\r
589 AntiSubmarine = 63 + 12,
\r
596 Assert.AreEqual("51.6", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
600 public void ソナーとそれ以外()
\r
602 var ship = new ShipStatus
\r
604 Fleet = new Fleet(null, 0, null),
\r
606 Spec = new ShipSpec
\r
610 AntiSubmarine = 63 + 18,
\r
617 Assert.AreEqual("64.3", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
619 ship.AntiSubmarine = 63 + 14;
\r
625 Assert.AreEqual("57.4", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
627 ship.AntiSubmarine = 63 + 25;
\r
633 Assert.AreEqual("76.3", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
637 public void 三種コンビネーション()
\r
639 var ship = new ShipStatus
\r
641 Fleet = new Fleet(null, 0, null),
\r
643 Spec = new ShipSpec
\r
647 AntiSubmarine = 63 + 22,
\r
655 Assert.AreEqual("88.9", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
657 ship.AntiSubmarine = 63 + 33;
\r
664 Assert.AreEqual("83.8", ship.EffectiveAntiSubmarine.ToString("f1"), "三種コンビネーションにならない");
\r
668 public void 装備ボーナス()
\r
670 var ship = new ShipStatus
\r
672 Fleet = new Fleet(null, 0, null),
\r
674 Spec = new ShipSpec
\r
678 AntiSubmarine = 50 + 10 + 3,
\r
684 Assert.AreEqual(50, ship.ShipAntiSubmarine);
\r
688 // ReSharper disable once InconsistentNaming
\r
689 private static readonly ItemStatus A12cm30連装噴進砲改二 = new ItemStatus
\r
692 Spec = new ItemSpec
\r
701 // ReSharper disable once InconsistentNaming
\r
702 private static readonly ItemStatus A25mm三連装機銃集中配備 = new ItemStatus
\r
705 Spec = new ItemSpec
\r
715 public class AntiAirPropellantBarrageChance
\r
717 private ShipStatus _ship;
\r
720 public void Initialize()
\r
722 _ship = new ShipStatus
\r
726 Spec = new ShipSpec
\r
730 Slot = new ItemStatus[0]
\r
735 public void 噴進砲改二なし()
\r
737 Assert.AreEqual(0, _ship.AntiAirPropellantBarrageChance);
\r
741 public void 噴進砲改二1つ()
\r
743 _ship.AntiAir = 85 + 8;
\r
748 Assert.AreEqual("61.7", _ship.AntiAirPropellantBarrageChance.ToString("f1"));
\r
752 public void 補強増設に噴進砲改二()
\r
754 _ship.AntiAir = 85 + 8;
\r
755 _ship.SlotEx = A12cm30連装噴進砲改二;
\r
756 Assert.AreEqual("61.7", _ship.AntiAirPropellantBarrageChance.ToString("f1"));
\r
760 public void 噴進砲改二2つ()
\r
762 _ship.AntiAir = 85 + 16;
\r
768 Assert.AreEqual("93.8", _ship.AntiAirPropellantBarrageChance.ToString("f1"));
\r
772 public void 噴進砲改二2つと機銃()
\r
774 _ship.AntiAir = 85 + 25;
\r
781 Assert.AreEqual("113.0", _ship.AntiAirPropellantBarrageChance.ToString("f1"), "噴進砲改二2+機銃");
\r
787 _ship.AntiAir = 85 + 8;
\r
792 _ship.Spec.ShipClass = 2;
\r
793 Assert.AreEqual("86.7", _ship.AntiAirPropellantBarrageChance.ToString("f1"));
\r