OSDN Git Service

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