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("Janus改")]
\r
197 [DataRow("Samuel B.Roberts改")]
\r
198 [DataRow("Johnston")]
\r
199 [DataRow("Johnston改")]
\r
200 [DataRow("Fletcher")]
\r
201 [DataRow("Fletcher改")]
\r
202 public void CheckNonConditional(string name)
\r
204 var ship = new ShipStatus
\r
206 Spec = new ShipSpec
\r
211 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
222 public void CheckSpecialEscortCarrier(string name)
\r
224 var ship = new ShipStatus
\r
226 Spec = new ShipSpec
\r
230 Slot = new ItemStatus[0]
\r
232 Assert.IsFalse(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
243 ship.Slot = new[] {九九式艦爆};
\r
244 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
249 [DataRow("Gambier Bay")]
\r
250 [DataRow("Gambier Bay改")]
\r
253 public void CheckEscortCarrierLevel50(string name)
\r
255 var ship = new ShipStatus
\r
257 Spec = new ShipSpec
\r
261 Slot = new ItemStatus[0]
\r
263 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
265 ship.AntiSubmarine = 49;
\r
271 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
273 ship.AntiSubmarine = 50;
\r
274 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
281 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
288 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
293 [DataRow("Gambier Bay")]
\r
294 [DataRow("Gambier Bay改")]
\r
297 public void CheckEscortCarrierLevel65(string name)
\r
299 var ship = new ShipStatus
\r
301 Spec = new ShipSpec
\r
305 Slot = new ItemStatus[0]
\r
307 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
309 ship.AntiSubmarine = 64;
\r
314 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
316 ship.AntiSubmarine = 65;
\r
317 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
323 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
329 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
334 [DataRow("Gambier Bay")]
\r
335 [DataRow("Gambier Bay改")]
\r
338 public void CheckEscortCarrierLevel100(string name)
\r
340 var ship = new ShipStatus
\r
342 Spec = new ShipSpec
\r
346 Slot = new ItemStatus[0]
\r
348 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
350 ship.AntiSubmarine = 100;
\r
356 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
363 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
365 ship.AntiSubmarine = 99;
\r
366 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
368 ship.AntiSubmarine = 100;
\r
374 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);
\r
380 CheckEscortCarrierLevel50("瑞鳳改二");
\r
382 var ship = new ShipStatus
\r
384 Spec = new ShipSpec
\r
388 Slot = new ItemStatus[0]
\r
390 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
392 ship.AntiSubmarine = 65;
\r
397 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
399 ship.AntiSubmarine = 100;
\r
405 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);
\r
410 public class NightBattlePower
\r
413 public void 甲標的の改修効果()
\r
415 var ship = new ShipStatus
\r
423 Spec = new ItemSpec
\r
427 AntiSubmarine = 14,
\r
434 Assert.AreEqual(104, ship.NightBattlePower);
\r
439 public class AntiSubmarine
\r
444 var ship = new ShipStatus
\r
446 Fleet = new Fleet(null, 0, null),
\r
448 Spec = new ShipSpec
\r
452 AntiSubmarine = 47 + 11,
\r
458 Assert.AreEqual(0, ship.EffectiveAntiSubmarine, "艦載機なし");
\r
460 ship.AntiSubmarine = 47 + 18;
\r
466 Assert.AreEqual("48.7", ship.EffectiveAntiSubmarine.ToString("f1"), "艦載機あり");
\r
470 public void 水上機母艦()
\r
472 var ship = new ShipStatus
\r
474 Fleet = new Fleet(null, 0, null),
\r
476 Spec = new ShipSpec
\r
480 AntiSubmarine = 10,
\r
486 Assert.AreEqual(0, ship.EffectiveAntiSubmarine);
\r
488 ship.AntiSubmarine = 19;
\r
494 Assert.AreEqual("36.5", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
498 public void 対潜装備一つ()
\r
500 var ship = new ShipStatus
\r
502 Fleet = new Fleet(null, 0, null),
\r
504 Spec = new ShipSpec
\r
508 AntiSubmarine = 63 + 10,
\r
514 Assert.AreEqual("43.9", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
516 ship.AntiSubmarine = 63 + 8;
\r
521 Assert.AreEqual("40.9", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
523 ship.AntiSubmarine = 63 + 4;
\r
528 Assert.AreEqual("34.9", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
532 public void 爆雷投射機と爆雷()
\r
534 var ship = new ShipStatus
\r
536 Fleet = new Fleet(null, 0, null),
\r
538 Spec = new ShipSpec
\r
542 AntiSubmarine = 63 + 12,
\r
549 Assert.AreEqual("51.6", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
553 public void ソナーとそれ以外()
\r
555 var ship = new ShipStatus
\r
557 Fleet = new Fleet(null, 0, null),
\r
559 Spec = new ShipSpec
\r
563 AntiSubmarine = 63 + 18,
\r
570 Assert.AreEqual("64.3", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
572 ship.AntiSubmarine = 63 + 14;
\r
578 Assert.AreEqual("57.4", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
580 ship.AntiSubmarine = 63 + 25;
\r
586 Assert.AreEqual("76.3", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
590 public void 三種コンビネーション()
\r
592 var ship = new ShipStatus
\r
594 Fleet = new Fleet(null, 0, null),
\r
596 Spec = new ShipSpec
\r
600 AntiSubmarine = 63 + 22,
\r
608 Assert.AreEqual("88.9", ship.EffectiveAntiSubmarine.ToString("f1"));
\r
610 ship.AntiSubmarine = 63 + 33;
\r
617 Assert.AreEqual("83.8", ship.EffectiveAntiSubmarine.ToString("f1"), "三種コンビネーションにならない");
\r
621 // ReSharper disable once InconsistentNaming
\r
622 private static readonly ItemStatus A12cm30連装噴進砲改二 = new ItemStatus
\r
625 Spec = new ItemSpec
\r
634 // ReSharper disable once InconsistentNaming
\r
635 private static readonly ItemStatus A25mm三連装機銃集中配備 = new ItemStatus
\r
638 Spec = new ItemSpec{
\r
647 public class AntiAirPropellantBarrageChance
\r
649 private ShipStatus _ship;
\r
652 public void Initialize()
\r
654 _ship =new ShipStatus
\r
658 Spec = new ShipSpec
\r
662 Slot = new ItemStatus[0]
\r
667 public void 噴進砲改二なし()
\r
669 Assert.AreEqual(0, _ship.AntiAirPropellantBarrageChance);
\r
673 public void 噴進砲改二1つ()
\r
675 _ship.AntiAir = 85 + 8;
\r
680 Assert.AreEqual("61.7", _ship.AntiAirPropellantBarrageChance.ToString("f1"));
\r
684 public void 補強増設に噴進砲改二()
\r
686 _ship.AntiAir = 85 + 8;
\r
687 _ship.SlotEx = A12cm30連装噴進砲改二;
\r
688 Assert.AreEqual("61.7", _ship.AntiAirPropellantBarrageChance.ToString("f1"));
\r
692 public void 噴進砲改二2つ()
\r
694 _ship.AntiAir = 85 + 16;
\r
700 Assert.AreEqual("93.8", _ship.AntiAirPropellantBarrageChance.ToString("f1"));
\r
704 public void 噴進砲改二2つと機銃()
\r
706 _ship.AntiAir = 85 + 25;
\r
713 Assert.AreEqual("113.0", _ship.AntiAirPropellantBarrageChance.ToString("f1"), "噴進砲改二2+機銃");
\r
719 _ship.AntiAir = 85 + 8;
\r
724 _ship.Spec.ShipClass = 2;
\r
725 Assert.AreEqual("86.7", _ship.AntiAirPropellantBarrageChance.ToString("f1"));
\r