OSDN Git Service

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