OSDN Git Service

バージョン12.11の準備
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer.Test / ShipStatusTest.cs
1 using KancolleSniffer.Model;\r
2 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
3 \r
4 namespace KancolleSniffer.Test\r
5 {\r
6     [TestClass]\r
7     public class ShipStatusTest\r
8     {\r
9         private static readonly ItemStatus 三式水中探信儀 = new ItemStatus\r
10         {\r
11             Id = 1,\r
12             Spec = new ItemSpec\r
13             {\r
14                 Id = 47,\r
15                 Name = "三式水中探信儀",\r
16                 Type = 14,\r
17                 AntiSubmarine = 10\r
18             }\r
19         };\r
20 \r
21         private static readonly ItemStatus 三式爆雷投射機 = new ItemStatus\r
22         {\r
23             Id = 1,\r
24             Spec = new ItemSpec\r
25             {\r
26                 Id = 45,\r
27                 Name = "三式爆雷投射機",\r
28                 Type = 15,\r
29                 AntiSubmarine = 8\r
30             }\r
31         };\r
32 \r
33         private static readonly ItemStatus 九五式爆雷 = new ItemStatus\r
34         {\r
35             Id = 1,\r
36             Spec = new ItemSpec\r
37             {\r
38                 Id = 226,\r
39                 Name = "九五式爆雷",\r
40                 Type = 15,\r
41                 AntiSubmarine = 4\r
42             }\r
43         };\r
44 \r
45         // ReSharper disable once InconsistentNaming\r
46         private static readonly ItemStatus SGレーダー初期型 = new ItemStatus\r
47         {\r
48             Id = 1,\r
49             Spec = new ItemSpec\r
50             {\r
51                 Id = 315,\r
52                 Name = "SG レーダー(初期型)",\r
53                 Type = 12,\r
54                 AntiSubmarine = 3\r
55             }\r
56         };\r
57 \r
58         // ReSharper disable once InconsistentNaming\r
59         private static readonly ItemStatus 試製15cm9連装対潜噴進砲 = new ItemStatus\r
60         {\r
61             Id = 1,\r
62             Spec = new ItemSpec\r
63             {\r
64                 Id = 288,\r
65                 Name = "試製15cm9連装対潜噴進砲",\r
66                 Type = 15,\r
67                 AntiSubmarine = 15\r
68             }\r
69         };\r
70 \r
71         private static readonly ItemStatus 流星改 = new ItemStatus\r
72         {\r
73             Id = 1,\r
74             Spec = new ItemSpec\r
75             {\r
76                 Id = 52,\r
77                 Name = "流星改",\r
78                 Type = 8,\r
79                 AntiSubmarine = 3\r
80             }\r
81         };\r
82 \r
83         private static readonly ItemStatus カ号観測機 = new ItemStatus\r
84         {\r
85             Id = 1,\r
86             Spec = new ItemSpec\r
87             {\r
88                 Id = 69,\r
89                 Name = "カ号観測機",\r
90                 Type = 25,\r
91                 AntiSubmarine = 9\r
92             }\r
93         };\r
94 \r
95         private static readonly ItemStatus 三式指揮連絡機対潜 = new ItemStatus\r
96         {\r
97             Id = 1,\r
98             Spec = new ItemSpec\r
99             {\r
100                 Id = 70,\r
101                 Name = "三式指揮連絡機(対潜)",\r
102                 Type = 26,\r
103                 AntiSubmarine = 7\r
104             }\r
105         };\r
106 \r
107         private static readonly ItemStatus 九九式艦爆 = new ItemStatus\r
108         {\r
109             Id = 1,\r
110             Spec = new ItemSpec\r
111             {\r
112                 Id = 23,\r
113                 Name = "九九式艦爆",\r
114                 Type = 7,\r
115                 AntiSubmarine = 3\r
116             }\r
117         };\r
118 \r
119         private static readonly ItemStatus 水中聴音機零式 = new ItemStatus\r
120         {\r
121             Id = 1,\r
122             Spec = new ItemSpec\r
123             {\r
124                 Id = 132,\r
125                 Name = "水中聴音機零式",\r
126                 Type = 40,\r
127                 AntiSubmarine = 11\r
128             }\r
129         };\r
130 \r
131         private static readonly ItemStatus 九七式艦攻九三一空 = new ItemStatus\r
132         {\r
133             Id = 1,\r
134             Spec = new ItemSpec\r
135             {\r
136                 Id = 82,\r
137                 Name = "九七式艦攻(九三一空)",\r
138                 Type = 8,\r
139                 AntiSubmarine = 7,\r
140                 Torpedo = 6\r
141             }\r
142         };\r
143 \r
144         private static readonly ItemStatus S51J = new ItemStatus\r
145         {\r
146             Id = 1,\r
147             Spec = new ItemSpec\r
148             {\r
149                 Id = 326,\r
150                 Name = "S-51J",\r
151                 Type = 25,\r
152                 IconType = 44\r
153             }\r
154         };\r
155 \r
156         private static readonly ItemStatus S51J改 = new ItemStatus\r
157         {\r
158             Id = 1,\r
159             Spec = new ItemSpec\r
160             {\r
161                 Id = 327,\r
162                 Name = "S-51J改",\r
163                 Type = 25,\r
164                 IconType = 44\r
165             }\r
166         };\r
167 \r
168         [TestClass]\r
169         public class OpeningSubmarineAttack\r
170         {\r
171             /// <summary>\r
172             /// 通常の先制対潜\r
173             /// </summary>\r
174             [TestMethod]\r
175             public void CheckStandardCase()\r
176             {\r
177                 var ship = new ShipStatus\r
178                 {\r
179                     Spec = new ShipSpec {ShipType = 3},\r
180                     Slot = new[] {三式水中探信儀},\r
181                     AntiSubmarine = 99\r
182                 };\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
188             }\r
189 \r
190 \r
191             /// <summary>\r
192             /// 海防艦の先制対潜\r
193             /// </summary>\r
194             [TestMethod]\r
195             public void CheckCoastGuard()\r
196             {\r
197                 var ship = new ShipStatus\r
198                 {\r
199                     Spec = new ShipSpec {ShipType = 1},\r
200                     Slot = new[] {九五式爆雷},\r
201                     AntiSubmarine = 74\r
202                 };\r
203                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack, "対潜不足");\r
204                 ship.AntiSubmarine = 75;\r
205                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
206                 ship.Slot = new[]\r
207                 {\r
208                     SGレーダー初期型\r
209                 };\r
210                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack, "装備対潜不足");\r
211             }\r
212 \r
213             /// <summary>\r
214             /// 無条件で先制対潜が可能\r
215             /// </summary>\r
216             [DataTestMethod]\r
217             [DataRow("五十鈴改二")]\r
218             [DataRow("龍田改二")]\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
227             {\r
228                 var ship = new ShipStatus\r
229                 {\r
230                     Spec = new ShipSpec\r
231                     {\r
232                         Name = name\r
233                     }\r
234                 };\r
235                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
236             }\r
237 \r
238             /// <summary>\r
239             /// 大鷹改・改二、神鷹改・改二\r
240             /// </summary>\r
241             [DataTestMethod]\r
242             [DataRow("大鷹改")]\r
243             [DataRow("大鷹改二")]\r
244             [DataRow("神鷹改")]\r
245             [DataRow("神鷹改二")]\r
246             public void CheckSpecialEscortCarrier(string name)\r
247             {\r
248                 var ship = new ShipStatus\r
249                 {\r
250                     Spec = new ShipSpec\r
251                     {\r
252                         Name = name\r
253                     },\r
254                     Slot = new ItemStatus[0]\r
255                 };\r
256                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);\r
257 \r
258                 ship.Slot = new[] {流星改};\r
259                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
260 \r
261                 ship.Slot = new[] {カ号観測機};\r
262                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
263 \r
264                 ship.Slot = new[] {三式指揮連絡機対潜};\r
265                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
266 \r
267                 ship.Slot = new[] {九九式艦爆};\r
268                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
269             }\r
270 \r
271             [DataTestMethod]\r
272             [DataRow("大鷹")]\r
273             [DataRow("Gambier Bay")]\r
274             [DataRow("Gambier Bay改")]\r
275             [DataRow("瑞鳳改二乙")]\r
276             [DataRow("神鷹")]\r
277             public void CheckEscortCarrierLevel50(string name)\r
278             {\r
279                 var ship = new ShipStatus\r
280                 {\r
281                     Spec = new ShipSpec\r
282                     {\r
283                         Name = name\r
284                     },\r
285                     Slot = new ItemStatus[0]\r
286                 };\r
287                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);\r
288 \r
289                 ship.AntiSubmarine = 49;\r
290                 ship.Slot = new[]\r
291                 {\r
292                     水中聴音機零式,\r
293                     九七式艦攻九三一空\r
294                 };\r
295                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);\r
296 \r
297                 ship.AntiSubmarine = 50;\r
298                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
299 \r
300                 ship.Slot = new[]\r
301                 {\r
302                     水中聴音機零式,\r
303                     三式指揮連絡機対潜\r
304                 };\r
305                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
306 \r
307                 ship.Slot = new[]\r
308                 {\r
309                     水中聴音機零式,\r
310                     カ号観測機\r
311                 };\r
312                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
313             }\r
314 \r
315             [DataTestMethod]\r
316             [DataRow("大鷹")]\r
317             [DataRow("Gambier Bay")]\r
318             [DataRow("Gambier Bay改")]\r
319             [DataRow("瑞鳳改二乙")]\r
320             [DataRow("神鷹")]\r
321             public void CheckEscortCarrierLevel65(string name)\r
322             {\r
323                 var ship = new ShipStatus\r
324                 {\r
325                     Spec = new ShipSpec\r
326                     {\r
327                         Name = name\r
328                     },\r
329                     Slot = new ItemStatus[0]\r
330                 };\r
331                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);\r
332 \r
333                 ship.AntiSubmarine = 64;\r
334                 ship.Slot = new[]\r
335                 {\r
336                     九七式艦攻九三一空\r
337                 };\r
338                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);\r
339 \r
340                 ship.AntiSubmarine = 65;\r
341                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
342 \r
343                 ship.Slot = new[]\r
344                 {\r
345                     カ号観測機\r
346                 };\r
347                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
348 \r
349                 ship.Slot = new[]\r
350                 {\r
351                     三式指揮連絡機対潜\r
352                 };\r
353                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
354             }\r
355 \r
356             [DataTestMethod]\r
357             [DataRow("大鷹")]\r
358             [DataRow("Gambier Bay")]\r
359             [DataRow("Gambier Bay改")]\r
360             [DataRow("瑞鳳改二乙")]\r
361             [DataRow("神鷹")]\r
362             public void CheckEscortCarrierLevel100(string name)\r
363             {\r
364                 var ship = new ShipStatus\r
365                 {\r
366                     Spec = new ShipSpec\r
367                     {\r
368                         Name = name\r
369                     },\r
370                     Slot = new ItemStatus[0]\r
371                 };\r
372                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);\r
373 \r
374                 ship.AntiSubmarine = 100;\r
375                 ship.Slot = new[]\r
376                 {\r
377                     水中聴音機零式,\r
378                     カ号観測機\r
379                 };\r
380                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);\r
381 \r
382                 ship.Slot = new[]\r
383                 {\r
384                     水中聴音機零式,\r
385                     流星改\r
386                 };\r
387                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
388 \r
389                 ship.AntiSubmarine = 99;\r
390                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);\r
391 \r
392                 ship.AntiSubmarine = 100;\r
393                 ship.Slot = new[]\r
394                 {\r
395                     水中聴音機零式,\r
396                     九九式艦爆\r
397                 };\r
398                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
399             }\r
400 \r
401             [TestMethod]\r
402             public void 瑞鳳改二()\r
403             {\r
404                 CheckEscortCarrierLevel50("瑞鳳改二");\r
405 \r
406                 var ship = new ShipStatus\r
407                 {\r
408                     Spec = new ShipSpec\r
409                     {\r
410                         Name = "瑞鳳改二"\r
411                     },\r
412                     Slot = new ItemStatus[0]\r
413                 };\r
414                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);\r
415 \r
416                 ship.AntiSubmarine = 65;\r
417                 ship.Slot = new[]\r
418                 {\r
419                     カ号観測機\r
420                 };\r
421                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);\r
422 \r
423                 ship.AntiSubmarine = 100;\r
424                 ship.Slot = new[]\r
425                 {\r
426                     水中聴音機零式,\r
427                     流星改\r
428                 };\r
429                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);\r
430             }\r
431 \r
432             [TestMethod]\r
433             public void 日向改二()\r
434             {\r
435                 var ship = new ShipStatus\r
436                 {\r
437                     Spec = new ShipSpec {Name = "日向改二"},\r
438                     Slot = new ItemStatus[0]\r
439                 };\r
440                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);\r
441 \r
442                 ship.Slot = new[] {カ号観測機};\r
443                 Assert.IsFalse(ship.CanOpeningAntiSubmarineAttack);\r
444 \r
445                 ship.Slot = new[] {カ号観測機, カ号観測機};\r
446                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
447 \r
448                 ship.Slot = new[] {S51J};\r
449                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
450 \r
451                 ship.Slot = new[] {S51J改};\r
452                 Assert.IsTrue(ship.CanOpeningAntiSubmarineAttack);\r
453             }\r
454         }\r
455 \r
456         [TestClass]\r
457         public class NightBattlePower\r
458         {\r
459             [TestMethod]\r
460             public void 甲標的の改修効果()\r
461             {\r
462                 var ship = new ShipStatus\r
463                 {\r
464                     Torpedo = 102,\r
465                     Slot = new[]\r
466                     {\r
467                         new ItemStatus\r
468                         {\r
469                             Id = 1,\r
470                             Spec = new ItemSpec\r
471                             {\r
472                                 Id = 309,\r
473                                 Name = "甲標的 丙型",\r
474                                 AntiSubmarine = 14,\r
475                                 Type = 22\r
476                             },\r
477                             Level = 4\r
478                         }\r
479                     }\r
480                 };\r
481                 Assert.AreEqual(104, ship.NightBattlePower);\r
482             }\r
483         }\r
484 \r
485         [TestClass]\r
486         public class AntiSubmarine\r
487         {\r
488             [TestMethod]\r
489             public void 軽空母()\r
490             {\r
491                 var ship = new ShipStatus\r
492                 {\r
493                     Fleet = new Fleet(null, 0, null),\r
494                     Firepower = 49,\r
495                     Spec = new ShipSpec\r
496                     {\r
497                         ShipType = 7\r
498                     },\r
499                     AntiSubmarine = 47 + 11,\r
500                     Slot = new[]\r
501                     {\r
502                         水中聴音機零式\r
503                     }\r
504                 };\r
505                 Assert.AreEqual(0, ship.EffectiveAntiSubmarine, "艦載機なし");\r
506 \r
507                 ship.AntiSubmarine = 47 + 18;\r
508                 ship.Slot = new[]\r
509                 {\r
510                     九七式艦攻九三一空,\r
511                     水中聴音機零式\r
512                 };\r
513                 Assert.AreEqual("48.7", ship.EffectiveAntiSubmarine.ToString("f1"), "艦載機あり");\r
514             }\r
515 \r
516             [TestMethod]\r
517             public void 水上機母艦()\r
518             {\r
519                 var ship = new ShipStatus\r
520                 {\r
521                     Fleet = new Fleet(null, 0, null),\r
522                     Firepower = 58,\r
523                     Spec = new ShipSpec\r
524                     {\r
525                         ShipType = 16\r
526                     },\r
527                     AntiSubmarine = 10,\r
528                     Slot = new[]\r
529                     {\r
530                         三式水中探信儀\r
531                     }\r
532                 };\r
533                 Assert.AreEqual(0, ship.EffectiveAntiSubmarine);\r
534 \r
535                 ship.AntiSubmarine = 19;\r
536                 ship.Slot = new[]\r
537                 {\r
538                     三式水中探信儀,\r
539                     カ号観測機\r
540                 };\r
541                 Assert.AreEqual("36.5", ship.EffectiveAntiSubmarine.ToString("f1"));\r
542             }\r
543 \r
544             [TestMethod]\r
545             public void 対潜装備一つ()\r
546             {\r
547                 var ship = new ShipStatus\r
548                 {\r
549                     Fleet = new Fleet(null, 0, null),\r
550                     Firepower = 50,\r
551                     Spec = new ShipSpec\r
552                     {\r
553                         ShipType = 2\r
554                     },\r
555                     AntiSubmarine = 63 + 10,\r
556                     Slot = new[]\r
557                     {\r
558                         三式水中探信儀\r
559                     }\r
560                 };\r
561                 Assert.AreEqual("43.9", ship.EffectiveAntiSubmarine.ToString("f1"));\r
562 \r
563                 ship.AntiSubmarine = 63 + 8;\r
564                 ship.Slot = new[]\r
565                 {\r
566                     三式爆雷投射機\r
567                 };\r
568                 Assert.AreEqual("40.9", ship.EffectiveAntiSubmarine.ToString("f1"));\r
569 \r
570                 ship.AntiSubmarine = 63 + 4;\r
571                 ship.Slot = new[]\r
572                 {\r
573                     九五式爆雷\r
574                 };\r
575                 Assert.AreEqual("34.9", ship.EffectiveAntiSubmarine.ToString("f1"));\r
576             }\r
577 \r
578             [TestMethod]\r
579             public void 爆雷投射機と爆雷()\r
580             {\r
581                 var ship = new ShipStatus\r
582                 {\r
583                     Fleet = new Fleet(null, 0, null),\r
584                     Firepower = 50,\r
585                     Spec = new ShipSpec\r
586                     {\r
587                         ShipType = 2\r
588                     },\r
589                     AntiSubmarine = 63 + 12,\r
590                     Slot = new[]\r
591                     {\r
592                         三式爆雷投射機,\r
593                         九五式爆雷\r
594                     }\r
595                 };\r
596                 Assert.AreEqual("51.6", ship.EffectiveAntiSubmarine.ToString("f1"));\r
597             }\r
598 \r
599             [TestMethod]\r
600             public void ソナーとそれ以外()\r
601             {\r
602                 var ship = new ShipStatus\r
603                 {\r
604                     Fleet = new Fleet(null, 0, null),\r
605                     Firepower = 50,\r
606                     Spec = new ShipSpec\r
607                     {\r
608                         ShipType = 2\r
609                     },\r
610                     AntiSubmarine = 63 + 18,\r
611                     Slot = new[]\r
612                     {\r
613                         三式水中探信儀,\r
614                         三式爆雷投射機\r
615                     }\r
616                 };\r
617                 Assert.AreEqual("64.3", ship.EffectiveAntiSubmarine.ToString("f1"));\r
618 \r
619                 ship.AntiSubmarine = 63 + 14;\r
620                 ship.Slot = new[]\r
621                 {\r
622                     三式水中探信儀,\r
623                     九五式爆雷\r
624                 };\r
625                 Assert.AreEqual("57.4", ship.EffectiveAntiSubmarine.ToString("f1"));\r
626 \r
627                 ship.AntiSubmarine = 63 + 25;\r
628                 ship.Slot = new[]\r
629                 {\r
630                     三式水中探信儀,\r
631                     試製15cm9連装対潜噴進砲\r
632                 };\r
633                 Assert.AreEqual("76.3", ship.EffectiveAntiSubmarine.ToString("f1"));\r
634             }\r
635 \r
636             [TestMethod]\r
637             public void 三種コンビネーション()\r
638             {\r
639                 var ship = new ShipStatus\r
640                 {\r
641                     Fleet = new Fleet(null, 0, null),\r
642                     Firepower = 50,\r
643                     Spec = new ShipSpec\r
644                     {\r
645                         ShipType = 2\r
646                     },\r
647                     AntiSubmarine = 63 + 22,\r
648                     Slot = new[]\r
649                     {\r
650                         三式水中探信儀,\r
651                         三式爆雷投射機,\r
652                         九五式爆雷\r
653                     }\r
654                 };\r
655                 Assert.AreEqual("88.9", ship.EffectiveAntiSubmarine.ToString("f1"));\r
656 \r
657                 ship.AntiSubmarine = 63 + 33;\r
658                 ship.Slot = new[]\r
659                 {\r
660                     三式水中探信儀,\r
661                     試製15cm9連装対潜噴進砲,\r
662                     九五式爆雷\r
663                 };\r
664                 Assert.AreEqual("83.8", ship.EffectiveAntiSubmarine.ToString("f1"), "三種コンビネーションにならない");\r
665             }\r
666 \r
667             [TestMethod]\r
668             public void 装備ボーナス()\r
669             {\r
670                 var ship = new ShipStatus\r
671                 {\r
672                     Fleet = new Fleet(null, 0, null),\r
673                     Firepower = 50,\r
674                     Spec = new ShipSpec\r
675                     {\r
676                         Name = "神風改"\r
677                     },\r
678                     AntiSubmarine = 50 + 10 + 3,\r
679                     Slot = new[]\r
680                     {\r
681                         三式水中探信儀\r
682                     }\r
683                 };\r
684                 Assert.AreEqual(50, ship.ShipAntiSubmarine);\r
685             }\r
686         }\r
687 \r
688         // ReSharper disable once InconsistentNaming\r
689         private static readonly ItemStatus A12cm30連装噴進砲改二 = new ItemStatus\r
690         {\r
691             Id = 1,\r
692             Spec = new ItemSpec\r
693             {\r
694                 Id = 274,\r
695                 Type = 21,\r
696                 IconType = 15,\r
697                 AntiAir = 8\r
698             }\r
699         };\r
700 \r
701         // ReSharper disable once InconsistentNaming\r
702         private static readonly ItemStatus A25mm三連装機銃集中配備 = new ItemStatus\r
703         {\r
704             Id = 1,\r
705             Spec = new ItemSpec\r
706             {\r
707                 Id = 131,\r
708                 Type = 21,\r
709                 IconType = 15,\r
710                 AntiAir = 9\r
711             }\r
712         };\r
713 \r
714         [TestClass]\r
715         public class AntiAirPropellantBarrageChance\r
716         {\r
717             private ShipStatus _ship;\r
718 \r
719             [TestInitialize]\r
720             public void Initialize()\r
721             {\r
722                 _ship = new ShipStatus\r
723                 {\r
724                     AntiAir = 93,\r
725                     Lucky = 46,\r
726                     Spec = new ShipSpec\r
727                     {\r
728                         ShipType = 4\r
729                     },\r
730                     Slot = new ItemStatus[0]\r
731                 };\r
732             }\r
733 \r
734             [TestMethod]\r
735             public void 噴進砲改二なし()\r
736             {\r
737                 Assert.AreEqual(0, _ship.AntiAirPropellantBarrageChance);\r
738             }\r
739 \r
740             [TestMethod]\r
741             public void 噴進砲改二1つ()\r
742             {\r
743                 _ship.AntiAir = 85 + 8;\r
744                 _ship.Slot = new[]\r
745                 {\r
746                     A12cm30連装噴進砲改二\r
747                 };\r
748                 Assert.AreEqual("61.7", _ship.AntiAirPropellantBarrageChance.ToString("f1"));\r
749             }\r
750 \r
751             [TestMethod]\r
752             public void 補強増設に噴進砲改二()\r
753             {\r
754                 _ship.AntiAir = 85 + 8;\r
755                 _ship.SlotEx = A12cm30連装噴進砲改二;\r
756                 Assert.AreEqual("61.7", _ship.AntiAirPropellantBarrageChance.ToString("f1"));\r
757             }\r
758 \r
759             [TestMethod]\r
760             public void 噴進砲改二2つ()\r
761             {\r
762                 _ship.AntiAir = 85 + 16;\r
763                 _ship.Slot = new[]\r
764                 {\r
765                     A12cm30連装噴進砲改二,\r
766                     A12cm30連装噴進砲改二\r
767                 };\r
768                 Assert.AreEqual("93.8", _ship.AntiAirPropellantBarrageChance.ToString("f1"));\r
769             }\r
770 \r
771             [TestMethod]\r
772             public void 噴進砲改二2つと機銃()\r
773             {\r
774                 _ship.AntiAir = 85 + 25;\r
775                 _ship.Slot = new[]\r
776                 {\r
777                     A12cm30連装噴進砲改二,\r
778                     A12cm30連装噴進砲改二,\r
779                     A25mm三連装機銃集中配備\r
780                 };\r
781                 Assert.AreEqual("113.0", _ship.AntiAirPropellantBarrageChance.ToString("f1"), "噴進砲改二2+機銃");\r
782             }\r
783 \r
784             [TestMethod]\r
785             public void 伊勢型()\r
786             {\r
787                 _ship.AntiAir = 85 + 8;\r
788                 _ship.Slot = new[]\r
789                 {\r
790                     A12cm30連装噴進砲改二\r
791                 };\r
792                 _ship.Spec.ShipClass = 2;\r
793                 Assert.AreEqual("86.7", _ship.AntiAirPropellantBarrageChance.ToString("f1"));\r
794             }\r
795         }\r
796     }\r
797 }