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