OSDN Git Service

南西諸島方面の海上護衛を強化せよ!のカウンターを追加する
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer.Test / QuestCounterTest.cs
1 // Copyright (C) 2019 Kazuhiro Fujieda <fujieda@users.osdn.me>\r
2 //\r
3 // Licensed under the Apache License, Version 2.0 (the "License");\r
4 // you may not use this file except in compliance with the License.\r
5 // You may obtain a copy of the License at\r
6 //\r
7 //    http://www.apache.org/licenses/LICENSE-2.0\r
8 //\r
9 // Unless required by applicable law or agreed to in writing, software\r
10 // distributed under the License is distributed on an "AS IS" BASIS,\r
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
12 // See the License for the specific language governing permissions and\r
13 // limitations under the License.\r
14 \r
15 using System;\r
16 using System.Linq;\r
17 using DynaJson;\r
18 using ExpressionToCodeLib;\r
19 using KancolleSniffer.Model;\r
20 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
21 \r
22 namespace KancolleSniffer.Test\r
23 {\r
24     [TestClass]\r
25     public class QuestCountTest\r
26     {\r
27         [TestMethod]\r
28         public void AdjustCount()\r
29         {\r
30             var count = new QuestCount\r
31             {\r
32                 Spec = new QuestSpec {Max = 7},\r
33                 Now = 3\r
34             };\r
35             count.AdjustCount(0);\r
36             Assert.AreEqual(3, count.Now);\r
37             count.AdjustCount(50);\r
38             Assert.AreEqual(4, count.Now);\r
39             count.AdjustCount(80);\r
40             Assert.AreEqual(6, count.Now);\r
41             count.AdjustCount(100);\r
42             Assert.AreEqual(7, count.Now);\r
43             count.Now = 14;\r
44             count.AdjustCount(100);\r
45             Assert.AreEqual(14, count.Now);\r
46             count.AdjustCount(80);\r
47             Assert.AreEqual(6, count.Now);\r
48             count.AdjustCount(50);\r
49             Assert.AreEqual(5, count.Now);\r
50             count.AdjustCount(0);\r
51             Assert.AreEqual(3, count.Now);\r
52         }\r
53 \r
54         [TestMethod]\r
55         public void AdjustCountWithShift()\r
56         {\r
57             var count = new QuestCount\r
58             {\r
59                 Spec = new QuestSpec {Max = 7, Shift = 1},\r
60                 Now = 3\r
61             };\r
62             count.AdjustCount(0);\r
63             Assert.AreEqual(2, count.Now);\r
64             count.AdjustCount(50);\r
65             Assert.AreEqual(3, count.Now);\r
66             count.AdjustCount(80);\r
67             Assert.AreEqual(6, count.Now);\r
68             count.AdjustCount(100);\r
69             Assert.AreEqual(7, count.Now);\r
70             count.Now = 14;\r
71             count.AdjustCount(100);\r
72             Assert.AreEqual(14, count.Now);\r
73             count.AdjustCount(80);\r
74             Assert.AreEqual(6, count.Now);\r
75             count.AdjustCount(50);\r
76             Assert.AreEqual(5, count.Now);\r
77             count.AdjustCount(0);\r
78             Assert.AreEqual(2, count.Now);\r
79         }\r
80 \r
81         [TestMethod]\r
82         public void AdjustCountMax3WithShift2()\r
83         {\r
84             var count = new QuestCount\r
85             {\r
86                 Spec = new QuestSpec {Max = 3, Shift = 2},\r
87                 Now = 0\r
88             };\r
89             count.AdjustCount(0);\r
90             Assert.AreEqual(0, count.Now);\r
91             count.AdjustCount(50);\r
92             Assert.AreEqual(1, count.Now);\r
93             count.AdjustCount(80);\r
94             Assert.AreEqual(2, count.Now);\r
95             count.AdjustCount(100);\r
96             Assert.AreEqual(3, count.Now);\r
97             count.Now = 4;\r
98             count.AdjustCount(100);\r
99             Assert.AreEqual(4, count.Now);\r
100             count.AdjustCount(80);\r
101             Assert.AreEqual(2, count.Now);\r
102             count.AdjustCount(50);\r
103             Assert.AreEqual(1, count.Now);\r
104             count.AdjustCount(0);\r
105             Assert.AreEqual(0, count.Now);\r
106         }\r
107 \r
108         [TestMethod]\r
109         public void AdjustCount80Percent()\r
110         {\r
111             var count = new QuestCount\r
112             {\r
113                 Spec = new QuestSpec()\r
114             };\r
115             for (var shift = 0; shift <= 1; shift++)\r
116             {\r
117                 for (var max = 2; max <= 6; max++)\r
118                 {\r
119                     count.Spec.Max = max;\r
120                     count.Spec.Shift = shift;\r
121                     count.Now = 1;\r
122                     count.AdjustCount(80);\r
123                     Assert.AreEqual(count.Spec.Max - 1, count.Now);\r
124                 }\r
125             }\r
126         }\r
127 \r
128         [TestMethod]\r
129         public void AdjustCountNowArray()\r
130         {\r
131             var count = new QuestCount\r
132             {\r
133                 Spec = new QuestSpec {MaxArray = new[] {36, 6, 24, 12}},\r
134                 NowArray = new[] {1, 2, 3, 4}\r
135             };\r
136             count.AdjustCount(50);\r
137             Assert.IsTrue(count.NowArray.SequenceEqual(new[] {1, 2, 3, 4}));\r
138             count.AdjustCount(100);\r
139             Assert.IsTrue(count.NowArray.SequenceEqual(new[] {36, 6, 24, 12}));\r
140             count.NowArray = new[] {38, 12, 19, 12};\r
141             count.AdjustCount(100);\r
142             Assert.IsTrue(count.NowArray.SequenceEqual(new[] {38, 12, 24, 12}));\r
143         }\r
144 \r
145         /// <summary>\r
146         /// カウンターを文字列表記にする\r
147         /// </summary>\r
148         [TestMethod]\r
149         public void ToStringTest()\r
150         {\r
151             var status = new Status\r
152             {\r
153                 QuestCountList = new[]\r
154                 {\r
155                     new QuestCount {Id = 211, Now = 2},\r
156                     new QuestCount {Id = 214, NowArray = new[] {20, 7, 10, 8}},\r
157                     new QuestCount {Id = 854, NowArray = new[] {2, 1, 1, 1}},\r
158                     new QuestCount {Id = 426, NowArray = new[] {1, 1, 1, 1}},\r
159                     new QuestCount {Id = 428, NowArray = new[] {1, 1, 1}},\r
160                     new QuestCount {Id = 873, NowArray = new[] {1, 1, 1}},\r
161                     new QuestCount {Id = 888, NowArray = new[] {1, 1, 1}},\r
162                     new QuestCount {Id = 688, NowArray = new[] {2, 1, 2, 1}},\r
163                     new QuestCount {Id = 893, NowArray = new[] {1, 1, 1, 1}},\r
164                     new QuestCount {Id = 894, NowArray = new[] {1, 1, 1, 1, 1}},\r
165                     new QuestCount {Id = 280, NowArray = new[] {1, 1, 1, 1}},\r
166                     new QuestCount {Id = 872, NowArray = new[] {1, 1, 1, 1}},\r
167                     new QuestCount {Id = 284, NowArray = new[] {1, 1, 1, 1}},\r
168                     new QuestCount {Id = 226, Now = 2},\r
169                     new QuestCount {Id = 436, NowArray = new[] {1, 0, 1, 1, 1}},\r
170                     new QuestCount {Id = 437, NowArray = new[] {1, 0, 1, 1}},\r
171                     new QuestCount {Id = 438, NowArray = new[] {1, 0, 1, 1}}\r
172                 }\r
173             };\r
174             var countList = new QuestCountList();\r
175             countList.SetMissionNames(new JsonObject(new[]\r
176             {\r
177                 new {api_id = 1, api_name = "練習航海"},\r
178                 new {api_id = 2, api_name = "長距離練習航海"},\r
179                 new {api_id = 3, api_name = "警備任務"},\r
180                 new {api_id = 4, api_name = "対潜警戒任務"},\r
181                 new {api_id = 5, api_name = "海上護衛任務"},\r
182                 new {api_id = 9, api_name = "タンカー護衛任務"},\r
183                 new {api_id = 10, api_name = "強行偵察任務"},\r
184                 new {api_id = 100, api_name = "兵站強化任務"},\r
185                 new {api_id = 101, api_name = "海峡警備行動"},\r
186                 new {api_id = 102, api_name = "長時間対潜警戒"},\r
187                 new {api_id = 104, api_name = "小笠原沖哨戒線"},\r
188                 new {api_id = 105, api_name = "小笠原沖戦闘哨戒"},\r
189                 new {api_id = 110, api_name = "南西方面航空偵察作戦"},\r
190                 new {api_id = 114, api_name = "南西諸島捜索撃滅戦"}\r
191             }));\r
192             new QuestInfo(countList).LoadState(status);\r
193             Assert.AreEqual("2/3", status.QuestCountList[0].ToString());\r
194             Assert.AreEqual("20/36 7/6 10/24 8/12", status.QuestCountList[1].ToString());\r
195             var z = status.QuestCountList[2];\r
196             Assert.AreEqual("2\u200a1\u200a1\u200a1", z.ToString());\r
197             Assert.AreEqual("2-4:2 6-1:1 6-3:1 6-4:1", z.ToToolTip());\r
198             z.NowArray = new[] {0, 0, 0, 0};\r
199             Assert.AreEqual("2-4:0 6-1:0 6-3:0 6-4:0", z.ToToolTip());\r
200             var q426 = status.QuestCountList[3];\r
201             Assert.AreEqual("1\u200a1\u200a1\u200a1", q426.ToString());\r
202             Assert.AreEqual("警備任務1 対潜警戒任務1 海上護衛任務1 強行偵察任務1", q426.ToToolTip());\r
203             var q428 = status.QuestCountList[4];\r
204             Assert.AreEqual("対潜警戒任務1 海峡警備行動1 長時間対潜警戒1", q428.ToToolTip());\r
205             q428.NowArray = new[] {0, 1, 0};\r
206             Assert.AreEqual("対潜警戒任務0 海峡警備行動1 長時間対潜警戒0", q428.ToToolTip());\r
207             var q873 = status.QuestCountList[5];\r
208             Assert.AreEqual("1\u200a1\u200a1", q873.ToString());\r
209             Assert.AreEqual("3-1:1 3-2:1 3-3:1", q873.ToToolTip());\r
210             var q888 = status.QuestCountList[6];\r
211             Assert.AreEqual("1\u200a1\u200a1", q888.ToString());\r
212             Assert.AreEqual("5-1:1 5-3:1 5-4:1", q888.ToToolTip());\r
213             var q688 = status.QuestCountList[7];\r
214             Assert.AreEqual("艦戦2 艦爆1 艦攻2 水偵1", q688.ToToolTip());\r
215             var q893 = status.QuestCountList[8];\r
216             Assert.AreEqual("1-5:1 7-1:1 7-2G:1 7-2M:1", q893.ToToolTip());\r
217             var q894 = status.QuestCountList[9];\r
218             Assert.AreEqual("1\u200a1\u200a1\u200a1\u200a1", q894.ToString());\r
219             Assert.AreEqual("1-3:1 1-4:1 2-1:1 2-2:1 2-3:1", q894.ToToolTip());\r
220             var q280 = status.QuestCountList[10];\r
221             Assert.AreEqual("1\u200a1\u200a1\u200a1", q280.ToString());\r
222             Assert.AreEqual("1-2:1 1-3:1 1-4:1 2-1:1", q280.ToToolTip());\r
223             var q872 = status.QuestCountList.First(q => q.Id == 872);\r
224             Assert.AreEqual("1\u200a1\u200a1\u200a1", q872.ToString());\r
225             Assert.AreEqual("7-2M:1 5-5:1 6-2:1 6-5:1", q872.ToToolTip());\r
226             var q284 = status.QuestCountList.First(q => q.Id == 284);\r
227             Assert.AreEqual("1\u200a1\u200a1\u200a1", q284.ToString());\r
228             Assert.AreEqual("1-4:1 2-1:1 2-2:1 2-3:1", q284.ToToolTip());\r
229             var q226 = status.QuestCountList.First(q => q.Id == 226);\r
230             Assert.AreEqual("2/5", q226.ToString());\r
231             Assert.AreEqual("", q226.ToToolTip());\r
232             var q436 = status.QuestCountList.First(q => q.Id == 436);\r
233             Assert.AreEqual("1\u200a0\u200a1\u200a1\u200a1", q436.ToString());\r
234             Assert.AreEqual("練習航海1 長距離練習航海0 警備任務1 対潜警戒任務1 強行偵察任務1", q436.ToToolTip());\r
235             var q437 = status.QuestCountList.First(q => q.Id == 437);\r
236             Assert.AreEqual("1\u200a0\u200a1\u200a1", q437.ToString());\r
237             Assert.AreEqual("対潜警戒任務1 小笠原沖哨戒線0 小笠原沖戦闘哨戒1 南西方面航空偵察作戦1", q437.ToToolTip());\r
238             var q438 = status.QuestCountList.First(q => q.Id == 438);\r
239             Assert.AreEqual("1\u200a0\u200a1\u200a1", q438.ToString());\r
240             Assert.AreEqual("対潜警戒任務1 兵站強化任務0 タンカー護衛任務1 南西諸島捜索撃滅戦1", q438.ToToolTip());\r
241         }\r
242     }\r
243 \r
244     [TestClass]\r
245     public class QuestCounterTest\r
246     {\r
247         private JsonObject Js(object obj) => new JsonObject(obj);\r
248 \r
249         private object CreateQuestList(int[] ids) => Js(new\r
250         {\r
251             api_list =\r
252                 ids.Select(id => new\r
253                 {\r
254                     api_no = id,\r
255                     api_category = id / 100,\r
256                     api_type = 1,\r
257                     api_state = 2,\r
258                     api_title = "",\r
259                     api_detail = "",\r
260                     api_get_material = new int[0],\r
261                     api_progress_flag = 0\r
262                 })\r
263         });\r
264 \r
265         private QuestCount InjectQuest(int id)\r
266         {\r
267             InjectQuestList(new[] {id});\r
268             return _questInfo.Quests[0].Count;\r
269         }\r
270 \r
271         private void InjectQuestList(int[] ids)\r
272         {\r
273             _questInfo.InspectQuestList("api_tab_id=0", CreateQuestList(ids));\r
274         }\r
275 \r
276         private void InjectMapStart(int map, int eventId)\r
277         {\r
278             _questCounter.InspectMapStart(CreateMap(map, eventId));\r
279         }\r
280 \r
281         private void InjectMapNext(int map, int eventId)\r
282         {\r
283             _questCounter.InspectMapNext(CreateMap(map, eventId));\r
284         }\r
285 \r
286         private object CreateMap(int map, int eventId)\r
287         {\r
288             return Js(new\r
289             {\r
290                 api_maparea_id = map / 10,\r
291                 api_mapinfo_no = map % 10,\r
292                 api_event_id = eventId\r
293             });\r
294         }\r
295 \r
296         private void InjectBattleResult(string result)\r
297         {\r
298             _questCounter.InspectBattleResult(Js(new {api_win_rank = result}));\r
299         }\r
300 \r
301         private void InjectPracticeResult(string result)\r
302         {\r
303             _questCounter.InspectPracticeResult(Js(new {api_win_rank = result}));\r
304         }\r
305 \r
306         private ShipStatus[] ShipStatusList(params int[] shipTypes)\r
307         {\r
308             return shipTypes.Select(sType => ShipStatus(sType)).ToArray();\r
309         }\r
310 \r
311         private ShipStatus ShipStatus(int shipType, int specId = 0)\r
312         {\r
313             return new ShipStatus {NowHp = 1, Spec = new ShipSpec {Id = specId, ShipType = shipType}};\r
314         }\r
315 \r
316         private ShipStatus ShipStatus(int shipType, int shipClass, int specId)\r
317         {\r
318             return new ShipStatus\r
319                 {NowHp = 1, Spec = new ShipSpec {Id = specId, ShipType = shipType, ShipClass = shipClass}};\r
320         }\r
321 \r
322         private ShipStatus ShipStatus(string name)\r
323         {\r
324             return new ShipStatus {NowHp = 1, Spec = new ShipSpec {Name = name}};\r
325         }\r
326 \r
327 \r
328         private BattleInfo _battleInfo;\r
329         private ItemInfo _itemInfo;\r
330         private QuestInfo _questInfo;\r
331         private QuestCounter _questCounter;\r
332 \r
333         [TestInitialize]\r
334         public void Initialize()\r
335         {\r
336             _battleInfo = new BattleInfo(null, null, null);\r
337             _itemInfo = new ItemInfo(new ItemMaster(), new ItemInventory());\r
338             _questInfo = new QuestInfo(new QuestCountList(), () => new DateTime(2015, 1, 1));\r
339             _questCounter = new QuestCounter(_questInfo, _itemInfo, _battleInfo);\r
340         }\r
341 \r
342         /// <summary>\r
343         /// 201: 敵艦隊を撃滅せよ!\r
344         /// 210: 敵艦隊を10回邀撃せよ!\r
345         /// 214: あ号\r
346         /// 216: 敵艦隊主力を撃滅せよ!\r
347         /// </summary>\r
348         [TestMethod]\r
349         public void BattleResult_201_216_210_214()\r
350         {\r
351             InjectQuestList(new[] {201, 216, 210, 214});\r
352 \r
353             InjectMapStart(11, 4);\r
354             var counts = _questInfo.Quests.Select(q => q.Count).ToArray();\r
355             // 出撃カウント\r
356             Assert.AreEqual(214, counts[2].Id);\r
357             Assert.AreEqual(1, counts[2].NowArray[0]);\r
358             InjectBattleResult("S");\r
359             // 道中S勝利\r
360             PAssert.That(() => counts.Select(c => new {c.Id, c.Now}).SequenceEqual(new[]\r
361             {\r
362                 new {Id = 201, Now = 1}, new {Id = 210, Now = 1},\r
363                 new {Id = 214, Now = 0}, new {Id = 216, Now = 1}\r
364             }));\r
365             PAssert.That(() => counts[2].NowArray.SequenceEqual(new[] {1, 1, 0, 0}));\r
366 \r
367             InjectMapNext(11, 5);\r
368             // ボスB勝利\r
369             InjectBattleResult("B");\r
370             PAssert.That(() => counts.Select(c => new {c.Id, c.Now}).SequenceEqual(new[]\r
371             {\r
372                 new {Id = 201, Now = 2}, new {Id = 210, Now = 2},\r
373                 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}\r
374             }));\r
375             // ボス敗北\r
376             PAssert.That(() => counts[2].NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
377             InjectBattleResult("C");\r
378             PAssert.That(() => counts.Select(c => new {c.Id, c.Now}).SequenceEqual(new[]\r
379             {\r
380                 new {Id = 201, Now = 2}, new {Id = 210, Now = 3},\r
381                 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}\r
382             }));\r
383             PAssert.That(() => counts[2].NowArray.SequenceEqual(new[] {1, 1, 2, 1}));\r
384 \r
385             // 1-6 ゴール\r
386             InjectMapNext(16,8);\r
387             Assert.AreEqual(2, counts[0].Now);\r
388         }\r
389 \r
390         /// <summary>\r
391         /// 211: 敵空母を3隻撃沈せよ!\r
392         /// 212: 敵輸送船団を叩け!\r
393         /// 213: 海上通商破壊作戦\r
394         /// 218: 敵補給艦を3隻撃沈せよ!\r
395         /// </summary>\r
396         [TestMethod]\r
397         public void BattleResult_211_212_213_218_220_221()\r
398         {\r
399             InjectQuestList(new[] {211, 212, 213, 218, 220, 221});\r
400             // 補給艦1隻と空母2隻\r
401             _battleInfo.InjectResultStatus(new ShipStatus[0], new ShipStatus[0], new[]\r
402             {\r
403                 new ShipStatus {NowHp = 0, MaxHp = 130, Spec = new ShipSpec {Id = 1558, ShipType = 15}},\r
404                 new ShipStatus {NowHp = 0, MaxHp = 90, Spec = new ShipSpec {Id = 1543, ShipType = 8}},\r
405                 new ShipStatus {NowHp = 0, MaxHp = 90, Spec = new ShipSpec {Id = 1543, ShipType = 8}},\r
406                 new ShipStatus {NowHp = 0, MaxHp = 96, Spec = new ShipSpec {Id = 1528, ShipType = 11}},\r
407                 new ShipStatus {NowHp = 0, MaxHp = 70, Spec = new ShipSpec {Id = 1523, ShipType = 7}},\r
408                 new ShipStatus {NowHp = 1, MaxHp = 70, Spec = new ShipSpec {Id = 1523, ShipType = 7}}\r
409             }, new ShipStatus[0]);\r
410             InjectBattleResult("A");\r
411             PAssert.That(() =>\r
412                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
413                     .SequenceEqual(new[]\r
414                     {\r
415                         new {Id = 211, Now = 2}, new {Id = 212, Now = 1}, new {Id = 213, Now = 1},\r
416                         new {Id = 218, Now = 1}, new {Id = 220, Now = 2}, new {Id = 221, Now = 1}\r
417                     }));\r
418         }\r
419 \r
420         /// <summary>\r
421         /// 228: 海上護衛戦\r
422         /// 230: 敵潜水艦を制圧せよ!\r
423         /// </summary>\r
424         [TestMethod]\r
425         public void BattleResult_228_230()\r
426         {\r
427             InjectQuestList(new[] {228, 230});\r
428             // 潜水艦3\r
429             _battleInfo.InjectResultStatus(new ShipStatus[0], new ShipStatus[0], new[]\r
430             {\r
431                 new ShipStatus {NowHp = 0, MaxHp = 27, Spec = new ShipSpec {Id = 1532, ShipType = 13}},\r
432                 new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}},\r
433                 new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}}\r
434             }, new ShipStatus[0]);\r
435             InjectBattleResult("S");\r
436             PAssert.That(() =>\r
437                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
438                     .SequenceEqual(new[]\r
439                     {\r
440                         new {Id = 228, Now = 3}, new {Id = 230, Now = 3}\r
441                     }));\r
442         }\r
443 \r
444         /// <summary>\r
445         /// 226: 南西諸島海域の制海権を握れ!\r
446         /// </summary>\r
447         [TestMethod]\r
448         public void BattleResult_226()\r
449         {\r
450             var count = InjectQuest(226);\r
451 \r
452             InjectMapStart(21, 4);\r
453             InjectBattleResult("S");\r
454             Assert.AreEqual(0, count.Now);\r
455 \r
456             InjectMapNext(21, 5);\r
457             InjectBattleResult("S");\r
458             Assert.AreEqual(1, count.Now);\r
459             InjectBattleResult("B");\r
460             Assert.AreEqual(2, count.Now);\r
461         }\r
462 \r
463         /// <summary>\r
464         /// // 243: 南方海域珊瑚諸島沖の制空権を握れ!\r
465         /// </summary>\r
466         [TestMethod]\r
467         public void BattleResult_243()\r
468         {\r
469             var count = InjectQuest(243);\r
470 \r
471             InjectMapNext(52, 4);\r
472             InjectBattleResult("S");\r
473             Assert.AreEqual(0, count.Now);\r
474 \r
475             InjectMapNext(52, 5);\r
476             InjectBattleResult("A");\r
477             Assert.AreEqual(0, count.Now);\r
478             InjectBattleResult("S");\r
479             Assert.AreEqual(1, count.Now);\r
480         }\r
481 \r
482         /// <summary>\r
483         /// 249: 「第五戦隊」出撃せよ!\r
484         /// </summary>\r
485         [TestMethod]\r
486         public void BattleResult_249()\r
487         {\r
488             var count = InjectQuest(249);\r
489 \r
490             _battleInfo.InjectResultStatus(new[]\r
491             {\r
492                 ShipStatus("妙高改二"), ShipStatus("那智改二"), ShipStatus("羽黒改二"),\r
493                 ShipStatus("足柄改二"), ShipStatus("筑摩改二"), ShipStatus("利根改二")\r
494             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
495 \r
496             InjectMapNext(25, 4);\r
497             InjectBattleResult("S");\r
498             Assert.AreEqual(0, count.Now);\r
499 \r
500             InjectMapNext(25, 5);\r
501             InjectBattleResult("A");\r
502             Assert.AreEqual(0, count.Now);\r
503             InjectBattleResult("S");\r
504             Assert.AreEqual(1, count.Now);\r
505 \r
506             _battleInfo.Result.Friend.Main[3].NowHp = 0;\r
507             InjectBattleResult("S");\r
508             Assert.AreEqual(2, count.Now, "足柄改二轟沈");\r
509 \r
510             _battleInfo.Result.Friend.Main[1].NowHp = 0;\r
511             InjectBattleResult("S");\r
512             Assert.AreEqual(2, count.Now, "那智改二轟沈");\r
513         }\r
514 \r
515         /// <summary>\r
516         /// 257: 「水雷戦隊」南西へ!\r
517         /// </summary>\r
518         [TestMethod]\r
519         public void BattleResult_257()\r
520         {\r
521             var count = InjectQuest(257);\r
522 \r
523             _battleInfo.InjectResultStatus(\r
524                 ShipStatusList(3, 2, 2, 2, 2, 2), new ShipStatus[0],\r
525                 new ShipStatus[0], new ShipStatus[0]);\r
526 \r
527             InjectMapNext(14, 4);\r
528             InjectBattleResult("S");\r
529             Assert.AreEqual(0, count.Now);\r
530 \r
531             InjectMapNext(14, 5);\r
532             InjectBattleResult("A");\r
533             Assert.AreEqual(0, count.Now);\r
534             InjectBattleResult("S");\r
535             Assert.AreEqual(1, count.Now);\r
536             _questInfo.Quests[0].Count.Now = 0;\r
537 \r
538             _battleInfo.Result.Friend.Main[0].NowHp = 0;\r
539             InjectBattleResult("S");\r
540             Assert.AreEqual(0, count.Now, "軽巡轟沈");\r
541             _battleInfo.Result.Friend.Main[0].NowHp = 1;\r
542 \r
543             _battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;\r
544             _battleInfo.Result.Friend.Main[1].Spec.ShipType = 3;\r
545             InjectBattleResult("S");\r
546             Assert.AreEqual(0, count.Now, "旗艦が駆逐");\r
547             _battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;\r
548 \r
549             _battleInfo.Result.Friend.Main[2].Spec.ShipType = 3;\r
550             _battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;\r
551             InjectBattleResult("S");\r
552             Assert.AreEqual(0, count.Now, "軽巡が4隻");\r
553 \r
554             _battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;\r
555             _battleInfo.Result.Friend.Main[3].Spec.ShipType = 4;\r
556             InjectBattleResult("S");\r
557             Assert.AreEqual(0, count.Now, "駆逐軽巡以外");\r
558         }\r
559 \r
560         /// <summary>\r
561         /// 257: 「水上打撃部隊」南方へ!\r
562         /// </summary>\r
563         [TestMethod]\r
564         public void BattleResult_259()\r
565         {\r
566             var count = InjectQuest(259);\r
567 \r
568             var org = new[]\r
569             {\r
570                 ShipStatus(3, 52, 321), ShipStatus(9, 19, 276), ShipStatus(10, 26, 411),\r
571                 ShipStatus(10, 26, 412), ShipStatus(5, 29, 193), ShipStatus(5, 29, 194)\r
572             };\r
573             _battleInfo.InjectResultStatus(\r
574                 org.ToArray(), new ShipStatus[0],\r
575                 new ShipStatus[0], new ShipStatus[0]);\r
576 \r
577             InjectMapNext(51, 4);\r
578             InjectBattleResult("S");\r
579             Assert.AreEqual(0, count.Now);\r
580 \r
581             InjectMapNext(51, 5);\r
582             InjectBattleResult("A");\r
583             Assert.AreEqual(0, count.Now);\r
584             InjectBattleResult("S");\r
585             Assert.AreEqual(1, count.Now);\r
586             _questInfo.Quests[0].Count.Now = 0;\r
587 \r
588             _battleInfo.Result.Friend.Main[0].NowHp = 0;\r
589             InjectBattleResult("S");\r
590             Assert.AreEqual(0, count.Now, "軽巡轟沈");\r
591             _battleInfo.Result.Friend.Main[0].NowHp = 1;\r
592 \r
593             _battleInfo.Result.Friend.Main[4] = ShipStatus(9, 37, 136);\r
594             InjectBattleResult("S");\r
595             Assert.AreEqual(0, count.Now, "戦艦4隻");\r
596             _battleInfo.Result.Friend.Main[4] = org[4];\r
597 \r
598             _battleInfo.Result.Friend.Main[0] = ShipStatus(4, 4, 58);\r
599             InjectBattleResult("S");\r
600             Assert.AreEqual(0, count.Now, "軽巡なし");\r
601             _battleInfo.Result.Friend.Main[0] = org[0];\r
602 \r
603             _battleInfo.Result.Friend.Main[2] = ShipStatus(10, 2, 553);\r
604             InjectBattleResult("S");\r
605             Assert.AreEqual(1, count.Now, "伊勢改二");\r
606         }\r
607 \r
608         /// <summary>\r
609         /// 264: 「空母機動部隊」西へ!\r
610         /// </summary>\r
611         [TestMethod]\r
612         public void BattleResult_264()\r
613         {\r
614             var count = InjectQuest(264);\r
615 \r
616             _battleInfo.InjectResultStatus(\r
617                 ShipStatusList(7, 11, 3, 3, 2, 2), new ShipStatus[0],\r
618                 new ShipStatus[0], new ShipStatus[0]);\r
619 \r
620             InjectMapNext(42, 4);\r
621             InjectBattleResult("S");\r
622             Assert.AreEqual(0, count.Now);\r
623 \r
624             InjectMapNext(42, 5);\r
625             InjectBattleResult("A");\r
626             Assert.AreEqual(0, count.Now);\r
627             InjectBattleResult("S");\r
628             Assert.AreEqual(1, count.Now);\r
629 \r
630             _battleInfo.Result.Friend.Main[0].NowHp = 0;\r
631             InjectBattleResult("S");\r
632             Assert.AreEqual(1, count.Now, "轟沈あり");\r
633         }\r
634 \r
635         /// <summary>\r
636         /// 266: 「水上反撃部隊」突入せよ!\r
637         /// </summary>\r
638         [TestMethod]\r
639         public void BattleResult_266()\r
640         {\r
641             var count = InjectQuest(266);\r
642 \r
643             _battleInfo.InjectResultStatus(\r
644                 ShipStatusList(2, 5, 3, 2, 2, 2), new ShipStatus[0],\r
645                 new ShipStatus[0], new ShipStatus[0]);\r
646 \r
647             InjectMapNext(25, 4);\r
648             InjectBattleResult("S");\r
649             Assert.AreEqual(0, count.Now);\r
650 \r
651             InjectMapNext(25, 5);\r
652             InjectBattleResult("A");\r
653             Assert.AreEqual(0, count.Now);\r
654             InjectBattleResult("S");\r
655             Assert.AreEqual(1, count.Now);\r
656 \r
657             _battleInfo.Result.Friend.Main[1].NowHp = 0;\r
658             InjectBattleResult("S");\r
659             Assert.AreEqual(1, count.Now, "轟沈あり");\r
660             _battleInfo.Result.Friend.Main[1].NowHp = 1;\r
661 \r
662             _battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;\r
663             _battleInfo.Result.Friend.Main[2].Spec.ShipType = 2;\r
664             InjectBattleResult("S");\r
665             Assert.AreEqual(1, count.Now, "旗艦が軽巡");\r
666             _battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;\r
667             _battleInfo.Result.Friend.Main[2].Spec.ShipType = 3;\r
668 \r
669             _battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;\r
670             InjectBattleResult("S");\r
671             Assert.AreEqual(1, count.Now, "軽巡が2隻");\r
672         }\r
673 \r
674         /// <summary>\r
675         /// 280: 兵站線確保!海上警備を強化実施せよ!\r
676         /// </summary>\r
677         [TestMethod]\r
678         public void BattleResult_280()\r
679         {\r
680             var count = InjectQuest(280);\r
681 \r
682             _battleInfo.InjectResultStatus(\r
683                 ShipStatusList(7, 2, 1, 1, 8, 8), new ShipStatus[0],\r
684                 new ShipStatus[0], new ShipStatus[0]);\r
685 \r
686             InjectMapNext(12, 4);\r
687             InjectBattleResult("S");\r
688             InjectMapNext(12, 5);\r
689             InjectBattleResult("A");\r
690             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}));\r
691 \r
692             InjectBattleResult("S");\r
693             InjectMapNext(13, 5);\r
694             InjectBattleResult("S");\r
695             InjectMapNext(14, 5);\r
696             InjectBattleResult("S");\r
697             InjectMapNext(21, 5);\r
698             InjectBattleResult("S");\r
699             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
700 \r
701             _battleInfo.Result.Friend.Main = ShipStatusList(7, 1, 1, 8, 8, 8);\r
702             InjectBattleResult("S");\r
703             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
704 \r
705             _battleInfo.Result.Friend.Main = ShipStatusList(8, 1, 1, 1, 8, 8);\r
706             InjectBattleResult("S");\r
707             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
708 \r
709             _battleInfo.Result.Friend.Main = ShipStatusList(3, 2, 1, 1, 8, 8);\r
710             InjectBattleResult("S");\r
711             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 2}));\r
712 \r
713             _battleInfo.Result.Friend.Main = ShipStatusList(2, 4, 2, 1, 8, 8);\r
714             InjectBattleResult("S");\r
715             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 3}));\r
716 \r
717             _battleInfo.Result.Friend.Main = ShipStatusList(2, 2, 21, 2, 8, 8);\r
718             InjectBattleResult("S");\r
719             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 4}));\r
720         }\r
721 \r
722         /// <summary>\r
723         /// 284: 南西諸島方面「海上警備行動」発令!\r
724         /// </summary>\r
725         [TestMethod]\r
726         public void BattleResult_284()\r
727         {\r
728             var count = InjectQuest(284);\r
729 \r
730             _battleInfo.InjectResultStatus(\r
731                 ShipStatusList(7, 2, 1, 1, 8, 8), new ShipStatus[0],\r
732                 new ShipStatus[0], new ShipStatus[0]);\r
733 \r
734             InjectMapNext(14, 4);\r
735             InjectBattleResult("S");\r
736             InjectMapNext(14, 5);\r
737             InjectBattleResult("A");\r
738             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}));\r
739 \r
740             InjectBattleResult("S");\r
741             InjectMapNext(21, 5);\r
742             InjectBattleResult("S");\r
743             InjectMapNext(22, 5);\r
744             InjectBattleResult("S");\r
745             InjectMapNext(23, 5);\r
746             InjectBattleResult("S");\r
747             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
748 \r
749             // 艦種チェックは280と共通\r
750         }\r
751 \r
752         /// <summary>\r
753         /// 822: 沖ノ島海域迎撃戦\r
754         /// 854: 戦果拡張任務!「Z作戦」前段作戦\r
755         /// </summary>\r
756         [TestMethod]\r
757         public void BattleResult_822_854()\r
758         {\r
759             InjectQuestList(new[] {822, 854});\r
760             var c822 = _questInfo.Quests[0].Count;\r
761             var c854 = _questInfo.Quests[1].Count;\r
762 \r
763             InjectMapNext(24, 4);\r
764             InjectBattleResult("S");\r
765 \r
766             PAssert.That(() => c854.NowArray.SequenceEqual(new[] {0, 0, 0, 0}));\r
767             Assert.AreEqual(0, c822.Now);\r
768 \r
769             InjectMapNext(24, 5);\r
770             InjectBattleResult("A");\r
771             InjectMapNext(61, 5);\r
772             InjectBattleResult("A");\r
773             InjectMapNext(63, 5);\r
774             InjectBattleResult("A");\r
775             InjectMapNext(64, 5);\r
776             InjectBattleResult("S");\r
777             PAssert.That(() => c854.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
778             Assert.AreEqual(0, c822.Now);\r
779             InjectMapNext(24, 5);\r
780             InjectBattleResult("S");\r
781             PAssert.That(() => c854.NowArray.SequenceEqual(new[] {2, 1, 1, 1}));\r
782             Assert.AreEqual(1, c822.Now);\r
783         }\r
784 \r
785         /// <summary>\r
786         /// 845: 発令!「西方海域作戦」\r
787         /// </summary>\r
788         [TestMethod]\r
789         public void BattleResult_845()\r
790         {\r
791             var count = InjectQuest(845);\r
792 \r
793             InjectMapNext(41, 4);\r
794             InjectBattleResult("S");\r
795             InjectMapNext(41, 5);\r
796             InjectBattleResult("A");\r
797             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}));\r
798 \r
799             InjectMapNext(41, 5);\r
800             InjectBattleResult("S");\r
801             InjectMapNext(42, 5);\r
802             InjectBattleResult("S");\r
803             InjectMapNext(43, 5);\r
804             InjectBattleResult("S");\r
805             InjectMapNext(44, 5);\r
806             InjectBattleResult("S");\r
807             InjectMapNext(45, 5);\r
808             InjectBattleResult("S");\r
809             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}));\r
810         }\r
811 \r
812         /// <summary>\r
813         /// 861: 強行輸送艦隊、抜錨!\r
814         /// </summary>\r
815         [TestMethod]\r
816         public void MapNext_861()\r
817         {\r
818             var count = InjectQuest(861);\r
819 \r
820             _battleInfo.InjectResultStatus(\r
821                 ShipStatusList(10, 22, 2, 2, 2, 2), new ShipStatus[0],\r
822                 new ShipStatus[0], new ShipStatus[0]);\r
823 \r
824             InjectMapNext(16, 4);\r
825             Assert.AreEqual(0, count.Now);\r
826 \r
827             InjectMapNext(16, 8);\r
828             Assert.AreEqual(1, count.Now);\r
829 \r
830             _battleInfo.Result.Friend.Main[1].NowHp = 0;\r
831             InjectMapNext(16, 8);\r
832             Assert.AreEqual(1, count.Now, "轟沈あり");\r
833             _battleInfo.Result.Friend.Main[1].NowHp = 1;\r
834 \r
835             _battleInfo.Result.Friend.Main[2].Spec.ShipType = 10;\r
836             InjectMapNext(16, 8);\r
837             Assert.AreEqual(1, count.Now, "補給・航戦が3隻");\r
838         }\r
839 \r
840         /// <summary>\r
841         /// 862: 前線の航空偵察を実施せよ!\r
842         /// </summary>\r
843         [TestMethod]\r
844         public void BattleResult_862()\r
845         {\r
846             var count = InjectQuest(862);\r
847 \r
848             _battleInfo.InjectResultStatus(\r
849                 ShipStatusList(2, 3, 3, 2, 2, 16), new ShipStatus[0],\r
850                 new ShipStatus[0], new ShipStatus[0]);\r
851 \r
852             InjectMapNext(63, 4);\r
853             InjectBattleResult("A");\r
854             Assert.AreEqual(0, count.Now);\r
855 \r
856             InjectMapNext(63, 5);\r
857             InjectBattleResult("B");\r
858             Assert.AreEqual(0, count.Now);\r
859             InjectBattleResult("A");\r
860             Assert.AreEqual(1, count.Now);\r
861 \r
862             _battleInfo.Result.Friend.Main[1].NowHp = 0;\r
863             InjectBattleResult("A");\r
864             Assert.AreEqual(1, count.Now, "轟沈あり");\r
865             _battleInfo.Result.Friend.Main[1].NowHp = 1;\r
866 \r
867             _battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;\r
868             _battleInfo.Result.Friend.Main[4].Spec.ShipType = 16;\r
869             InjectBattleResult("A");\r
870             Assert.AreEqual(2, count.Now, "軽巡3隻水母2隻");\r
871         }\r
872 \r
873         /// <summary>\r
874         /// 872: 戦果拡張任務!「Z作戦」後段作戦\r
875         /// </summary>\r
876         [TestMethod]\r
877         public void BattleResult_872()\r
878         {\r
879             var count = InjectQuest(872);\r
880 \r
881             InjectMapNext(55, 4);\r
882             InjectBattleResult("A");\r
883             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}));\r
884             InjectBattleResult("S");\r
885             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}));\r
886             InjectMapNext(55, 5);\r
887             InjectBattleResult("S");\r
888             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 1, 0, 0}));\r
889 \r
890             InjectMapNext(62, 5);\r
891             InjectBattleResult("S");\r
892             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 1, 1, 0}));\r
893             InjectMapNext(65, 5);\r
894             InjectBattleResult("S");\r
895             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 1, 1, 1}));\r
896             _questCounter.InspectMapNext(Js(new\r
897             {\r
898                 api_maparea_id = 7,\r
899                 api_mapinfo_no = 2,\r
900                 api_no = 15,\r
901                 api_event_id = 5\r
902             }));\r
903             InjectBattleResult("S");\r
904             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "7-2M");\r
905         }\r
906 \r
907         /// <summary>\r
908         /// 873: 北方海域警備を実施せよ!\r
909         /// </summary>\r
910         [TestMethod]\r
911         public void BattleResult_873()\r
912         {\r
913             var count = InjectQuest(873);\r
914 \r
915             _battleInfo.InjectResultStatus(\r
916                 ShipStatusList(3, 2, 2, 2, 2, 2), new ShipStatus[0],\r
917                 new ShipStatus[0], new ShipStatus[0]);\r
918 \r
919             InjectMapNext(31, 4);\r
920             InjectBattleResult("A");\r
921             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0}));\r
922 \r
923             InjectMapNext(31, 5);\r
924             InjectBattleResult("B");\r
925             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0}));\r
926             InjectBattleResult("A");\r
927             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0}));\r
928 \r
929             _battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;\r
930             InjectBattleResult("A");\r
931             Assert.AreEqual(1, _questInfo.Quests[0].Count.NowArray[0], "軽巡なし");\r
932             _battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;\r
933 \r
934             InjectMapNext(32, 5);\r
935             InjectBattleResult("A");\r
936             InjectMapNext(33, 5);\r
937             InjectBattleResult("A");\r
938             Assert.IsTrue(_questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
939         }\r
940 \r
941         /// <summary>\r
942         /// 875: 精鋭「三一駆」、鉄底海域に突入せよ!\r
943         /// </summary>\r
944         [TestMethod]\r
945         public void BattleResult_875()\r
946         {\r
947             var count = InjectQuest(875);\r
948 \r
949             _battleInfo.InjectResultStatus(new[]\r
950             {\r
951                 ShipStatus("長波改二"), ShipStatus("Iowa改"), ShipStatus("Saratoga Mk.II"),\r
952                 ShipStatus("瑞鶴改二甲"), ShipStatus("望月改"), ShipStatus("朝霜改")\r
953             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
954 \r
955             InjectMapNext(54, 4);\r
956             InjectBattleResult("S");\r
957             Assert.AreEqual(0, count.Now);\r
958 \r
959             InjectMapNext(54, 5);\r
960             InjectBattleResult("A");\r
961             Assert.AreEqual(0, count.Now);\r
962             InjectBattleResult("S");\r
963             Assert.AreEqual(1, count.Now);\r
964 \r
965             _battleInfo.Result.Friend.Main[5].NowHp = 0;\r
966             InjectBattleResult("S");\r
967             Assert.AreEqual(1, count.Now, "朝霜改轟沈");\r
968             _battleInfo.Result.Friend.Main[5].NowHp = 1;\r
969 \r
970             _battleInfo.Result.Friend.Main[0] = ShipStatus("高波改");\r
971             InjectBattleResult("S");\r
972             Assert.AreEqual(1, count.Now, "長波改二なし");\r
973             _battleInfo.Result.Friend.Main[0] = ShipStatus("長波改二");\r
974 \r
975             _battleInfo.Result.Friend.Main[5] = ShipStatus("高波改");\r
976             InjectBattleResult("S");\r
977             Assert.AreEqual(2, count.Now, "高波改");\r
978             _battleInfo.Result.Friend.Main[5] = ShipStatus("沖波改");\r
979             InjectBattleResult("S");\r
980             Assert.AreEqual(3, count.Now, "沖波改");\r
981             _battleInfo.Result.Friend.Main[5] = ShipStatus("朝霜改二");\r
982             InjectBattleResult("S");\r
983             Assert.AreEqual(4, count.Now, "朝霜改二");\r
984         }\r
985 \r
986         /// <summary>\r
987         /// 888: 新編成「三川艦隊」、鉄底海峡に突入せよ!\r
988         /// </summary>\r
989         [TestMethod]\r
990         public void BattleResult_888()\r
991         {\r
992             var count = InjectQuest(888);\r
993 \r
994             _battleInfo.InjectResultStatus(new[]\r
995             {\r
996                 ShipStatus("鳥海改二"), ShipStatus("青葉改"), ShipStatus("衣笠改二"),\r
997                 ShipStatus("加古改二"), ShipStatus("夕立改二"), ShipStatus("綾波改二")\r
998             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
999 \r
1000             InjectMapNext(51, 4);\r
1001             InjectBattleResult("S");\r
1002             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0}));\r
1003 \r
1004             InjectMapNext(51, 5);\r
1005             InjectBattleResult("A");\r
1006             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0}));\r
1007             InjectBattleResult("S");\r
1008             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0}));\r
1009             _battleInfo.Result.Friend.Main[0].NowHp = 0;\r
1010             InjectBattleResult("S");\r
1011             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0}), "轟沈あり");\r
1012             _battleInfo.Result.Friend.Main[0].NowHp = 1;\r
1013 \r
1014             _battleInfo.Result.Friend.Main[0] = ShipStatus("妙高改二");\r
1015             InjectBattleResult("S");\r
1016             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0}), "三川艦隊3隻");\r
1017 \r
1018             _battleInfo.Result.Friend.Main[0] = ShipStatus("夕張改二特");\r
1019             InjectMapNext(53, 5);\r
1020             InjectBattleResult("S");\r
1021             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0}));\r
1022 \r
1023             _battleInfo.Result.Friend.Main[0] = ShipStatus("天龍改二");\r
1024             _battleInfo.Result.Friend.Main[1] = ShipStatus("古鷹改二");\r
1025             InjectMapNext(54, 5);\r
1026             InjectBattleResult("S");\r
1027             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
1028         }\r
1029 \r
1030         /// <summary>\r
1031         /// 893: 泊地周辺海域の安全確保を徹底せよ!\r
1032         /// </summary>\r
1033         [TestMethod]\r
1034         public void BattleResult_893()\r
1035         {\r
1036             var count = InjectQuest(893);\r
1037 \r
1038             InjectMapNext(15, 4);\r
1039             InjectBattleResult("S");\r
1040             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}));\r
1041 \r
1042             InjectMapNext(15, 5);\r
1043             InjectBattleResult("A");\r
1044             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "A勝利はカウントしない");\r
1045             InjectBattleResult("S");\r
1046             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "1-5");\r
1047 \r
1048             InjectMapNext(71, 5);\r
1049             InjectBattleResult("S");\r
1050             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0}), "7-1");\r
1051 \r
1052             _questCounter.InspectMapNext(Js(new\r
1053             {\r
1054                 api_maparea_id = 7,\r
1055                 api_mapinfo_no = 2,\r
1056                 api_no = 7,\r
1057                 api_event_id = 5\r
1058             }));\r
1059             InjectBattleResult("S");\r
1060             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}), "7-2G");\r
1061 \r
1062             _questCounter.InspectMapNext(Js(new\r
1063             {\r
1064                 api_maparea_id = 7,\r
1065                 api_mapinfo_no = 2,\r
1066                 api_no = 15,\r
1067                 api_event_id = 5\r
1068             }));\r
1069             InjectBattleResult("S");\r
1070             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "7-2M");\r
1071         }\r
1072 \r
1073         /// <summary>\r
1074         /// 894: 空母戦力の投入による兵站線戦闘哨戒\r
1075         /// </summary>\r
1076         [TestMethod]\r
1077         public void BattleResult_894()\r
1078         {\r
1079             var count = InjectQuest(894);\r
1080             _battleInfo.InjectResultStatus(\r
1081                 ShipStatusList(2, 2, 2, 2, 2, 2),\r
1082                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1083 \r
1084             InjectMapNext(13, 5);\r
1085             InjectBattleResult("S");\r
1086             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}), "空母なしはカウントしない");\r
1087 \r
1088             _battleInfo.Result.Friend.Main[0].Spec.ShipType = 7;\r
1089             InjectBattleResult("A");\r
1090             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}), "A勝利はカウントしない");\r
1091 \r
1092             InjectBattleResult("S");\r
1093             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "1-3");\r
1094 \r
1095             InjectMapNext(14, 4);\r
1096             InjectBattleResult("S");\r
1097             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "1-4");\r
1098 \r
1099             InjectMapNext(14, 5);\r
1100             InjectBattleResult("S");\r
1101             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0, 0}), "1-4");\r
1102 \r
1103             InjectMapNext(21, 5);\r
1104             InjectBattleResult("S");\r
1105             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0, 0}), "2-1");\r
1106 \r
1107             InjectMapNext(22, 5);\r
1108             InjectBattleResult("S");\r
1109             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 0}), "2-2");\r
1110 \r
1111             InjectMapNext(23, 5);\r
1112             InjectBattleResult("S");\r
1113             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}), "2-3");\r
1114         }\r
1115 \r
1116         /// <summary>\r
1117         /// 拡張「六水戦」、最前線へ!\r
1118         /// </summary>\r
1119         [TestMethod]\r
1120         public void BattleResult_903()\r
1121         {\r
1122             var count = InjectQuest(903);\r
1123             _battleInfo.InjectResultStatus(new[] {ShipStatus("夕張改二"), ShipStatus("睦月"), ShipStatus("綾波")},\r
1124                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1125 \r
1126             InjectMapNext(51, 5);\r
1127             InjectBattleResult("S");\r
1128             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "六水戦駆逐が1隻");\r
1129 \r
1130             _battleInfo.Result.Friend.Main[2] = ShipStatus("如月");\r
1131             InjectBattleResult("A");\r
1132             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "A勝利はカウントしない");\r
1133 \r
1134             InjectBattleResult("S");\r
1135             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "5-1");\r
1136 \r
1137             InjectMapNext(54, 4);\r
1138             InjectBattleResult("S");\r
1139             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "ボス以外はカウントしない");\r
1140 \r
1141             _battleInfo.Result.Friend.Main[0] = ShipStatus("夕張改");\r
1142             InjectBattleResult("S");\r
1143             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "旗艦が夕張改");\r
1144 \r
1145             _battleInfo.Result.Friend.Main = new[] {ShipStatus("睦月"), ShipStatus("如月"), ShipStatus("夕張改二")};\r
1146             InjectMapNext(54, 5);\r
1147             InjectBattleResult("S");\r
1148             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "旗艦が夕張改二ではない");\r
1149 \r
1150             _battleInfo.Result.Friend.Main = new[] {ShipStatus("夕張改二"), ShipStatus("弥生"), ShipStatus("卯月")};\r
1151             InjectMapNext(54, 5);\r
1152             InjectBattleResult("S");\r
1153             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0}), "5-4");\r
1154 \r
1155             _battleInfo.Result.Friend.Main = new[] {ShipStatus("夕張改二"), ShipStatus("菊月"), ShipStatus("望月")};\r
1156             InjectMapNext(64, 5);\r
1157             InjectBattleResult("S");\r
1158             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}), "6-4");\r
1159 \r
1160             InjectMapNext(65, 5);\r
1161             InjectBattleResult("S");\r
1162             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "6-5");\r
1163 \r
1164             _battleInfo.Result.Friend.Main = new[] {ShipStatus("夕張改二"), ShipStatus("由良改")};\r
1165             InjectBattleResult("S");\r
1166             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "由良改");\r
1167 \r
1168             _battleInfo.Result.Friend.Main = new[] {ShipStatus("夕張改二"), ShipStatus("由良改二")};\r
1169             InjectBattleResult("S");\r
1170             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 2}), "由良改二");\r
1171         }\r
1172 \r
1173         /// <summary>\r
1174         /// 904: 精鋭「十九駆」、躍り出る!\r
1175         /// </summary>\r
1176         [TestMethod]\r
1177         public void BattleResult_904()\r
1178         {\r
1179             var count = InjectQuest(904);\r
1180             _battleInfo.InjectResultStatus(\r
1181                 new[] {ShipStatus("綾波改二"), ShipStatus("敷波")},\r
1182                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1183 \r
1184             InjectMapNext(25, 5);\r
1185             InjectBattleResult("S");\r
1186             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "敷波はカウントしない");\r
1187 \r
1188             _battleInfo.Result.Friend.Main[1] = ShipStatus("敷波改二");\r
1189             InjectBattleResult("A");\r
1190             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "A勝利はカウントしない");\r
1191 \r
1192             InjectBattleResult("S");\r
1193             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "2-5");\r
1194 \r
1195             InjectMapNext(34, 4);\r
1196             InjectBattleResult("S");\r
1197             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "ボス以外はカウントしない");\r
1198 \r
1199             InjectMapNext(34, 5);\r
1200             InjectBattleResult("S");\r
1201             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0}), "3-4");\r
1202 \r
1203             InjectMapNext(45, 5);\r
1204             InjectBattleResult("S");\r
1205             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}), "4-5");\r
1206 \r
1207             InjectMapNext(53, 5);\r
1208             InjectBattleResult("S");\r
1209             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "5-3");\r
1210         }\r
1211 \r
1212         /// <summary>\r
1213         /// 905: 「海防艦」、海を護る!\r
1214         /// </summary>\r
1215         [TestMethod]\r
1216         public void BattleResult_905()\r
1217         {\r
1218             var count = InjectQuest(905);\r
1219             _battleInfo.InjectResultStatus(\r
1220                 ShipStatusList(1, 1, 1, 2, 2, 2),\r
1221                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1222 \r
1223             InjectMapNext(11, 5);\r
1224             InjectBattleResult("A");\r
1225             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}), "6隻はカウントしない");\r
1226 \r
1227             _battleInfo.Result.Friend.Main[5] = new ShipStatus();\r
1228             InjectBattleResult("B");\r
1229             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}), "B勝利はカウントしない");\r
1230 \r
1231             InjectBattleResult("A");\r
1232             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "1-1");\r
1233 \r
1234             InjectMapNext(12, 4);\r
1235             InjectBattleResult("A");\r
1236             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "ボス以外はカウントしない");\r
1237 \r
1238             InjectMapNext(12, 5);\r
1239             InjectBattleResult("A");\r
1240             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0, 0}), "1-2");\r
1241 \r
1242             _battleInfo.Result.Friend.Main[0] = ShipStatus(2);\r
1243             InjectMapNext(13, 5);\r
1244             InjectBattleResult("A");\r
1245             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0, 0}), "海防艦2隻はカウントしない");\r
1246 \r
1247             _battleInfo.Result.Friend.Main[0] = ShipStatus(1);\r
1248             InjectBattleResult("A");\r
1249             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0, 0}), "1-3");\r
1250 \r
1251             InjectMapNext(15, 5);\r
1252             InjectBattleResult("A");\r
1253             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 0}), "1-5");\r
1254 \r
1255             InjectMapNext(16, 8);\r
1256             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}), "1-6");\r
1257         }\r
1258 \r
1259         /// <summary>\r
1260         /// 912: 工作艦「明石」護衛任務\r
1261         /// </summary>\r
1262         [TestMethod]\r
1263         public void BattleResult_912()\r
1264         {\r
1265             var count = InjectQuest(912);\r
1266             _battleInfo.InjectResultStatus(\r
1267                 new[] {ShipStatus("明石"), ShipStatus(2), ShipStatus(2), ShipStatus(1)},\r
1268                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1269 \r
1270             InjectMapNext(13, 5);\r
1271             InjectBattleResult("A");\r
1272             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}), "駆逐艦2隻はカウントしない");\r
1273 \r
1274             _battleInfo.Result.Friend.Main[3] = ShipStatus(2);\r
1275             InjectBattleResult("B");\r
1276             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}), "B勝利はカウントしない");\r
1277 \r
1278             InjectBattleResult("A");\r
1279             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "1-3");\r
1280 \r
1281             InjectMapNext(21, 4);\r
1282             InjectBattleResult("A");\r
1283             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "ボス以外はカウントしない");\r
1284 \r
1285             _battleInfo.Result.Friend.Main[0] = ShipStatus(2);\r
1286             _battleInfo.Result.Friend.Main[1] = ShipStatus("明石");\r
1287             InjectMapNext(21, 5);\r
1288             InjectBattleResult("A");\r
1289             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "旗艦明石以外はカウントしない");\r
1290 \r
1291             _battleInfo.Result.Friend.Main[0] = ShipStatus("明石");\r
1292             _battleInfo.Result.Friend.Main[1] = ShipStatus(2);\r
1293             InjectBattleResult("A");\r
1294             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0, 0}), "2-1");\r
1295 \r
1296             InjectMapNext(22, 5);\r
1297             InjectBattleResult("A");\r
1298             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0, 0}), "2-2");\r
1299 \r
1300             InjectMapNext(23, 5);\r
1301             InjectBattleResult("A");\r
1302             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 0}), "2-3");\r
1303 \r
1304             InjectMapNext(16, 8);\r
1305             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}), "1-6");\r
1306         }\r
1307 \r
1308         /// <summary>\r
1309         /// 912: 重巡戦隊、西へ!\r
1310         /// </summary>\r
1311         [TestMethod]\r
1312         public void BattleResult_914()\r
1313         {\r
1314             var count = InjectQuest(914);\r
1315             _battleInfo.InjectResultStatus(\r
1316                 new[] {ShipStatus(5), ShipStatus(5), ShipStatus(5), ShipStatus(1)},\r
1317                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1318 \r
1319             InjectMapNext(41, 5);\r
1320             InjectBattleResult("A");\r
1321             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "駆逐艦なしはカウントしない");\r
1322 \r
1323             _battleInfo.Result.Friend.Main[3] = ShipStatus(2);\r
1324             InjectBattleResult("B");\r
1325             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "B勝利はカウントしない");\r
1326 \r
1327             InjectBattleResult("A");\r
1328             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "4-1");\r
1329 \r
1330             InjectMapNext(42, 4);\r
1331             InjectBattleResult("A");\r
1332             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "ボス以外はカウントしない");\r
1333 \r
1334             InjectMapNext(42, 5);\r
1335             _battleInfo.Result.Friend.Main[0] = ShipStatus(6);\r
1336             InjectBattleResult("A");\r
1337             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "重巡2隻はカウントしない");\r
1338 \r
1339             _battleInfo.Result.Friend.Main[0] = ShipStatus(5);\r
1340             InjectBattleResult("A");\r
1341             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0}), "4-2");\r
1342 \r
1343             InjectMapNext(43, 5);\r
1344             InjectBattleResult("A");\r
1345             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}), "4-3");\r
1346 \r
1347             InjectMapNext(44, 5);\r
1348             InjectBattleResult("A");\r
1349             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "4-3");\r
1350         }\r
1351 \r
1352         /// <summary>\r
1353         /// 280と854以降を同時に遂行していると854以降がカウントされないことがある\r
1354         /// </summary>\r
1355         [TestMethod]\r
1356         public void BattleResult_280_854()\r
1357         {\r
1358             InjectQuestList(new[] {280, 854});\r
1359 \r
1360             _battleInfo.InjectResultStatus(\r
1361                 ShipStatusList(1, 1, 1, 1, 1, 1), new ShipStatus[0],\r
1362                 new ShipStatus[0], new ShipStatus[0]);\r
1363 \r
1364             InjectMapNext(24, 5);\r
1365             InjectBattleResult("S");\r
1366             Assert.AreEqual(1, _questInfo.Quests[1].Count.NowArray[0]);\r
1367         }\r
1368 \r
1369         /// <summary>\r
1370         /// 888と893以降を同時に遂行していると893以降がカウントされないことがある\r
1371         /// </summary>\r
1372         [TestMethod]\r
1373         public void BattleResult_888_893()\r
1374         {\r
1375             InjectQuestList(new[] {888, 893});\r
1376 \r
1377             _battleInfo.InjectResultStatus(\r
1378                 ShipStatusList(1, 1, 1, 1, 1, 1), new ShipStatus[0],\r
1379                 new ShipStatus[0], new ShipStatus[0]);\r
1380 \r
1381             InjectMapNext(71, 5);\r
1382             InjectBattleResult("S");\r
1383             Assert.AreEqual(1, _questInfo.Quests[1].Count.NowArray[1]);\r
1384         }\r
1385 \r
1386         /// <summary>\r
1387         /// 302: 大規模演習\r
1388         /// 303: 「演習」で練度向上!\r
1389         /// 304: 「演習」で他提督を圧倒せよ!\r
1390         /// 311: 精鋭艦隊演習\r
1391         /// 315: 春季大演習\r
1392         /// </summary>\r
1393         [TestMethod]\r
1394         public void PracticeResult_303_304_302_311_315()\r
1395         {\r
1396             InjectQuestList(new[] {302, 303, 304, 311, 315});\r
1397 \r
1398             _battleInfo.InjectResultStatus(new[]\r
1399             {\r
1400                 ShipStatus(2, 543), ShipStatus(3, 488)\r
1401             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1402             InjectPracticeResult("C");\r
1403             InjectPracticeResult("A");\r
1404             PAssert.That(() =>\r
1405                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1406                     .SequenceEqual(new[]\r
1407                     {\r
1408                         new {Id = 302, Now = 1}, new {Id = 303, Now = 2}, new {Id = 304, Now = 1},\r
1409                         new {Id = 311, Now = 1}, new {Id = 315, Now = 1}\r
1410                     }));\r
1411         }\r
1412 \r
1413         /// <summary>\r
1414         /// 318: 給糧艦「伊良湖」の支援\r
1415         /// </summary>\r
1416         [TestMethod]\r
1417         public void PracticeResult_318()\r
1418         {\r
1419             var count = InjectQuest(318);\r
1420 \r
1421             _battleInfo.InjectResultStatus(new[]\r
1422             {\r
1423                 ShipStatus(2, 543), ShipStatus(3, 488)\r
1424             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1425 \r
1426             InjectPracticeResult("B");\r
1427             Assert.AreEqual(0, count.Now, "軽巡1隻");\r
1428             _battleInfo.Result.Friend.Main[0] = ShipStatus(3, 200);\r
1429             _questCounter.StartPractice("api%5Fdeck%5Fid=2");\r
1430             InjectPracticeResult("B");\r
1431             Assert.AreEqual(0, count.Now, "第2艦隊");\r
1432             _questCounter.StartPractice("api%5Fdeck%5Fid=1"); // 第一艦隊\r
1433             InjectPracticeResult("C");\r
1434             Assert.AreEqual(0, count.Now, "敗北");\r
1435             InjectPracticeResult("B");\r
1436             Assert.AreEqual(1, count.Now);\r
1437 \r
1438             count.Now = 2;\r
1439             InjectQuestList(new[] {318});\r
1440             Assert.AreEqual(2, count.Now, "進捗調節しない");\r
1441         }\r
1442 \r
1443         /// <summary>\r
1444         /// 330: 空母機動部隊、演習始め!\r
1445         /// </summary>\r
1446         [TestMethod]\r
1447         public void PracticeResult_330()\r
1448         {\r
1449             var count = InjectQuest(330);\r
1450 \r
1451             _battleInfo.InjectResultStatus(\r
1452                 ShipStatusList(18, 7, 2, 2),\r
1453                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1454             InjectPracticeResult("B");\r
1455             Assert.AreEqual(0, count.Now, "B勝利でカウントしない");\r
1456 \r
1457             InjectPracticeResult("A");\r
1458             Assert.AreEqual(1, count.Now, "装甲空母、軽空母");\r
1459 \r
1460             _battleInfo.Result.Friend.Main = ShipStatusList(11, 7, 2, 2);\r
1461             InjectPracticeResult("A");\r
1462             Assert.AreEqual(2, count.Now, "正規空母、軽空母");\r
1463 \r
1464             count.Now = 0;\r
1465             InjectPracticeResult("C");\r
1466             Assert.AreEqual(0, count.Now, "敗北");\r
1467 \r
1468             _battleInfo.Result.Friend.Main = ShipStatusList(2, 7, 11, 2);\r
1469             InjectPracticeResult("A");\r
1470             Assert.AreEqual(0, count.Now, "旗艦空母以外");\r
1471 \r
1472             _battleInfo.Result.Friend.Main = ShipStatusList(11, 2, 2, 2);\r
1473             InjectPracticeResult("A");\r
1474             Assert.AreEqual(0, count.Now, "空母一隻");\r
1475 \r
1476             _battleInfo.Result.Friend.Main = ShipStatusList(11, 7, 3, 2);\r
1477             InjectPracticeResult("A");\r
1478             Assert.AreEqual(0, count.Now, "駆逐一隻");\r
1479         }\r
1480 \r
1481         /// <summary>\r
1482         /// 337: 「十八駆」演習!\r
1483         /// </summary>\r
1484         [TestMethod]\r
1485         public void PracticeResult_337()\r
1486         {\r
1487             var count = InjectQuest(337);\r
1488 \r
1489             _battleInfo.InjectResultStatus(new[]\r
1490             {\r
1491                 ShipStatus("霰"), ShipStatus("霰"),\r
1492                 ShipStatus("陽炎"), ShipStatus("不知火"),\r
1493                 ShipStatus("黒潮")\r
1494             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1495             InjectPracticeResult("A");\r
1496             Assert.AreEqual(0, count.Now, "A");\r
1497             InjectPracticeResult("S");\r
1498             Assert.AreEqual(1, count.Now);\r
1499             _battleInfo.Result.Friend.Main[0] = ShipStatus("涼風");\r
1500             InjectPracticeResult("S");\r
1501             Assert.AreEqual(1, count.Now, "霰→涼風");\r
1502             _battleInfo.Result.Friend.Main[4] = ShipStatus("霞改二");\r
1503             InjectPracticeResult("S");\r
1504             Assert.AreEqual(2, count.Now, "黒潮→霞改二");\r
1505         }\r
1506 \r
1507         /// <summary>\r
1508         /// 339: 「十九駆」演習!\r
1509         /// </summary>\r
1510         [TestMethod]\r
1511         public void PracticeResult_339()\r
1512         {\r
1513             var count = InjectQuest(339);\r
1514 \r
1515             _battleInfo.InjectResultStatus(new[]\r
1516             {\r
1517                 ShipStatus("磯波"), ShipStatus("浦波"),\r
1518                 ShipStatus("綾波"), ShipStatus("敷波"),\r
1519                 ShipStatus("初雪")\r
1520             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1521             InjectPracticeResult("A");\r
1522             Assert.AreEqual(0, count.Now, "A");\r
1523             InjectPracticeResult("S");\r
1524             Assert.AreEqual(1, count.Now);\r
1525             _battleInfo.Result.Friend.Main[0] = ShipStatus("深雪");\r
1526             InjectPracticeResult("S");\r
1527             Assert.AreEqual(1, count.Now, "磯波→深雪");\r
1528         }\r
1529 \r
1530         /// <summary>\r
1531         /// 342: 小艦艇群演習強化任務\r
1532         /// </summary>\r
1533         [TestMethod]\r
1534         public void PracticeResult_342()\r
1535         {\r
1536             var count = InjectQuest(342);\r
1537 \r
1538             _battleInfo.InjectResultStatus(new[] {ShipStatus(1), ShipStatus(1), ShipStatus(2), ShipStatus(5)},\r
1539                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1540             InjectPracticeResult("A");\r
1541             Assert.AreEqual(0, count.Now);\r
1542 \r
1543             InjectPracticeResult("B");\r
1544             Assert.AreEqual(0, count.Now);\r
1545 \r
1546             _battleInfo.Result.Friend.Main[3] = ShipStatus(2);\r
1547             InjectPracticeResult("A");\r
1548             Assert.AreEqual(1, count.Now);\r
1549 \r
1550             _battleInfo.Result.Friend.Main[3] = ShipStatus(3);\r
1551             InjectPracticeResult("A");\r
1552             Assert.AreEqual(2, count.Now);\r
1553 \r
1554             _battleInfo.Result.Friend.Main[3] = ShipStatus(4);\r
1555             InjectPracticeResult("A");\r
1556             Assert.AreEqual(3, count.Now);\r
1557 \r
1558             _battleInfo.Result.Friend.Main[3] = ShipStatus(21);\r
1559             InjectPracticeResult("A");\r
1560             Assert.AreEqual(4, count.Now);\r
1561         }\r
1562 \r
1563         /// <summary>\r
1564         /// 402: 「遠征」を3回成功させよう!\r
1565         /// 403: 「遠征」を10回成功させよう!\r
1566         /// 404: 大規模遠征作戦、発令!\r
1567         /// 410: 南方への輸送作戦を成功させよ!\r
1568         /// 411: 南方への鼠輸送を継続実施せよ!\r
1569         /// </summary>\r
1570         [TestMethod]\r
1571         public void MissionResult_402_403_404_410_411()\r
1572         {\r
1573             InjectQuestList(new[] {402, 403, 404, 410, 411});\r
1574 \r
1575             _questCounter.InspectDeck(Js(\r
1576                 new[]\r
1577                 {\r
1578                     new {api_id = 2, api_mission = new[] {2, 6}},\r
1579                     new {api_id = 3, api_mission = new[] {2, 37}},\r
1580                     new {api_id = 4, api_mission = new[] {2, 2}}\r
1581                 }));\r
1582             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1583             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 2}));\r
1584             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 0}));\r
1585             PAssert.That(() =>\r
1586                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1587                     .SequenceEqual(new[]\r
1588                     {\r
1589                         new {Id = 402, Now = 2}, new {Id = 403, Now = 2}, new {Id = 404, Now = 2},\r
1590                         new {Id = 410, Now = 1}, new {Id = 411, Now = 1}\r
1591                     }));\r
1592         }\r
1593 \r
1594         /// <summary>\r
1595         /// 426: 海上通商航路の警戒を厳とせよ!\r
1596         /// </summary>\r
1597         [TestMethod]\r
1598         public void MissionResult_426()\r
1599         {\r
1600             var count = InjectQuest(426);\r
1601 \r
1602             _questCounter.InspectDeck(Js(\r
1603                 new[]\r
1604                 {\r
1605                     new {api_id = 2, api_mission = new[] {2, 3}},\r
1606                     new {api_id = 3, api_mission = new[] {2, 4}},\r
1607                     new {api_id = 4, api_mission = new[] {2, 5}}\r
1608                 }));\r
1609             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1610             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1611             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1612             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}));\r
1613             _questCounter.InspectDeck(Js(\r
1614                 new[]\r
1615                 {\r
1616                     new {api_id = 2, api_mission = new[] {2, 10}}\r
1617                 }));\r
1618             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1619             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
1620         }\r
1621 \r
1622         /// <summary>\r
1623         /// 428: 近海に侵入する敵潜を制圧せよ!\r
1624         /// </summary>\r
1625         [TestMethod]\r
1626         public void MissionResult_428()\r
1627         {\r
1628             var count = InjectQuest(428);\r
1629 \r
1630             _questCounter.InspectDeck(Js(\r
1631                 new[]\r
1632                 {\r
1633                     new {api_id = 2, api_mission = new[] {2, 4}},\r
1634                     new {api_id = 3, api_mission = new[] {2, 101}},\r
1635                     new {api_id = 4, api_mission = new[] {2, 102}}\r
1636                 }));\r
1637             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1638             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1639             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1640             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
1641         }\r
1642 \r
1643         /// <summary>\r
1644         /// 436: 練習航海及び警備任務を実施せよ!\r
1645         /// </summary>\r
1646         [TestMethod]\r
1647         public void MissionResult_436()\r
1648         {\r
1649             var count = InjectQuest(436);\r
1650 \r
1651             _questCounter.InspectDeck(Js(\r
1652                 new[]\r
1653                 {\r
1654                     new {api_id = 2, api_mission = new[] {2, 1}},\r
1655                     new {api_id = 3, api_mission = new[] {2, 2}},\r
1656                     new {api_id = 4, api_mission = new[] {2, 3}}\r
1657                 }));\r
1658             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1659             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1660             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1661             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0, 0}));\r
1662 \r
1663             _questCounter.InspectDeck(Js(\r
1664                 new[]\r
1665                 {\r
1666                     new {api_id = 2, api_mission = new[] {2, 4}},\r
1667                     new {api_id = 3, api_mission = new[] {2, 10}}\r
1668                 }));\r
1669             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1670             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1671             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}));\r
1672         }\r
1673 \r
1674         /// <summary>\r
1675         /// 437: 小笠原沖哨戒線の強化を実施せよ!\r
1676         /// </summary>\r
1677         [TestMethod]\r
1678         public void MissionResult_437()\r
1679         {\r
1680             var count = InjectQuest(437);\r
1681 \r
1682             _questCounter.InspectDeck(Js(\r
1683                 new[]\r
1684                 {\r
1685                     new {api_id = 2, api_mission = new[] {2, 4}},\r
1686                     new {api_id = 3, api_mission = new[] {2, 104}},\r
1687                     new {api_id = 4, api_mission = new[] {2, 105}}\r
1688                 }));\r
1689             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1690             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1691             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1692             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}));\r
1693 \r
1694             _questCounter.InspectDeck(Js(\r
1695                 new[]\r
1696                 {\r
1697                     new {api_id = 2, api_mission = new[] {2, 110}}\r
1698                 }));\r
1699             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1700             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
1701         }\r
1702 \r
1703         /// <summary>\r
1704         /// 438: 南西諸島方面の海上護衛を強化せよ!\r
1705         /// </summary>\r
1706         [TestMethod]\r
1707         public void MissionResult_438()\r
1708         {\r
1709             var count = InjectQuest(438);\r
1710 \r
1711             _questCounter.InspectDeck(Js(\r
1712                 new[]\r
1713                 {\r
1714                     new {api_id = 2, api_mission = new[] {2, 4}},\r
1715                     new {api_id = 3, api_mission = new[] {2, 100}},\r
1716                     new {api_id = 4, api_mission = new[] {2, 9}}\r
1717                 }));\r
1718             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new { api_clear_result = 1 }));\r
1719             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new { api_clear_result = 1 }));\r
1720             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new { api_clear_result = 1 }));\r
1721             PAssert.That(() => count.NowArray.SequenceEqual(new[] { 1, 1, 1, 0 }));\r
1722 \r
1723             _questCounter.InspectDeck(Js(\r
1724                 new[]\r
1725                 {\r
1726                     new {api_id = 2, api_mission = new[] {2, 114}}\r
1727                 }));\r
1728             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new { api_clear_result = 1 }));\r
1729             PAssert.That(() => count.NowArray.SequenceEqual(new[] { 1, 1, 1, 1 }));\r
1730         }\r
1731 \r
1732         /// <summary>\r
1733         /// 503: 艦隊大整備!\r
1734         /// 504: 艦隊酒保祭り!\r
1735         /// </summary>\r
1736         [TestMethod]\r
1737         public void PowerUp_503_504()\r
1738         {\r
1739             InjectQuestList(new[] {503, 504});\r
1740 \r
1741             _questCounter.CountNyukyo();\r
1742             _questCounter.CountCharge();\r
1743             PAssert.That(() =>\r
1744                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1745                     .SequenceEqual(new[] {new {Id = 503, Now = 1}, new {Id = 504, Now = 1}}));\r
1746         }\r
1747 \r
1748         /// <summary>\r
1749         /// 605: 新装備「開発」指令\r
1750         /// 606: 新造艦「建造」指令\r
1751         /// 607: 装備「開発」集中強化!\r
1752         /// 608: 艦娘「建造」艦隊強化!\r
1753         /// 609: 軍縮条約対応!\r
1754         /// 619: 装備の改修強化\r
1755         /// </summary>\r
1756         [TestMethod]\r
1757         public void Kousyou_605_606_607_608_609_619()\r
1758         {\r
1759             InjectQuestList(new[] {605, 606, 607, 608, 609, 619});\r
1760 \r
1761             _questCounter.InspectCreateItem(\r
1762                 "api_verno=1&api_item1=10&api_item2=10&api_item3=30&api_item4=10&api_multiple_flag=0");\r
1763             _questCounter.InspectCreateItem(\r
1764                 "api_verno=1&api_item1=10&api_item2=10&api_item3=30&api_item4=10&api_multiple_flag=1");\r
1765             _questCounter.CountCreateShip();\r
1766             _questCounter.InspectDestroyShip("api%5Fship%5Fid=98159%2C98166%2C98168&api%5Fverno=1");\r
1767             _questCounter.CountRemodelSlot();\r
1768             PAssert.That(() =>\r
1769                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1770                     .SequenceEqual(new[]\r
1771                     {\r
1772                         new {Id = 605, Now = 4}, new {Id = 606, Now = 1}, new {Id = 607, Now = 4},\r
1773                         new {Id = 608, Now = 1}, new {Id = 609, Now = 3}, new {Id = 619, Now = 1}\r
1774                     }));\r
1775         }\r
1776 \r
1777         /// <summary>\r
1778         /// 613: 資源の再利用\r
1779         /// 638: 対空機銃量産\r
1780         /// 643: 主力「陸攻」の調達\r
1781         /// 645: 「洋上補給」物資の調達\r
1782         /// 653: 工廠稼働!次期作戦準備!\r
1783         /// 663: 新型艤装の継続研究\r
1784         /// 673: 装備開発力の整備\r
1785         /// 674: 工廠環境の整備\r
1786         /// 675: 運用装備の統合整備\r
1787         /// 676: 装備開発力の集中整備\r
1788         /// 677: 継戦支援能力の整備\r
1789         /// 678: 主力艦上戦闘機の更新\r
1790         /// 680: 対空兵装の整備拡充\r
1791         /// 688: 航空戦力の強化\r
1792         /// </summary>\r
1793         [TestMethod]\r
1794         public void DestroyItem_613_638_643_645_653_663_673_674_675_676_677_678_680_686_688()\r
1795         {\r
1796             _itemInfo.InjectItemSpec(new[]\r
1797             {\r
1798                 new ItemSpec {Id = 1, Name = "12cm単装砲", Type = 1},\r
1799                 new ItemSpec {Id = 37, Name = "7.7mm機銃", Type = 21},\r
1800                 new ItemSpec {Id = 19, Name = "九六式艦戦", Type = 6},\r
1801                 new ItemSpec {Id = 4, Name = "14cm単装砲", Type = 2},\r
1802                 new ItemSpec {Id = 11, Name = "15.2cm単装砲", Type = 4},\r
1803                 new ItemSpec {Id = 75, Name = "ドラム缶(輸送用)", Type = 30},\r
1804                 new ItemSpec {Id = 7, Name = "35.6cm連装砲", Type = 3},\r
1805                 new ItemSpec {Id = 25, Name = "零式水上偵察機", Type = 10},\r
1806                 new ItemSpec {Id = 13, Name = "61cm三連装魚雷", Type = 5},\r
1807                 new ItemSpec {Id = 20, Name = "零式艦戦21型", Type = 6},\r
1808                 new ItemSpec {Id = 28, Name = "22号水上電探", Type = 12},\r
1809                 new ItemSpec {Id = 31, Name = "32号水上電探", Type = 13},\r
1810                 new ItemSpec {Id = 35, Name = "三式弾", Type = 18},\r
1811                 new ItemSpec {Id = 23, Name = "九九式艦爆", Type = 7},\r
1812                 new ItemSpec {Id = 16, Name = "九七式艦攻", Type = 8},\r
1813                 new ItemSpec {Id = 3, Name = "10cm連装高角砲", Type = 1},\r
1814                 new ItemSpec {Id = 121, Name = "94式高射装置", Type = 36}\r
1815             });\r
1816             var items = new[] {1, 37, 19, 4, 11, 75, 7, 25, 13, 20, 28, 31, 35, 23, 16, 3, 121};\r
1817             _itemInfo.InjectItems(items);\r
1818             var questList = new[] {613, 638, 643, 645, 653, 663, 673, 674, 675, 676, 677, 678, 680, 686, 688};\r
1819             InjectQuestList(questList);\r
1820             _questCounter.InspectDestroyItem(\r
1821                 $"api%5Fslotitem%5Fids={string.Join("%2C", Enumerable.Range(1, items.Length))}&api%5Fverno=1");\r
1822             var scalar = new[]\r
1823             {\r
1824                 new {Id = 613, Now = 1}, new {Id = 638, Now = 1}, new {Id = 643, Now = 1}, new {Id = 645, Now = 1},\r
1825                 new {Id = 653, Now = 1}, new {Id = 663, Now = 1}, new {Id = 673, Now = 2}, new {Id = 674, Now = 1}\r
1826             };\r
1827             foreach (var e in scalar)\r
1828             {\r
1829                 var c = Array.Find(_questInfo.Quests, q => q.Id == e.Id).Count;\r
1830                 Assert.AreEqual(e.Id, c.Id);\r
1831                 Assert.AreEqual(e.Now, c.Now, $"{c.Id}");\r
1832             }\r
1833             var array = new[]\r
1834             {\r
1835                 new {Id = 675, NowArray = new[] {2, 1}}, new {Id = 676, NowArray = new[] {1, 1, 1}},\r
1836                 new {Id = 677, NowArray = new[] {1, 1, 1}}, new {Id = 678, NowArray = new[] {1, 1}},\r
1837                 new {Id = 680, NowArray = new[] {1, 2}}, new {Id = 686, NowArray = new[] {1, 1}},\r
1838                 new {Id = 688, NowArray = new[] {2, 1, 1, 1}}\r
1839             };\r
1840             foreach (var e in array)\r
1841             {\r
1842                 var c = Array.Find(_questInfo.Quests, q => q.Id == e.Id).Count;\r
1843                 Assert.AreEqual(e.Id, c.Id);\r
1844                 PAssert.That(() => c.NowArray.SequenceEqual(e.NowArray), $"{c.Id}");\r
1845             }\r
1846         }\r
1847 \r
1848         /// <summary>\r
1849         /// 702: 艦の「近代化改修」を実施せよ!\r
1850         /// 703: 「近代化改修」を進め、戦備を整えよ!\r
1851         /// </summary>\r
1852         [TestMethod]\r
1853         public void PowerUp_702_703()\r
1854         {\r
1855             InjectQuestList(new[] {702, 703});\r
1856             _questCounter.InspectPowerUp(Js(new {api_powerup_flag = 1}));\r
1857             PAssert.That(() =>\r
1858                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1859                     .SequenceEqual(new[] {new {Id = 702, Now = 1}, new {Id = 703, Now = 1}}));\r
1860         }\r
1861     }\r
1862 }