OSDN Git Service

戦時改修A型高角砲の量産のカウンターを実装する
[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             Assert.IsTrue(quests[2].Id == 214 && quests[2].Count.NowArray[0] == 1);\r
289             InjectBattleResult("S");\r
290             // 道中S勝利\r
291             Assert.IsTrue(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             Assert.IsTrue(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             Assert.IsTrue(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             Assert.IsTrue(quests[2].Id == 214 && CheckCount(quests[2], new[] {1, 1, 1, 1}));\r
308             InjectBattleResult("C");\r
309             Assert.IsTrue(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             Assert.IsTrue(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         /// 861: 強行輸送艦隊、抜錨!\r
713         /// </summary>\r
714         [TestMethod]\r
715         public void MapNext_861()\r
716         {\r
717             _questInfo.InspectQuestList(CreateQuestList(new[] {861}));\r
718             var quest = _questInfo.Quests[0];\r
719 \r
720             _battleInfo.InjectResultStatus(\r
721                 ShipStatusList(10, 22, 2, 2, 2, 2), new ShipStatus[0],\r
722                 new ShipStatus[0], new ShipStatus[0]);\r
723 \r
724             InjectMapNext(16, 4);\r
725             Assert.IsTrue(CheckCount(quest, 0));\r
726 \r
727             InjectMapNext(16, 8);\r
728             Assert.IsTrue(CheckCount(quest, 1));\r
729 \r
730             _battleInfo.Result.Friend.Main[1].NowHp = 0;\r
731             InjectMapNext(16, 8);\r
732             Assert.IsTrue(CheckCount(quest, 1), "轟沈あり");\r
733             _battleInfo.Result.Friend.Main[1].NowHp = 1;\r
734 \r
735             _battleInfo.Result.Friend.Main[2].Spec.ShipType = 10;\r
736             InjectMapNext(16, 8);\r
737             Assert.IsTrue(CheckCount(quest, 1), "補給・航戦が3隻");\r
738         }\r
739 \r
740         /// <summary>\r
741         /// 862: 前線の航空偵察を実施せよ!\r
742         /// </summary>\r
743         [TestMethod]\r
744         public void BattleResult_862()\r
745         {\r
746             _questInfo.InspectQuestList(CreateQuestList(new[] {862}));\r
747             var quest = _questInfo.Quests[0];\r
748 \r
749             _battleInfo.InjectResultStatus(\r
750                 ShipStatusList(2, 3, 3, 2, 2, 16), new ShipStatus[0],\r
751                 new ShipStatus[0], new ShipStatus[0]);\r
752 \r
753             InjectMapNext(63, 4);\r
754             InjectBattleResult("A");\r
755             Assert.IsTrue(CheckCount(quest, 0));\r
756 \r
757             InjectMapNext(63, 5);\r
758             InjectBattleResult("B");\r
759             Assert.IsTrue(CheckCount(quest, 0));\r
760             InjectBattleResult("A");\r
761             Assert.IsTrue(CheckCount(quest, 1));\r
762 \r
763             _battleInfo.Result.Friend.Main[1].NowHp = 0;\r
764             InjectBattleResult("A");\r
765             Assert.IsTrue(CheckCount(quest, 1), "轟沈あり");\r
766             _battleInfo.Result.Friend.Main[1].NowHp = 1;\r
767 \r
768             _battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;\r
769             _battleInfo.Result.Friend.Main[4].Spec.ShipType = 16;\r
770             InjectBattleResult("A");\r
771             Assert.IsTrue(CheckCount(quest, 2), "軽巡3隻水母2隻");\r
772         }\r
773 \r
774         /// <summary>\r
775         /// 872: 戦果拡張任務!「Z作戦」後段作戦\r
776         /// </summary>\r
777         [TestMethod]\r
778         public void BattleResult_872()\r
779         {\r
780             var quest = InjectQuest(872);\r
781 \r
782             InjectMapNext(55, 4);\r
783             InjectBattleResult("A");\r
784             Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0}));\r
785             InjectBattleResult("S");\r
786             Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0}));\r
787             InjectMapNext(55, 5);\r
788             InjectBattleResult("S");\r
789             Assert.IsTrue(CheckCount(quest, new[] {0, 1, 0, 0}));\r
790 \r
791             InjectMapNext(62, 5);\r
792             InjectBattleResult("S");\r
793             Assert.IsTrue(CheckCount(quest, new[] {0, 1, 1, 0}));\r
794             InjectMapNext(65, 5);\r
795             InjectBattleResult("S");\r
796             Assert.IsTrue(CheckCount(quest, new[] {0, 1, 1, 1}));\r
797             _questCounter.InspectMapNext(Js(new\r
798             {\r
799                 api_maparea_id = 7,\r
800                 api_mapinfo_no = 2,\r
801                 api_no = 15,\r
802                 api_event_id = 5\r
803             }));\r
804             InjectBattleResult("S");\r
805             Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1}), "7-2M");\r
806         }\r
807 \r
808         /// <summary>\r
809         /// 873: 北方海域警備を実施せよ!\r
810         /// </summary>\r
811         [TestMethod]\r
812         public void BattleResult_873()\r
813         {\r
814             var quest = InjectQuest(873);\r
815 \r
816             _battleInfo.InjectResultStatus(\r
817                 ShipStatusList(3, 2, 2, 2, 2, 2), new ShipStatus[0],\r
818                 new ShipStatus[0], new ShipStatus[0]);\r
819 \r
820             InjectMapNext(31, 4);\r
821             InjectBattleResult("A");\r
822             Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0}));\r
823 \r
824             InjectMapNext(31, 5);\r
825             InjectBattleResult("B");\r
826             Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0}));\r
827             InjectBattleResult("A");\r
828             Assert.IsTrue(CheckCount(quest, new[] {1, 0, 0}));\r
829 \r
830             _battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;\r
831             InjectBattleResult("A");\r
832             Assert.IsTrue(_questInfo.Quests[0].Count.NowArray[0] == 1, "軽巡なし");\r
833             _battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;\r
834 \r
835             InjectMapNext(32, 5);\r
836             InjectBattleResult("A");\r
837             InjectMapNext(33, 5);\r
838             InjectBattleResult("A");\r
839             Assert.IsTrue(_questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
840         }\r
841 \r
842         /// <summary>\r
843         /// 875: 精鋭「三一駆」、鉄底海域に突入せよ!\r
844         /// </summary>\r
845         [TestMethod]\r
846         public void BattleResult_875()\r
847         {\r
848             var quest = InjectQuest(875);\r
849 \r
850             _battleInfo.InjectResultStatus(new[]\r
851             {\r
852                 ShipStatus(2, 543), ShipStatus(8, 360), ShipStatus(11, 545),\r
853                 ShipStatus(18, 467), ShipStatus(11, 261), ShipStatus(2, 344)\r
854             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
855 \r
856             InjectMapNext(54, 4);\r
857             InjectBattleResult("S");\r
858             Assert.IsTrue(CheckCount(quest, 0));\r
859 \r
860             InjectMapNext(54, 5);\r
861             InjectBattleResult("A");\r
862             Assert.IsTrue(CheckCount(quest, 0));\r
863             InjectBattleResult("S");\r
864             Assert.IsTrue(CheckCount(quest, 1));\r
865 \r
866             _battleInfo.Result.Friend.Main[5].NowHp = 0;\r
867             InjectBattleResult("S");\r
868             Assert.IsTrue(CheckCount(quest, 1), "朝霜改轟沈");\r
869             _battleInfo.Result.Friend.Main[5].NowHp = 1;\r
870 \r
871             _battleInfo.Result.Friend.Main[0].Spec.Id = 345;\r
872             InjectBattleResult("S");\r
873             Assert.IsTrue(CheckCount(quest, 1), "長波改二なし");\r
874             _battleInfo.Result.Friend.Main[0].Spec.Id = 543;\r
875 \r
876             _battleInfo.Result.Friend.Main[5].Spec.Id = 345;\r
877             InjectBattleResult("S");\r
878             Assert.IsTrue(CheckCount(quest, 2), "高波改");\r
879             _battleInfo.Result.Friend.Main[5].Spec.Id = 359;\r
880             InjectBattleResult("S");\r
881             Assert.IsTrue(CheckCount(quest, 3), "沖波改");\r
882         }\r
883 \r
884         /// <summary>\r
885         /// 888: 新編成「三川艦隊」、鉄底海峡に突入せよ!\r
886         /// </summary>\r
887         [TestMethod]\r
888         public void BattleResult_888()\r
889         {\r
890             var quest = InjectQuest(888);\r
891 \r
892             _battleInfo.InjectResultStatus(new[]\r
893             {\r
894                 ShipStatus(5, 427), ShipStatus(5, 264), ShipStatus(5, 142),\r
895                 ShipStatus(5, 417), ShipStatus(2, 144), ShipStatus(2, 195)\r
896             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
897 \r
898             InjectMapNext(51, 4);\r
899             InjectBattleResult("S");\r
900             Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0}));\r
901 \r
902             InjectMapNext(51, 5);\r
903             InjectBattleResult("A");\r
904             Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0}));\r
905             InjectBattleResult("S");\r
906             Assert.IsTrue(CheckCount(quest, new[] {1, 0, 0}));\r
907             _battleInfo.Result.Friend.Main[0].NowHp = 0;\r
908             InjectBattleResult("S");\r
909             Assert.IsTrue(CheckCount(quest, new[] {1, 0, 0}), "轟沈あり");\r
910             _battleInfo.Result.Friend.Main[0].NowHp = 1;\r
911 \r
912             _battleInfo.Result.Friend.Main[0].Spec.Id = 319;\r
913             InjectBattleResult("S");\r
914             Assert.IsTrue(CheckCount(quest, new[] {1, 0, 0}), "三川艦隊3隻");\r
915             _battleInfo.Result.Friend.Main[0].Spec.Id = 427;\r
916 \r
917             InjectMapNext(53, 5);\r
918             InjectBattleResult("S");\r
919             Assert.IsTrue(CheckCount(quest, new[] {1, 1, 0}));\r
920 \r
921             InjectMapNext(54, 5);\r
922             InjectBattleResult("S");\r
923             Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1}));\r
924         }\r
925 \r
926         /// <summary>\r
927         /// 893: 泊地周辺海域の安全確保を徹底せよ!\r
928         /// </summary>\r
929         [TestMethod]\r
930         public void BattleResult_893()\r
931         {\r
932             var quest = InjectQuest(893);\r
933 \r
934             InjectMapNext(15, 4);\r
935             InjectBattleResult("S");\r
936             Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0}));\r
937 \r
938             InjectMapNext(15, 5);\r
939             InjectBattleResult("A");\r
940             Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0}), "A勝利はカウントしない");\r
941             InjectBattleResult("S");\r
942             Assert.IsTrue(CheckCount(quest, new[] {1, 0, 0, 0}), "1-5");\r
943 \r
944             InjectMapNext(71, 5);\r
945             InjectBattleResult("S");\r
946             Assert.IsTrue(CheckCount(quest, new[] {1, 1, 0, 0}), "7-1");\r
947 \r
948             _questCounter.InspectMapNext(Js(new\r
949             {\r
950                 api_maparea_id = 7,\r
951                 api_mapinfo_no = 2,\r
952                 api_no = 7,\r
953                 api_event_id = 5\r
954             }));\r
955             InjectBattleResult("S");\r
956             Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 0}), "7-2G");\r
957 \r
958             _questCounter.InspectMapNext(Js(new\r
959             {\r
960                 api_maparea_id = 7,\r
961                 api_mapinfo_no = 2,\r
962                 api_no = 15,\r
963                 api_event_id = 5\r
964             }));\r
965             InjectBattleResult("S");\r
966             Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1}), "7-2M");\r
967         }\r
968 \r
969         /// <summary>\r
970         /// 894: 空母戦力の投入による兵站線戦闘哨戒\r
971         /// </summary>\r
972         [TestMethod]\r
973         public void BattleResult_894()\r
974         {\r
975             var quest = InjectQuest(894);\r
976             _battleInfo.InjectResultStatus(\r
977                 ShipStatusList(2, 2, 2, 2, 2, 2),\r
978                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
979 \r
980             InjectMapNext(13, 5);\r
981             InjectBattleResult("S");\r
982             Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0, 0}), "空母なしはカウントしない");\r
983 \r
984             _battleInfo.Result.Friend.Main[0].Spec.ShipType = 7;\r
985             InjectBattleResult("A");\r
986             Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0, 0}), "A勝利はカウントしない");\r
987 \r
988             InjectBattleResult("S");\r
989             Assert.IsTrue(CheckCount(quest, new[] {1, 0, 0, 0, 0}), "1-3");\r
990 \r
991             InjectMapNext(14, 4);\r
992             InjectBattleResult("S");\r
993             Assert.IsTrue(CheckCount(quest, new[] {1, 0, 0, 0, 0}), "1-4");\r
994 \r
995             InjectMapNext(14, 5);\r
996             InjectBattleResult("S");\r
997             Assert.IsTrue(CheckCount(quest, new[] {1, 1, 0, 0, 0}), "1-4");\r
998 \r
999             InjectMapNext(21, 5);\r
1000             InjectBattleResult("S");\r
1001             Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 0, 0}), "2-1");\r
1002 \r
1003             InjectMapNext(22, 5);\r
1004             InjectBattleResult("S");\r
1005             Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1, 0}), "2-2");\r
1006 \r
1007             InjectMapNext(23, 5);\r
1008             InjectBattleResult("S");\r
1009             Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1, 1}), "2-3");\r
1010         }\r
1011 \r
1012         /// <summary>\r
1013         /// 280と854以降を同時に遂行していると854以降がカウントされないことがある\r
1014         /// </summary>\r
1015         [TestMethod]\r
1016         public void BattleResult_280_854()\r
1017         {\r
1018             _questInfo.InspectQuestList(CreateQuestList(new[] {280, 854}));\r
1019 \r
1020             _battleInfo.InjectResultStatus(\r
1021                 ShipStatusList(1, 1, 1, 1, 1, 1), new ShipStatus[0],\r
1022                 new ShipStatus[0], new ShipStatus[0]);\r
1023 \r
1024             InjectMapNext(24, 5);\r
1025             InjectBattleResult("S");\r
1026             Assert.IsTrue(_questInfo.Quests[1].Count.NowArray[0] == 1);\r
1027         }\r
1028 \r
1029         /// <summary>\r
1030         /// 888と893以降を同時に遂行していると893以降がカウントされないことがある\r
1031         /// </summary>\r
1032         [TestMethod]\r
1033         public void BattleResult_888_893()\r
1034         {\r
1035             _questInfo.InspectQuestList(CreateQuestList(new[] {888, 893}));\r
1036 \r
1037             _battleInfo.InjectResultStatus(\r
1038                 ShipStatusList(1, 1, 1, 1, 1, 1), new ShipStatus[0],\r
1039                 new ShipStatus[0], new ShipStatus[0]);\r
1040 \r
1041             InjectMapNext(71, 5);\r
1042             InjectBattleResult("S");\r
1043             Assert.IsTrue(_questInfo.Quests[1].Count.NowArray[1] == 1);\r
1044         }\r
1045 \r
1046         /// <summary>\r
1047         /// 302: 大規模演習\r
1048         /// 303: 「演習」で練度向上!\r
1049         /// 304: 「演習」で他提督を圧倒せよ!\r
1050         /// 311: 精鋭艦隊演習\r
1051         /// 315: 春季大演習\r
1052         /// </summary>\r
1053         [TestMethod]\r
1054         public void PracticeResult_303_304_302_311_315()\r
1055         {\r
1056             _questInfo.InspectQuestList(CreateQuestList(new[] {302, 303, 304, 311, 315}));\r
1057 \r
1058             _battleInfo.InjectResultStatus(new[]\r
1059             {\r
1060                 ShipStatus(2, 543), ShipStatus(3, 488)\r
1061             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1062             InjectPracticeResult("C");\r
1063             InjectPracticeResult("A");\r
1064             PAssert.That(() =>\r
1065                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1066                     .SequenceEqual(new[]\r
1067                     {\r
1068                         new {Id = 302, Now = 1}, new {Id = 303, Now = 2}, new {Id = 304, Now = 1},\r
1069                         new {Id = 311, Now = 1}, new {Id = 315, Now = 1}\r
1070                     }));\r
1071         }\r
1072 \r
1073         /// <summary>\r
1074         /// 318: 給糧艦「伊良湖」の支援\r
1075         /// </summary>\r
1076         [TestMethod]\r
1077         public void PracticeResult_318()\r
1078         {\r
1079             _questInfo.InspectQuestList(CreateQuestList(new[] {318}));\r
1080             var q318 = _questInfo.Quests[0];\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 \r
1087             InjectPracticeResult("B");\r
1088             Assert.IsTrue(q318.Count.Now == 0, "軽巡1隻");\r
1089             _battleInfo.Result.Friend.Main[0] = ShipStatus(3, 200);\r
1090             _questCounter.StartPractice("api%5Fdeck%5Fid=2");\r
1091             InjectPracticeResult("B");\r
1092             Assert.IsTrue(q318.Count.Now == 0, "第2艦隊");\r
1093             _questCounter.StartPractice("api%5Fdeck%5Fid=1"); // 第一艦隊\r
1094             InjectPracticeResult("C");\r
1095             Assert.IsTrue(q318.Count.Now == 0, "敗北");\r
1096             InjectPracticeResult("B");\r
1097             Assert.IsTrue(q318.Count.Now == 1);\r
1098 \r
1099             q318.Count.Now = 2;\r
1100             _questInfo.InspectQuestList(CreateQuestList(new[] {318}));\r
1101             Assert.IsTrue(q318.Count.Now == 2, "進捗調節しない");\r
1102         }\r
1103 \r
1104         /// <summary>\r
1105         /// 330: 空母機動部隊、演習始め!\r
1106         /// </summary>\r
1107         [TestMethod]\r
1108         public void PracticeResult_330()\r
1109         {\r
1110             _questInfo.InspectQuestList(CreateQuestList(new[] {330}));\r
1111             var q330 = _questInfo.Quests[0];\r
1112 \r
1113             _battleInfo.InjectResultStatus(\r
1114                 ShipStatusList(18, 7, 2, 2),\r
1115                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1116             InjectPracticeResult("B");\r
1117             Assert.AreEqual(1, q330.Count.Now, "装甲空母、軽空母");\r
1118 \r
1119             _battleInfo.Result.Friend.Main = ShipStatusList(11, 7, 2, 2);\r
1120             InjectPracticeResult("B");\r
1121             Assert.AreEqual(2, q330.Count.Now, "正規空母、軽空母");\r
1122 \r
1123             q330.Count.Now = 0;\r
1124             InjectPracticeResult("C");\r
1125             Assert.AreEqual(0, q330.Count.Now, "敗北");\r
1126 \r
1127             _battleInfo.Result.Friend.Main = ShipStatusList(2, 7, 11, 2);\r
1128             InjectPracticeResult("B");\r
1129             Assert.AreEqual(0, q330.Count.Now, "旗艦空母以外");\r
1130 \r
1131             _battleInfo.Result.Friend.Main = ShipStatusList(11, 2, 2, 2);\r
1132             InjectPracticeResult("B");\r
1133             Assert.AreEqual(0, q330.Count.Now, "空母一隻");\r
1134 \r
1135             _battleInfo.Result.Friend.Main = ShipStatusList(11, 7, 3, 2);\r
1136             InjectPracticeResult("B");\r
1137             Assert.AreEqual(0, q330.Count.Now, "駆逐一隻");\r
1138         }\r
1139 \r
1140         /// <summary>\r
1141         /// 402: 「遠征」を3回成功させよう!\r
1142         /// 403: 「遠征」を10回成功させよう!\r
1143         /// 404: 大規模遠征作戦、発令!\r
1144         /// 410: 南方への輸送作戦を成功させよ!\r
1145         /// 411: 南方への鼠輸送を継続実施せよ!\r
1146         /// </summary>\r
1147         [TestMethod]\r
1148         public void MissionResult_402_403_404_410_411()\r
1149         {\r
1150             _questInfo.InspectQuestList(CreateQuestList(new[] {402, 403, 404, 410, 411}));\r
1151 \r
1152             _questCounter.InspectDeck(Js(\r
1153                 new[]\r
1154                 {\r
1155                     new {api_id = 2, api_mission = new[] {2, 6}},\r
1156                     new {api_id = 3, api_mission = new[] {2, 37}},\r
1157                     new {api_id = 4, api_mission = new[] {2, 2}}\r
1158                 }));\r
1159             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1160             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 2}));\r
1161             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 0}));\r
1162             PAssert.That(() =>\r
1163                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1164                     .SequenceEqual(new[]\r
1165                     {\r
1166                         new {Id = 402, Now = 2}, new {Id = 403, Now = 2}, new {Id = 404, Now = 2},\r
1167                         new {Id = 410, Now = 1}, new {Id = 411, Now = 1}\r
1168                     }));\r
1169         }\r
1170 \r
1171         /// <summary>\r
1172         /// 426: 海上通商航路の警戒を厳とせよ!\r
1173         /// </summary>\r
1174         [TestMethod]\r
1175         public void MissionResult_426()\r
1176         {\r
1177             var quest = InjectQuest(426);\r
1178 \r
1179             _questCounter.InspectDeck(Js(\r
1180                 new[]\r
1181                 {\r
1182                     new {api_id = 2, api_mission = new[] {2, 3}},\r
1183                     new {api_id = 3, api_mission = new[] {2, 4}},\r
1184                     new {api_id = 4, api_mission = new[] {2, 5}}\r
1185                 }));\r
1186             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1187             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1188             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1189             Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 0}));\r
1190             _questCounter.InspectDeck(Js(\r
1191                 new[]\r
1192                 {\r
1193                     new {api_id = 2, api_mission = new[] {2, 10}}\r
1194                 }));\r
1195             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1196             Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1}));\r
1197         }\r
1198 \r
1199         /// <summary>\r
1200         /// 428: 近海に侵入する敵潜を制圧せよ!\r
1201         /// </summary>\r
1202         [TestMethod]\r
1203         public void MissionResult_428()\r
1204         {\r
1205             var quest = InjectQuest(428);\r
1206 \r
1207             _questCounter.InspectDeck(Js(\r
1208                 new[]\r
1209                 {\r
1210                     new {api_id = 2, api_mission = new[] {2, 4}},\r
1211                     new {api_id = 3, api_mission = new[] {2, 101}},\r
1212                     new {api_id = 4, api_mission = new[] {2, 102}}\r
1213                 }));\r
1214             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1215             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1216             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1217             Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1}));\r
1218         }\r
1219 \r
1220         /// <summary>\r
1221         /// 503: 艦隊大整備!\r
1222         /// 504: 艦隊酒保祭り!\r
1223         /// </summary>\r
1224         [TestMethod]\r
1225         public void PowerUp_503_504()\r
1226         {\r
1227             _questInfo.InspectQuestList(CreateQuestList(new[] {503, 504}));\r
1228 \r
1229             _questCounter.CountNyukyo();\r
1230             _questCounter.CountCharge();\r
1231             PAssert.That(() =>\r
1232                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1233                     .SequenceEqual(new[] {new {Id = 503, Now = 1}, new {Id = 504, Now = 1}}));\r
1234         }\r
1235 \r
1236         /// <summary>\r
1237         /// 605: 新装備「開発」指令\r
1238         /// 606: 新造艦「建造」指令\r
1239         /// 607: 装備「開発」集中強化!\r
1240         /// 608: 艦娘「建造」艦隊強化!\r
1241         /// 609: 軍縮条約対応!\r
1242         /// 619: 装備の改修強化\r
1243         /// </summary>\r
1244         [TestMethod]\r
1245         public void Kousyou_605_606_607_608_609_619()\r
1246         {\r
1247             _questInfo.InspectQuestList(CreateQuestList(new[] {605, 606, 607, 608, 609, 619}));\r
1248 \r
1249             _questCounter.InspectCreateItem(\r
1250                 "api_verno=1&api_item1=10&api_item2=10&api_item3=30&api_item4=10&api_multiple_flag=0");\r
1251             _questCounter.InspectCreateItem(\r
1252                 "api_verno=1&api_item1=10&api_item2=10&api_item3=30&api_item4=10&api_multiple_flag=1");\r
1253             _questCounter.CountCreateShip();\r
1254             _questCounter.InspectDestroyShip("api%5Fship%5Fid=98159%2C98166%2C98168&api%5Fverno=1");\r
1255             _questCounter.CountRemodelSlot();\r
1256             PAssert.That(() =>\r
1257                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1258                     .SequenceEqual(new[]\r
1259                     {\r
1260                         new {Id = 605, Now = 4}, new {Id = 606, Now = 1}, new {Id = 607, Now = 4},\r
1261                         new {Id = 608, Now = 1}, new {Id = 609, Now = 3}, new {Id = 619, Now = 1}\r
1262                     }));\r
1263         }\r
1264 \r
1265         /// <summary>\r
1266         /// 613: 資源の再利用\r
1267         /// 638: 対空機銃量産\r
1268         /// 643: 主力「陸攻」の調達\r
1269         /// 645: 「洋上補給」物資の調達\r
1270         /// 663: 新型艤装の継続研究\r
1271         /// 673: 装備開発力の整備\r
1272         /// 674: 工廠環境の整備\r
1273         /// 675: 運用装備の統合整備\r
1274         /// 676: 装備開発力の集中整備\r
1275         /// 677: 継戦支援能力の整備\r
1276         /// 678: 主力艦上戦闘機の更新\r
1277         /// 680: 対空兵装の整備拡充\r
1278         /// 688: 航空戦力の強化\r
1279         /// </summary>\r
1280         [TestMethod]\r
1281         public void DestroyItem_613_638_643_645_663_673_674_675_676_677_678_680_686_688()\r
1282         {\r
1283             _itemInfo.InjectItemSpec(new[]\r
1284             {\r
1285                 new ItemSpec {Id = 1, Name = "12cm単装砲", Type = 1},\r
1286                 new ItemSpec {Id = 37, Name = "7.7mm機銃", Type = 21},\r
1287                 new ItemSpec {Id = 19, Name = "九六式艦戦", Type = 6},\r
1288                 new ItemSpec {Id = 4, Name = "14cm単装砲", Type = 2},\r
1289                 new ItemSpec {Id = 11, Name = "15.2cm単装砲", Type = 4},\r
1290                 new ItemSpec {Id = 75, Name = "ドラム缶(輸送用)", Type = 30},\r
1291                 new ItemSpec {Id = 7, Name = "35.6cm連装砲", Type = 3},\r
1292                 new ItemSpec {Id = 25, Name = "零式水上偵察機", Type = 10},\r
1293                 new ItemSpec {Id = 13, Name = "61cm三連装魚雷", Type = 5},\r
1294                 new ItemSpec {Id = 20, Name = "零式艦戦21型", Type = 6},\r
1295                 new ItemSpec {Id = 28, Name = "22号水上電探", Type = 12},\r
1296                 new ItemSpec {Id = 31, Name = "32号水上電探", Type = 13},\r
1297                 new ItemSpec {Id = 35, Name = "三式弾", Type = 18},\r
1298                 new ItemSpec {Id = 23, Name = "九九式艦爆", Type = 7},\r
1299                 new ItemSpec {Id = 16, Name = "九七式艦攻", Type = 8},\r
1300                 new ItemSpec {Id = 3, Name = "10cm連装高角砲", Type = 1},\r
1301                 new ItemSpec {Id = 121, Name = "94式高射装置", Type = 36}\r
1302             });\r
1303             var items = new[] {1, 37, 19, 4, 11, 75, 7, 25, 13, 20, 28, 31, 35, 23, 16, 3, 121};\r
1304             _itemInfo.InjectItems(items);\r
1305             var questList = new[] {613, 638, 643, 645, 663, 673, 674, 675, 676, 677, 678, 680, 686, 688};\r
1306             _questInfo.AcceptMax = questList.Length;\r
1307             _questInfo.InspectQuestList(CreateQuestList(questList));\r
1308             _questCounter.InspectDestroyItem(\r
1309                 $"api%5Fslotitem%5Fids={string.Join("%2C", Enumerable.Range(1, items.Length))}&api%5Fverno=1", null);\r
1310             var scalar = new[]\r
1311             {\r
1312                 new {Id = 613, Now = 1}, new {Id = 638, Now = 1}, new {Id = 643, Now = 1}, new {Id = 645, Now = 1},\r
1313                 new {Id = 663, Now = 1}, new {Id = 673, Now = 2}, new {Id = 674, Now = 1}\r
1314             };\r
1315             foreach (var e in scalar)\r
1316             {\r
1317                 var c = Array.Find(_questInfo.Quests, q => q.Id == e.Id).Count;\r
1318                 Assert.IsTrue(c.Id == e.Id && c.Now == e.Now, $"{c.Id}");\r
1319             }\r
1320             var array = new[]\r
1321             {\r
1322                 new {Id = 675, NowArray = new[] {2, 1}}, new {Id = 676, NowArray = new[] {1, 1, 1}},\r
1323                 new {Id = 677, NowArray = new[] {1, 1, 1}}, new {Id = 678, NowArray = new[] {1, 1}},\r
1324                 new {Id = 680, NowArray = new[] {1, 2}}, new {Id = 686, NowArray = new[] {1, 1}},\r
1325                 new {Id = 688, NowArray = new[] {2, 1, 1, 1}}\r
1326             };\r
1327             foreach (var e in array)\r
1328             {\r
1329                 var c = Array.Find(_questInfo.Quests, q => q.Id == e.Id).Count;\r
1330                 Assert.IsTrue(c.Id == e.Id && c.NowArray.SequenceEqual(e.NowArray), $"{c.Id}");\r
1331             }\r
1332         }\r
1333 \r
1334         /// <summary>\r
1335         /// 702: 艦の「近代化改修」を実施せよ!\r
1336         /// 703: 「近代化改修」を進め、戦備を整えよ!\r
1337         /// </summary>\r
1338         [TestMethod]\r
1339         public void PowerUp_702_703()\r
1340         {\r
1341             _questInfo.InspectQuestList(CreateQuestList(new[] {702, 703}));\r
1342             _questCounter.InspectPowerUp(Js(new {api_powerup_flag = 1}));\r
1343             PAssert.That(() =>\r
1344                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1345                     .SequenceEqual(new[] {new {Id = 702, Now = 1}, new {Id = 703, Now = 1}}));\r
1346         }\r
1347     }\r
1348 }