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