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