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