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