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         /// 822: 沖ノ島海域迎撃戦\r
774         /// 854: 戦果拡張任務!「Z作戦」前段作戦\r
775         /// </summary>\r
776         [TestMethod]\r
777         public void BattleResult_822_854()\r
778         {\r
779             InjectQuestList(new[] {822, 854});\r
780             var c822 = _questInfo.Quests[0].Count;\r
781             var c854 = _questInfo.Quests[1].Count;\r
782 \r
783             InjectMapNext(24, 4);\r
784             InjectBattleResult("S");\r
785 \r
786             PAssert.That(() => c854.NowArray.SequenceEqual(new[] {0, 0, 0, 0}));\r
787             Assert.AreEqual(0, c822.Now);\r
788 \r
789             InjectMapNext(24, 5);\r
790             InjectBattleResult("A");\r
791             InjectMapNext(61, 5);\r
792             InjectBattleResult("A");\r
793             InjectMapNext(63, 5);\r
794             InjectBattleResult("A");\r
795             InjectMapNext(64, 5);\r
796             InjectBattleResult("S");\r
797             PAssert.That(() => c854.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
798             Assert.AreEqual(0, c822.Now);\r
799             InjectMapNext(24, 5);\r
800             InjectBattleResult("S");\r
801             PAssert.That(() => c854.NowArray.SequenceEqual(new[] {2, 1, 1, 1}));\r
802             Assert.AreEqual(1, c822.Now);\r
803         }\r
804 \r
805         /// <summary>\r
806         /// 845: 発令!「西方海域作戦」\r
807         /// </summary>\r
808         [TestMethod]\r
809         public void BattleResult_845()\r
810         {\r
811             var count = InjectQuest(845);\r
812 \r
813             InjectMapNext(41, 4);\r
814             InjectBattleResult("S");\r
815             InjectMapNext(41, 5);\r
816             InjectBattleResult("A");\r
817             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}));\r
818 \r
819             InjectMapNext(41, 5);\r
820             InjectBattleResult("S");\r
821             InjectMapNext(42, 5);\r
822             InjectBattleResult("S");\r
823             InjectMapNext(43, 5);\r
824             InjectBattleResult("S");\r
825             InjectMapNext(44, 5);\r
826             InjectBattleResult("S");\r
827             InjectMapNext(45, 5);\r
828             InjectBattleResult("S");\r
829             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}));\r
830         }\r
831 \r
832         /// <summary>\r
833         /// 861: 強行輸送艦隊、抜錨!\r
834         /// </summary>\r
835         [TestMethod]\r
836         public void MapNext_861()\r
837         {\r
838             var count = InjectQuest(861);\r
839 \r
840             _battleInfo.InjectResultStatus(\r
841                 ShipStatusList(10, 22, 2, 2, 2, 2), new ShipStatus[0],\r
842                 new ShipStatus[0], new ShipStatus[0]);\r
843 \r
844             InjectMapNext(16, 4);\r
845             Assert.AreEqual(0, count.Now);\r
846 \r
847             InjectMapNext(16, 8);\r
848             Assert.AreEqual(1, count.Now);\r
849 \r
850             _battleInfo.Result.Friend.Main[1].NowHp = 0;\r
851             InjectMapNext(16, 8);\r
852             Assert.AreEqual(1, count.Now, "轟沈あり");\r
853             _battleInfo.Result.Friend.Main[1].NowHp = 1;\r
854 \r
855             _battleInfo.Result.Friend.Main[2].Spec.ShipType = 10;\r
856             InjectMapNext(16, 8);\r
857             Assert.AreEqual(1, count.Now, "補給・航戦が3隻");\r
858         }\r
859 \r
860         /// <summary>\r
861         /// 862: 前線の航空偵察を実施せよ!\r
862         /// </summary>\r
863         [TestMethod]\r
864         public void BattleResult_862()\r
865         {\r
866             var count = InjectQuest(862);\r
867 \r
868             _battleInfo.InjectResultStatus(\r
869                 ShipStatusList(2, 3, 3, 2, 2, 16), new ShipStatus[0],\r
870                 new ShipStatus[0], new ShipStatus[0]);\r
871 \r
872             InjectMapNext(63, 4);\r
873             InjectBattleResult("A");\r
874             Assert.AreEqual(0, count.Now);\r
875 \r
876             InjectMapNext(63, 5);\r
877             InjectBattleResult("B");\r
878             Assert.AreEqual(0, count.Now);\r
879             InjectBattleResult("A");\r
880             Assert.AreEqual(1, count.Now);\r
881 \r
882             _battleInfo.Result.Friend.Main[1].NowHp = 0;\r
883             InjectBattleResult("A");\r
884             Assert.AreEqual(1, count.Now, "轟沈あり");\r
885             _battleInfo.Result.Friend.Main[1].NowHp = 1;\r
886 \r
887             _battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;\r
888             _battleInfo.Result.Friend.Main[4].Spec.ShipType = 16;\r
889             InjectBattleResult("A");\r
890             Assert.AreEqual(2, count.Now, "軽巡3隻水母2隻");\r
891         }\r
892 \r
893         /// <summary>\r
894         /// 872: 戦果拡張任務!「Z作戦」後段作戦\r
895         /// </summary>\r
896         [TestMethod]\r
897         public void BattleResult_872()\r
898         {\r
899             var count = InjectQuest(872);\r
900 \r
901             InjectMapNext(55, 4);\r
902             InjectBattleResult("A");\r
903             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}));\r
904             InjectBattleResult("S");\r
905             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}));\r
906             InjectMapNext(55, 5);\r
907             InjectBattleResult("S");\r
908             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 1, 0, 0}));\r
909 \r
910             InjectMapNext(62, 5);\r
911             InjectBattleResult("S");\r
912             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 1, 1, 0}));\r
913             InjectMapNext(65, 5);\r
914             InjectBattleResult("S");\r
915             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 1, 1, 1}));\r
916             _questCounter.InspectMapNext(Js(new\r
917             {\r
918                 api_maparea_id = 7,\r
919                 api_mapinfo_no = 2,\r
920                 api_no = 15,\r
921                 api_event_id = 5\r
922             }));\r
923             InjectBattleResult("S");\r
924             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "7-2M");\r
925         }\r
926 \r
927         /// <summary>\r
928         /// 873: 北方海域警備を実施せよ!\r
929         /// </summary>\r
930         [TestMethod]\r
931         public void BattleResult_873()\r
932         {\r
933             var count = InjectQuest(873);\r
934 \r
935             _battleInfo.InjectResultStatus(\r
936                 ShipStatusList(3, 2, 2, 2, 2, 2), new ShipStatus[0],\r
937                 new ShipStatus[0], new ShipStatus[0]);\r
938 \r
939             InjectMapNext(31, 4);\r
940             InjectBattleResult("A");\r
941             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0}));\r
942 \r
943             InjectMapNext(31, 5);\r
944             InjectBattleResult("B");\r
945             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0}));\r
946             InjectBattleResult("A");\r
947             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0}));\r
948 \r
949             _battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;\r
950             InjectBattleResult("A");\r
951             Assert.AreEqual(1, _questInfo.Quests[0].Count.NowArray[0], "軽巡なし");\r
952             _battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;\r
953 \r
954             InjectMapNext(32, 5);\r
955             InjectBattleResult("A");\r
956             InjectMapNext(33, 5);\r
957             InjectBattleResult("A");\r
958             Assert.IsTrue(_questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
959         }\r
960 \r
961         /// <summary>\r
962         /// 875: 精鋭「三一駆」、鉄底海域に突入せよ!\r
963         /// </summary>\r
964         [TestMethod]\r
965         public void BattleResult_875()\r
966         {\r
967             var count = InjectQuest(875);\r
968 \r
969             _battleInfo.InjectResultStatus(new[]\r
970             {\r
971                 ShipStatus("長波改二"), ShipStatus("Iowa改"), ShipStatus("Saratoga Mk.II"),\r
972                 ShipStatus("瑞鶴改二甲"), ShipStatus("望月改"), ShipStatus("朝霜改")\r
973             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
974 \r
975             InjectMapNext(54, 4);\r
976             InjectBattleResult("S");\r
977             Assert.AreEqual(0, count.Now);\r
978 \r
979             InjectMapNext(54, 5);\r
980             InjectBattleResult("A");\r
981             Assert.AreEqual(0, count.Now);\r
982             InjectBattleResult("S");\r
983             Assert.AreEqual(1, count.Now);\r
984 \r
985             _battleInfo.Result.Friend.Main[5].NowHp = 0;\r
986             InjectBattleResult("S");\r
987             Assert.AreEqual(1, count.Now, "朝霜改轟沈");\r
988             _battleInfo.Result.Friend.Main[5].NowHp = 1;\r
989 \r
990             _battleInfo.Result.Friend.Main[0] = ShipStatus("高波改");\r
991             InjectBattleResult("S");\r
992             Assert.AreEqual(1, count.Now, "長波改二なし");\r
993             _battleInfo.Result.Friend.Main[0] = ShipStatus("長波改二");\r
994 \r
995             _battleInfo.Result.Friend.Main[5] = ShipStatus("高波改");\r
996             InjectBattleResult("S");\r
997             Assert.AreEqual(2, count.Now, "高波改");\r
998             _battleInfo.Result.Friend.Main[5] = ShipStatus("沖波改");\r
999             InjectBattleResult("S");\r
1000             Assert.AreEqual(3, count.Now, "沖波改");\r
1001             _battleInfo.Result.Friend.Main[5] = ShipStatus("朝霜改二");\r
1002             InjectBattleResult("S");\r
1003             Assert.AreEqual(4, count.Now, "朝霜改二");\r
1004         }\r
1005 \r
1006         /// <summary>\r
1007         /// 888: 新編成「三川艦隊」、鉄底海峡に突入せよ!\r
1008         /// </summary>\r
1009         [TestMethod]\r
1010         public void BattleResult_888()\r
1011         {\r
1012             var count = InjectQuest(888);\r
1013 \r
1014             _battleInfo.InjectResultStatus(new[]\r
1015             {\r
1016                 ShipStatus("鳥海改二"), ShipStatus("青葉改"), ShipStatus("衣笠改二"),\r
1017                 ShipStatus("加古改二"), ShipStatus("夕立改二"), ShipStatus("綾波改二")\r
1018             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1019 \r
1020             InjectMapNext(51, 4);\r
1021             InjectBattleResult("S");\r
1022             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0}));\r
1023 \r
1024             InjectMapNext(51, 5);\r
1025             InjectBattleResult("A");\r
1026             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0}));\r
1027             InjectBattleResult("S");\r
1028             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0}));\r
1029             _battleInfo.Result.Friend.Main[0].NowHp = 0;\r
1030             InjectBattleResult("S");\r
1031             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0}), "轟沈あり");\r
1032             _battleInfo.Result.Friend.Main[0].NowHp = 1;\r
1033 \r
1034             _battleInfo.Result.Friend.Main[0] = ShipStatus("妙高改二");\r
1035             InjectBattleResult("S");\r
1036             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0}), "三川艦隊3隻");\r
1037 \r
1038             _battleInfo.Result.Friend.Main[0] = ShipStatus("夕張改二特");\r
1039             InjectMapNext(53, 5);\r
1040             InjectBattleResult("S");\r
1041             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0}));\r
1042 \r
1043             _battleInfo.Result.Friend.Main[0] = ShipStatus("天龍改二");\r
1044             _battleInfo.Result.Friend.Main[1] = ShipStatus("古鷹改二");\r
1045             InjectMapNext(54, 5);\r
1046             InjectBattleResult("S");\r
1047             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
1048         }\r
1049 \r
1050         /// <summary>\r
1051         /// 893: 泊地周辺海域の安全確保を徹底せよ!\r
1052         /// </summary>\r
1053         [TestMethod]\r
1054         public void BattleResult_893()\r
1055         {\r
1056             var count = InjectQuest(893);\r
1057 \r
1058             InjectMapNext(15, 4);\r
1059             InjectBattleResult("S");\r
1060             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}));\r
1061 \r
1062             InjectMapNext(15, 5);\r
1063             InjectBattleResult("A");\r
1064             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "A勝利はカウントしない");\r
1065             InjectBattleResult("S");\r
1066             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "1-5");\r
1067 \r
1068             InjectMapNext(71, 5);\r
1069             InjectBattleResult("S");\r
1070             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0}), "7-1");\r
1071 \r
1072             _questCounter.InspectMapNext(Js(new\r
1073             {\r
1074                 api_maparea_id = 7,\r
1075                 api_mapinfo_no = 2,\r
1076                 api_no = 7,\r
1077                 api_event_id = 5\r
1078             }));\r
1079             InjectBattleResult("S");\r
1080             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}), "7-2G");\r
1081 \r
1082             _questCounter.InspectMapNext(Js(new\r
1083             {\r
1084                 api_maparea_id = 7,\r
1085                 api_mapinfo_no = 2,\r
1086                 api_no = 15,\r
1087                 api_event_id = 5\r
1088             }));\r
1089             InjectBattleResult("S");\r
1090             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "7-2M");\r
1091         }\r
1092 \r
1093         /// <summary>\r
1094         /// 894: 空母戦力の投入による兵站線戦闘哨戒\r
1095         /// </summary>\r
1096         [TestMethod]\r
1097         public void BattleResult_894()\r
1098         {\r
1099             var count = InjectQuest(894);\r
1100             _battleInfo.InjectResultStatus(\r
1101                 ShipStatusList(2, 2, 2, 2, 2, 2),\r
1102                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1103 \r
1104             InjectMapNext(13, 5);\r
1105             InjectBattleResult("S");\r
1106             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}), "空母なしはカウントしない");\r
1107 \r
1108             _battleInfo.Result.Friend.Main[0].Spec.ShipType = 7;\r
1109             InjectBattleResult("A");\r
1110             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}), "A勝利はカウントしない");\r
1111 \r
1112             InjectBattleResult("S");\r
1113             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "1-3");\r
1114 \r
1115             InjectMapNext(14, 4);\r
1116             InjectBattleResult("S");\r
1117             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "1-4");\r
1118 \r
1119             InjectMapNext(14, 5);\r
1120             InjectBattleResult("S");\r
1121             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0, 0}), "1-4");\r
1122 \r
1123             InjectMapNext(21, 5);\r
1124             InjectBattleResult("S");\r
1125             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0, 0}), "2-1");\r
1126 \r
1127             InjectMapNext(22, 5);\r
1128             InjectBattleResult("S");\r
1129             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 0}), "2-2");\r
1130 \r
1131             InjectMapNext(23, 5);\r
1132             InjectBattleResult("S");\r
1133             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}), "2-3");\r
1134         }\r
1135 \r
1136         /// <summary>\r
1137         /// 拡張「六水戦」、最前線へ!\r
1138         /// </summary>\r
1139         [TestMethod]\r
1140         public void BattleResult_903()\r
1141         {\r
1142             var count = InjectQuest(903);\r
1143             _battleInfo.InjectResultStatus(new[] {ShipStatus("夕張改二"), ShipStatus("睦月"), ShipStatus("綾波")},\r
1144                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1145 \r
1146             InjectMapNext(51, 5);\r
1147             InjectBattleResult("S");\r
1148             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "六水戦駆逐が1隻");\r
1149 \r
1150             _battleInfo.Result.Friend.Main[2] = ShipStatus("如月");\r
1151             InjectBattleResult("A");\r
1152             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "A勝利はカウントしない");\r
1153 \r
1154             InjectBattleResult("S");\r
1155             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "5-1");\r
1156 \r
1157             InjectMapNext(54, 4);\r
1158             InjectBattleResult("S");\r
1159             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "ボス以外はカウントしない");\r
1160 \r
1161             _battleInfo.Result.Friend.Main[0] = ShipStatus("夕張改");\r
1162             InjectBattleResult("S");\r
1163             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "旗艦が夕張改");\r
1164 \r
1165             _battleInfo.Result.Friend.Main = new[] {ShipStatus("睦月"), ShipStatus("如月"), ShipStatus("夕張改二")};\r
1166             InjectMapNext(54, 5);\r
1167             InjectBattleResult("S");\r
1168             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "旗艦が夕張改二ではない");\r
1169 \r
1170             _battleInfo.Result.Friend.Main = new[] {ShipStatus("夕張改二"), ShipStatus("弥生"), ShipStatus("卯月")};\r
1171             InjectMapNext(54, 5);\r
1172             InjectBattleResult("S");\r
1173             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0}), "5-4");\r
1174 \r
1175             _battleInfo.Result.Friend.Main = new[] {ShipStatus("夕張改二"), ShipStatus("菊月"), ShipStatus("望月")};\r
1176             InjectMapNext(64, 5);\r
1177             InjectBattleResult("S");\r
1178             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}), "6-4");\r
1179 \r
1180             InjectMapNext(65, 5);\r
1181             InjectBattleResult("S");\r
1182             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "6-5");\r
1183 \r
1184             _battleInfo.Result.Friend.Main = new[] {ShipStatus("夕張改二"), ShipStatus("由良改")};\r
1185             InjectBattleResult("S");\r
1186             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "由良改");\r
1187 \r
1188             _battleInfo.Result.Friend.Main = new[] {ShipStatus("夕張改二"), ShipStatus("由良改二")};\r
1189             InjectBattleResult("S");\r
1190             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 2}), "由良改二");\r
1191         }\r
1192 \r
1193         /// <summary>\r
1194         /// 904: 精鋭「十九駆」、躍り出る!\r
1195         /// </summary>\r
1196         [TestMethod]\r
1197         public void BattleResult_904()\r
1198         {\r
1199             var count = InjectQuest(904);\r
1200             _battleInfo.InjectResultStatus(\r
1201                 new[] {ShipStatus("綾波改二"), ShipStatus("敷波")},\r
1202                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1203 \r
1204             InjectMapNext(25, 5);\r
1205             InjectBattleResult("S");\r
1206             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "敷波はカウントしない");\r
1207 \r
1208             _battleInfo.Result.Friend.Main[1] = ShipStatus("敷波改二");\r
1209             InjectBattleResult("A");\r
1210             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "A勝利はカウントしない");\r
1211 \r
1212             InjectBattleResult("S");\r
1213             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "2-5");\r
1214 \r
1215             InjectMapNext(34, 4);\r
1216             InjectBattleResult("S");\r
1217             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "ボス以外はカウントしない");\r
1218 \r
1219             InjectMapNext(34, 5);\r
1220             InjectBattleResult("S");\r
1221             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0}), "3-4");\r
1222 \r
1223             InjectMapNext(45, 5);\r
1224             InjectBattleResult("S");\r
1225             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}), "4-5");\r
1226 \r
1227             InjectMapNext(53, 5);\r
1228             InjectBattleResult("S");\r
1229             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "5-3");\r
1230         }\r
1231 \r
1232         /// <summary>\r
1233         /// 905: 「海防艦」、海を護る!\r
1234         /// </summary>\r
1235         [TestMethod]\r
1236         public void BattleResult_905()\r
1237         {\r
1238             var count = InjectQuest(905);\r
1239             _battleInfo.InjectResultStatus(\r
1240                 ShipStatusList(1, 1, 1, 2, 2, 2),\r
1241                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1242 \r
1243             InjectMapNext(11, 5);\r
1244             InjectBattleResult("A");\r
1245             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}), "6隻はカウントしない");\r
1246 \r
1247             _battleInfo.Result.Friend.Main[5] = new ShipStatus();\r
1248             InjectBattleResult("B");\r
1249             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}), "B勝利はカウントしない");\r
1250 \r
1251             InjectBattleResult("A");\r
1252             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "1-1");\r
1253 \r
1254             InjectMapNext(12, 4);\r
1255             InjectBattleResult("A");\r
1256             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "ボス以外はカウントしない");\r
1257 \r
1258             InjectMapNext(12, 5);\r
1259             InjectBattleResult("A");\r
1260             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0, 0}), "1-2");\r
1261 \r
1262             _battleInfo.Result.Friend.Main[0] = ShipStatus(2);\r
1263             InjectMapNext(13, 5);\r
1264             InjectBattleResult("A");\r
1265             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0, 0}), "海防艦2隻はカウントしない");\r
1266 \r
1267             _battleInfo.Result.Friend.Main[0] = ShipStatus(1);\r
1268             InjectBattleResult("A");\r
1269             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0, 0}), "1-3");\r
1270 \r
1271             InjectMapNext(15, 5);\r
1272             InjectBattleResult("A");\r
1273             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 0}), "1-5");\r
1274 \r
1275             InjectMapNext(16, 8);\r
1276             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}), "1-6");\r
1277         }\r
1278 \r
1279         /// <summary>\r
1280         /// 912: 工作艦「明石」護衛任務\r
1281         /// </summary>\r
1282         [TestMethod]\r
1283         public void BattleResult_912()\r
1284         {\r
1285             var count = InjectQuest(912);\r
1286             _battleInfo.InjectResultStatus(\r
1287                 new[] {ShipStatus("明石"), ShipStatus(2), ShipStatus(2), ShipStatus(1)},\r
1288                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1289 \r
1290             InjectMapNext(13, 5);\r
1291             InjectBattleResult("A");\r
1292             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}), "駆逐艦2隻はカウントしない");\r
1293 \r
1294             _battleInfo.Result.Friend.Main[3] = ShipStatus(2);\r
1295             InjectBattleResult("B");\r
1296             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}), "B勝利はカウントしない");\r
1297 \r
1298             InjectBattleResult("A");\r
1299             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "1-3");\r
1300 \r
1301             InjectMapNext(21, 4);\r
1302             InjectBattleResult("A");\r
1303             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "ボス以外はカウントしない");\r
1304 \r
1305             _battleInfo.Result.Friend.Main[0] = ShipStatus(2);\r
1306             _battleInfo.Result.Friend.Main[1] = ShipStatus("明石");\r
1307             InjectMapNext(21, 5);\r
1308             InjectBattleResult("A");\r
1309             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "旗艦明石以外はカウントしない");\r
1310 \r
1311             _battleInfo.Result.Friend.Main[0] = ShipStatus("明石");\r
1312             _battleInfo.Result.Friend.Main[1] = ShipStatus(2);\r
1313             InjectBattleResult("A");\r
1314             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0, 0}), "2-1");\r
1315 \r
1316             InjectMapNext(22, 5);\r
1317             InjectBattleResult("A");\r
1318             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0, 0}), "2-2");\r
1319 \r
1320             InjectMapNext(23, 5);\r
1321             InjectBattleResult("A");\r
1322             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 0}), "2-3");\r
1323 \r
1324             InjectMapNext(16, 8);\r
1325             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}), "1-6");\r
1326         }\r
1327 \r
1328         /// <summary>\r
1329         /// 912: 重巡戦隊、西へ!\r
1330         /// </summary>\r
1331         [TestMethod]\r
1332         public void BattleResult_914()\r
1333         {\r
1334             var count = InjectQuest(914);\r
1335             _battleInfo.InjectResultStatus(\r
1336                 new[] {ShipStatus(5), ShipStatus(5), ShipStatus(5), ShipStatus(1)},\r
1337                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1338 \r
1339             InjectMapNext(41, 5);\r
1340             InjectBattleResult("A");\r
1341             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "駆逐艦なしはカウントしない");\r
1342 \r
1343             _battleInfo.Result.Friend.Main[3] = ShipStatus(2);\r
1344             InjectBattleResult("B");\r
1345             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "B勝利はカウントしない");\r
1346 \r
1347             InjectBattleResult("A");\r
1348             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "4-1");\r
1349 \r
1350             InjectMapNext(42, 4);\r
1351             InjectBattleResult("A");\r
1352             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "ボス以外はカウントしない");\r
1353 \r
1354             InjectMapNext(42, 5);\r
1355             _battleInfo.Result.Friend.Main[0] = ShipStatus(6);\r
1356             InjectBattleResult("A");\r
1357             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "重巡2隻はカウントしない");\r
1358 \r
1359             _battleInfo.Result.Friend.Main[0] = ShipStatus(5);\r
1360             InjectBattleResult("A");\r
1361             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0}), "4-2");\r
1362 \r
1363             InjectMapNext(43, 5);\r
1364             InjectBattleResult("A");\r
1365             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}), "4-3");\r
1366 \r
1367             InjectMapNext(44, 5);\r
1368             InjectBattleResult("A");\r
1369             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "4-3");\r
1370         }\r
1371 \r
1372         /// <summary>\r
1373         /// 928: 歴戦「第十方面艦隊」、全力出撃!\r
1374         /// </summary>\r
1375         [TestMethod]\r
1376         public void BattleResult_928()\r
1377         {\r
1378             var count = InjectQuest(928);\r
1379             _battleInfo.InjectResultStatus(\r
1380                 new[] {ShipStatus("羽黒改二"), ShipStatus("那智"), ShipStatus(1), ShipStatus(1), ShipStatus(1), ShipStatus(1)},\r
1381                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1382 \r
1383             InjectMapNext(732, 5);\r
1384             InjectBattleResult("A");\r
1385             PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0}));\r
1386             InjectBattleResult("S");\r
1387             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0}));\r
1388 \r
1389             _battleInfo.Result.Friend.Main[0] = ShipStatus("妙高");\r
1390             _battleInfo.Result.Friend.Main[1] = ShipStatus("高雄");\r
1391             InjectMapNext(722, 5);\r
1392             InjectBattleResult("S");\r
1393             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0}));\r
1394 \r
1395             _battleInfo.Result.Friend.Main[0] = ShipStatus("神風");\r
1396             _battleInfo.Result.Friend.Main[1] = ShipStatus("高雄");\r
1397             InjectMapNext(42, 5);\r
1398             InjectBattleResult("S");\r
1399             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
1400         }\r
1401 \r
1402         /// <summary>\r
1403         /// 280と854以降を同時に遂行していると854以降がカウントされないことがある\r
1404         /// </summary>\r
1405         [TestMethod]\r
1406         public void BattleResult_280_854()\r
1407         {\r
1408             InjectQuestList(new[] {280, 854});\r
1409 \r
1410             _battleInfo.InjectResultStatus(\r
1411                 ShipStatusList(1, 1, 1, 1, 1, 1), new ShipStatus[0],\r
1412                 new ShipStatus[0], new ShipStatus[0]);\r
1413 \r
1414             InjectMapNext(24, 5);\r
1415             InjectBattleResult("S");\r
1416             Assert.AreEqual(1, _questInfo.Quests[1].Count.NowArray[0]);\r
1417         }\r
1418 \r
1419         /// <summary>\r
1420         /// 888と893以降を同時に遂行していると893以降がカウントされないことがある\r
1421         /// </summary>\r
1422         [TestMethod]\r
1423         public void BattleResult_888_893()\r
1424         {\r
1425             InjectQuestList(new[] {888, 893});\r
1426 \r
1427             _battleInfo.InjectResultStatus(\r
1428                 ShipStatusList(1, 1, 1, 1, 1, 1), new ShipStatus[0],\r
1429                 new ShipStatus[0], new ShipStatus[0]);\r
1430 \r
1431             InjectMapNext(71, 5);\r
1432             InjectBattleResult("S");\r
1433             Assert.AreEqual(1, _questInfo.Quests[1].Count.NowArray[1]);\r
1434         }\r
1435 \r
1436         /// <summary>\r
1437         /// 302: 大規模演習\r
1438         /// 303: 「演習」で練度向上!\r
1439         /// 304: 「演習」で他提督を圧倒せよ!\r
1440         /// 311: 精鋭艦隊演習\r
1441         /// 315: 春季大演習\r
1442         /// </summary>\r
1443         [TestMethod]\r
1444         public void PracticeResult_303_304_302_311_315()\r
1445         {\r
1446             InjectQuestList(new[] {302, 303, 304, 311, 315});\r
1447 \r
1448             _battleInfo.InjectResultStatus(new[]\r
1449             {\r
1450                 ShipStatus(2, 543), ShipStatus(3, 488)\r
1451             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1452             InjectPracticeResult("C");\r
1453             InjectPracticeResult("A");\r
1454             PAssert.That(() =>\r
1455                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1456                     .SequenceEqual(new[]\r
1457                     {\r
1458                         new {Id = 302, Now = 1}, new {Id = 303, Now = 2}, new {Id = 304, Now = 1},\r
1459                         new {Id = 311, Now = 1}, new {Id = 315, Now = 1}\r
1460                     }));\r
1461         }\r
1462 \r
1463         /// <summary>\r
1464         /// 318: 給糧艦「伊良湖」の支援\r
1465         /// </summary>\r
1466         [TestMethod]\r
1467         public void PracticeResult_318()\r
1468         {\r
1469             var count = InjectQuest(318);\r
1470 \r
1471             _battleInfo.InjectResultStatus(new[]\r
1472             {\r
1473                 ShipStatus(2, 543), ShipStatus(3, 488)\r
1474             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1475 \r
1476             InjectPracticeResult("B");\r
1477             Assert.AreEqual(0, count.Now, "軽巡1隻");\r
1478             _battleInfo.Result.Friend.Main[0] = ShipStatus(3, 200);\r
1479             _questCounter.StartPractice("api%5Fdeck%5Fid=2");\r
1480             InjectPracticeResult("B");\r
1481             Assert.AreEqual(0, count.Now, "第2艦隊");\r
1482             _questCounter.StartPractice("api%5Fdeck%5Fid=1"); // 第一艦隊\r
1483             InjectPracticeResult("C");\r
1484             Assert.AreEqual(0, count.Now, "敗北");\r
1485             InjectPracticeResult("B");\r
1486             Assert.AreEqual(1, count.Now);\r
1487 \r
1488             count.Now = 2;\r
1489             InjectQuestList(new[] {318});\r
1490             Assert.AreEqual(2, count.Now, "進捗調節しない");\r
1491         }\r
1492 \r
1493         /// <summary>\r
1494         /// 330: 空母機動部隊、演習始め!\r
1495         /// </summary>\r
1496         [TestMethod]\r
1497         public void PracticeResult_330()\r
1498         {\r
1499             var count = InjectQuest(330);\r
1500 \r
1501             _battleInfo.InjectResultStatus(\r
1502                 ShipStatusList(18, 7, 2, 2),\r
1503                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1504             InjectPracticeResult("B");\r
1505             Assert.AreEqual(0, count.Now, "B勝利でカウントしない");\r
1506 \r
1507             InjectPracticeResult("A");\r
1508             Assert.AreEqual(1, count.Now, "装甲空母、軽空母");\r
1509 \r
1510             _battleInfo.Result.Friend.Main = ShipStatusList(11, 7, 2, 2);\r
1511             InjectPracticeResult("A");\r
1512             Assert.AreEqual(2, count.Now, "正規空母、軽空母");\r
1513 \r
1514             count.Now = 0;\r
1515             InjectPracticeResult("C");\r
1516             Assert.AreEqual(0, count.Now, "敗北");\r
1517 \r
1518             _battleInfo.Result.Friend.Main = ShipStatusList(2, 7, 11, 2);\r
1519             InjectPracticeResult("A");\r
1520             Assert.AreEqual(0, count.Now, "旗艦空母以外");\r
1521 \r
1522             _battleInfo.Result.Friend.Main = ShipStatusList(11, 2, 2, 2);\r
1523             InjectPracticeResult("A");\r
1524             Assert.AreEqual(0, count.Now, "空母一隻");\r
1525 \r
1526             _battleInfo.Result.Friend.Main = ShipStatusList(11, 7, 3, 2);\r
1527             InjectPracticeResult("A");\r
1528             Assert.AreEqual(0, count.Now, "駆逐一隻");\r
1529         }\r
1530 \r
1531         /// <summary>\r
1532         /// 337: 「十八駆」演習!\r
1533         /// </summary>\r
1534         [TestMethod]\r
1535         public void PracticeResult_337()\r
1536         {\r
1537             var count = InjectQuest(337);\r
1538 \r
1539             _battleInfo.InjectResultStatus(new[]\r
1540             {\r
1541                 ShipStatus("霰"), ShipStatus("霰"),\r
1542                 ShipStatus("陽炎"), ShipStatus("不知火"),\r
1543                 ShipStatus("黒潮")\r
1544             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1545             InjectPracticeResult("A");\r
1546             Assert.AreEqual(0, count.Now, "A");\r
1547             InjectPracticeResult("S");\r
1548             Assert.AreEqual(1, count.Now);\r
1549             _battleInfo.Result.Friend.Main[0] = ShipStatus("涼風");\r
1550             InjectPracticeResult("S");\r
1551             Assert.AreEqual(1, count.Now, "霰→涼風");\r
1552             _battleInfo.Result.Friend.Main[4] = ShipStatus("霞改二");\r
1553             InjectPracticeResult("S");\r
1554             Assert.AreEqual(2, count.Now, "黒潮→霞改二");\r
1555         }\r
1556 \r
1557         /// <summary>\r
1558         /// 339: 「十九駆」演習!\r
1559         /// </summary>\r
1560         [TestMethod]\r
1561         public void PracticeResult_339()\r
1562         {\r
1563             var count = InjectQuest(339);\r
1564 \r
1565             _battleInfo.InjectResultStatus(new[]\r
1566             {\r
1567                 ShipStatus("磯波"), ShipStatus("浦波"),\r
1568                 ShipStatus("綾波"), ShipStatus("敷波"),\r
1569                 ShipStatus("初雪")\r
1570             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1571             InjectPracticeResult("A");\r
1572             Assert.AreEqual(0, count.Now, "A");\r
1573             InjectPracticeResult("S");\r
1574             Assert.AreEqual(1, count.Now);\r
1575             _battleInfo.Result.Friend.Main[0] = ShipStatus("深雪");\r
1576             InjectPracticeResult("S");\r
1577             Assert.AreEqual(1, count.Now, "磯波→深雪");\r
1578         }\r
1579 \r
1580         /// <summary>\r
1581         /// 342: 小艦艇群演習強化任務\r
1582         /// </summary>\r
1583         [TestMethod]\r
1584         public void PracticeResult_342()\r
1585         {\r
1586             var count = InjectQuest(342);\r
1587 \r
1588             _battleInfo.InjectResultStatus(new[] {ShipStatus(1), ShipStatus(1), ShipStatus(2), ShipStatus(5)},\r
1589                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1590             InjectPracticeResult("A");\r
1591             Assert.AreEqual(0, count.Now);\r
1592 \r
1593             InjectPracticeResult("B");\r
1594             Assert.AreEqual(0, count.Now);\r
1595 \r
1596             _battleInfo.Result.Friend.Main[3] = ShipStatus(2);\r
1597             InjectPracticeResult("A");\r
1598             Assert.AreEqual(1, count.Now);\r
1599 \r
1600             _battleInfo.Result.Friend.Main[3] = ShipStatus(3);\r
1601             InjectPracticeResult("A");\r
1602             Assert.AreEqual(2, count.Now);\r
1603 \r
1604             _battleInfo.Result.Friend.Main[3] = ShipStatus(4);\r
1605             InjectPracticeResult("A");\r
1606             Assert.AreEqual(3, count.Now);\r
1607 \r
1608             _battleInfo.Result.Friend.Main[3] = ShipStatus(21);\r
1609             InjectPracticeResult("A");\r
1610             Assert.AreEqual(4, count.Now);\r
1611         }\r
1612 \r
1613         /// <summary>\r
1614         /// 345: 演習ティータイム!\r
1615         /// </summary>\r
1616         [TestMethod]\r
1617         public void PracticeResult_345()\r
1618         {\r
1619             var count = InjectQuest(345);\r
1620 \r
1621             _battleInfo.InjectResultStatus(new []{ShipStatus("Warspite"), ShipStatus("金剛"), ShipStatus("Ark Royal"), ShipStatus("Richelieu"), ShipStatus("Perth")},\r
1622                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1623             InjectPracticeResult("B");\r
1624             Assert.AreEqual(0, count.Now);\r
1625 \r
1626             InjectPracticeResult("A");\r
1627             Assert.AreEqual(0, count.Now);\r
1628 \r
1629             _battleInfo.Result.Friend.Main[3] = ShipStatus("Jervis");\r
1630             InjectPracticeResult("A");\r
1631             Assert.AreEqual(1, count.Now);\r
1632 \r
1633             _battleInfo.Result.Friend.Main[0] = ShipStatus("Janus");\r
1634             InjectPracticeResult("A");\r
1635             Assert.AreEqual(2, count.Now);\r
1636 \r
1637             _battleInfo.Result.Friend.Main[1] = ShipStatus("Richelieu");\r
1638             InjectPracticeResult("A");\r
1639             Assert.AreEqual(2, count.Now);\r
1640         }\r
1641 \r
1642         /// <summary>\r
1643         /// 346: 最精鋭!主力オブ主力、演習開始!\r
1644         /// </summary>\r
1645         [TestMethod]\r
1646         public void PracticeResult_346()\r
1647         {\r
1648             var count = InjectQuest(346);\r
1649 \r
1650             _battleInfo.InjectResultStatus(new []{ShipStatus("夕雲改二"), ShipStatus("巻雲改二"), ShipStatus("風雲改二"), ShipStatus("秋雲改")},\r
1651                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1652             InjectPracticeResult("A");\r
1653             Assert.AreEqual(0, count.Now);\r
1654 \r
1655             InjectPracticeResult("S");\r
1656             Assert.AreEqual(0, count.Now);\r
1657 \r
1658             _battleInfo.Result.Friend.Main[3] = ShipStatus("秋雲改二");\r
1659             InjectPracticeResult("S");\r
1660             Assert.AreEqual(1, count.Now);\r
1661 \r
1662             _battleInfo.Result.Friend.Main[0] = ShipStatus("綾波改二");\r
1663             InjectPracticeResult("S");\r
1664             Assert.AreEqual(1, count.Now);\r
1665         }\r
1666 \r
1667         /// <summary>\r
1668         /// 402: 「遠征」を3回成功させよう!\r
1669         /// 403: 「遠征」を10回成功させよう!\r
1670         /// 404: 大規模遠征作戦、発令!\r
1671         /// 410: 南方への輸送作戦を成功させよ!\r
1672         /// 411: 南方への鼠輸送を継続実施せよ!\r
1673         /// </summary>\r
1674         [TestMethod]\r
1675         public void MissionResult_402_403_404_410_411()\r
1676         {\r
1677             InjectQuestList(new[] {402, 403, 404, 410, 411});\r
1678 \r
1679             _questCounter.InspectDeck(Js(\r
1680                 new[]\r
1681                 {\r
1682                     new {api_id = 2, api_mission = new[] {2, 6}},\r
1683                     new {api_id = 3, api_mission = new[] {2, 37}},\r
1684                     new {api_id = 4, api_mission = new[] {2, 2}}\r
1685                 }));\r
1686             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1687             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 2}));\r
1688             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 0}));\r
1689             PAssert.That(() =>\r
1690                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1691                     .SequenceEqual(new[]\r
1692                     {\r
1693                         new {Id = 402, Now = 2}, new {Id = 403, Now = 2}, new {Id = 404, Now = 2},\r
1694                         new {Id = 410, Now = 1}, new {Id = 411, Now = 1}\r
1695                     }));\r
1696         }\r
1697 \r
1698         /// <summary>\r
1699         /// 426: 海上通商航路の警戒を厳とせよ!\r
1700         /// </summary>\r
1701         [TestMethod]\r
1702         public void MissionResult_426()\r
1703         {\r
1704             var count = InjectQuest(426);\r
1705 \r
1706             _questCounter.InspectDeck(Js(\r
1707                 new[]\r
1708                 {\r
1709                     new {api_id = 2, api_mission = new[] {2, 3}},\r
1710                     new {api_id = 3, api_mission = new[] {2, 4}},\r
1711                     new {api_id = 4, api_mission = new[] {2, 5}}\r
1712                 }));\r
1713             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1714             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1715             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1716             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}));\r
1717             _questCounter.InspectDeck(Js(\r
1718                 new[]\r
1719                 {\r
1720                     new {api_id = 2, api_mission = new[] {2, 10}}\r
1721                 }));\r
1722             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1723             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
1724         }\r
1725 \r
1726         /// <summary>\r
1727         /// 428: 近海に侵入する敵潜を制圧せよ!\r
1728         /// </summary>\r
1729         [TestMethod]\r
1730         public void MissionResult_428()\r
1731         {\r
1732             var count = InjectQuest(428);\r
1733 \r
1734             _questCounter.InspectDeck(Js(\r
1735                 new[]\r
1736                 {\r
1737                     new {api_id = 2, api_mission = new[] {2, 4}},\r
1738                     new {api_id = 3, api_mission = new[] {2, 101}},\r
1739                     new {api_id = 4, api_mission = new[] {2, 102}}\r
1740                 }));\r
1741             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1742             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1743             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1744             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
1745         }\r
1746 \r
1747         /// <summary>\r
1748         /// 434: 特設護衛船団司令部、活動開始!\r
1749         /// </summary>\r
1750         [TestMethod]\r
1751         public void MissionResult_434()\r
1752         {\r
1753             var count = InjectQuest(434);\r
1754 \r
1755             _questCounter.InspectDeck(Js(\r
1756                 new[]\r
1757                 {\r
1758                     new {api_id = 2, api_mission = new[] {2, 3}},\r
1759                     new {api_id = 3, api_mission = new[] {2, 5}},\r
1760                     new {api_id = 4, api_mission = new[] {2, 100}}\r
1761                 }));\r
1762             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1763             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1764             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1765             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0, 0}));\r
1766 \r
1767             _questCounter.InspectDeck(Js(\r
1768                 new[]\r
1769                 {\r
1770                     new {api_id = 2, api_mission = new[] {2, 101}},\r
1771                     new {api_id = 3, api_mission = new[] {2, 9}}\r
1772                 }));\r
1773             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1774             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1775             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}));\r
1776         }\r
1777 \r
1778         /// <summary>\r
1779         /// 436: 練習航海及び警備任務を実施せよ!\r
1780         /// </summary>\r
1781         [TestMethod]\r
1782         public void MissionResult_436()\r
1783         {\r
1784             var count = InjectQuest(436);\r
1785 \r
1786             _questCounter.InspectDeck(Js(\r
1787                 new[]\r
1788                 {\r
1789                     new {api_id = 2, api_mission = new[] {2, 1}},\r
1790                     new {api_id = 3, api_mission = new[] {2, 2}},\r
1791                     new {api_id = 4, api_mission = new[] {2, 3}}\r
1792                 }));\r
1793             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1794             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1795             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1796             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0, 0}));\r
1797 \r
1798             _questCounter.InspectDeck(Js(\r
1799                 new[]\r
1800                 {\r
1801                     new {api_id = 2, api_mission = new[] {2, 4}},\r
1802                     new {api_id = 3, api_mission = new[] {2, 10}}\r
1803                 }));\r
1804             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1805             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1806             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}));\r
1807         }\r
1808 \r
1809         /// <summary>\r
1810         /// 437: 小笠原沖哨戒線の強化を実施せよ!\r
1811         /// </summary>\r
1812         [TestMethod]\r
1813         public void MissionResult_437()\r
1814         {\r
1815             var count = InjectQuest(437);\r
1816 \r
1817             _questCounter.InspectDeck(Js(\r
1818                 new[]\r
1819                 {\r
1820                     new {api_id = 2, api_mission = new[] {2, 4}},\r
1821                     new {api_id = 3, api_mission = new[] {2, 104}},\r
1822                     new {api_id = 4, api_mission = new[] {2, 105}}\r
1823                 }));\r
1824             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1825             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1826             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1827             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}));\r
1828 \r
1829             _questCounter.InspectDeck(Js(\r
1830                 new[]\r
1831                 {\r
1832                     new {api_id = 2, api_mission = new[] {2, 110}}\r
1833                 }));\r
1834             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1835             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
1836         }\r
1837 \r
1838         /// <summary>\r
1839         /// 438: 南西諸島方面の海上護衛を強化せよ!\r
1840         /// </summary>\r
1841         [TestMethod]\r
1842         public void MissionResult_438()\r
1843         {\r
1844             var count = InjectQuest(438);\r
1845 \r
1846             _questCounter.InspectDeck(Js(\r
1847                 new[]\r
1848                 {\r
1849                     new {api_id = 2, api_mission = new[] {2, 4}},\r
1850                     new {api_id = 3, api_mission = new[] {2, 100}},\r
1851                     new {api_id = 4, api_mission = new[] {2, 9}}\r
1852                 }));\r
1853             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new { api_clear_result = 1 }));\r
1854             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new { api_clear_result = 1 }));\r
1855             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new { api_clear_result = 1 }));\r
1856             PAssert.That(() => count.NowArray.SequenceEqual(new[] { 1, 1, 1, 0 }));\r
1857 \r
1858             _questCounter.InspectDeck(Js(\r
1859                 new[]\r
1860                 {\r
1861                     new {api_id = 2, api_mission = new[] {2, 114}}\r
1862                 }));\r
1863             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new { api_clear_result = 1 }));\r
1864             PAssert.That(() => count.NowArray.SequenceEqual(new[] { 1, 1, 1, 1 }));\r
1865         }\r
1866 \r
1867         /// <summary>\r
1868         /// 439: 兵站強化遠征任務【基本作戦】\r
1869         /// </summary>\r
1870         [TestMethod]\r
1871         public void MissionResult_439()\r
1872         {\r
1873             var count = InjectQuest(439);\r
1874 \r
1875             _questCounter.InspectDeck(Js(\r
1876                 new[]\r
1877                 {\r
1878                     new {api_id = 2, api_mission = new[] {2, 5}},\r
1879                     new {api_id = 3, api_mission = new[] {2, 100}},\r
1880                     new {api_id = 4, api_mission = new[] {2, 11}}\r
1881                 }));\r
1882             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1883             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1884             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1885             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}));\r
1886 \r
1887             _questCounter.InspectDeck(Js(\r
1888                 new[]\r
1889                 {\r
1890                     new {api_id = 2, api_mission = new[] {2, 110}}\r
1891                 }));\r
1892             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1893             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
1894         }\r
1895 \r
1896         /// <summary>\r
1897         /// 440: 兵站強化遠征任務【拡張作戦】\r
1898         /// </summary>\r
1899         [TestMethod]\r
1900         public void MissionResult_440()\r
1901         {\r
1902             var count = InjectQuest(440);\r
1903 \r
1904             _questCounter.InspectDeck(Js(\r
1905                 new[]\r
1906                 {\r
1907                     new {api_id = 2, api_mission = new[] {2, 41}},\r
1908                     new {api_id = 3, api_mission = new[] {2, 5}},\r
1909                     new {api_id = 4, api_mission = new[] {2, 40}}\r
1910                 }));\r
1911             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1912             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1913             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1914             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0, 0}));\r
1915 \r
1916             _questCounter.InspectDeck(Js(\r
1917                 new[]\r
1918                 {\r
1919                     new {api_id = 2, api_mission = new[] {2, 142}},\r
1920                     new {api_id = 3, api_mission = new[] {2, 46}}\r
1921                 }));\r
1922             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1923             _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new { api_clear_result = 1 }));\r
1924             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}));\r
1925         }\r
1926 \r
1927         /// <summary>\r
1928         /// 503: 艦隊大整備!\r
1929         /// 504: 艦隊酒保祭り!\r
1930         /// </summary>\r
1931         [TestMethod]\r
1932         public void PowerUp_503_504()\r
1933         {\r
1934             InjectQuestList(new[] {503, 504});\r
1935 \r
1936             _questCounter.CountNyukyo();\r
1937             _questCounter.CountCharge();\r
1938             PAssert.That(() =>\r
1939                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1940                     .SequenceEqual(new[] {new {Id = 503, Now = 1}, new {Id = 504, Now = 1}}));\r
1941         }\r
1942 \r
1943         /// <summary>\r
1944         /// 605: 新装備「開発」指令\r
1945         /// 606: 新造艦「建造」指令\r
1946         /// 607: 装備「開発」集中強化!\r
1947         /// 608: 艦娘「建造」艦隊強化!\r
1948         /// 609: 軍縮条約対応!\r
1949         /// 619: 装備の改修強化\r
1950         /// </summary>\r
1951         [TestMethod]\r
1952         public void Kousyou_605_606_607_608_609_619()\r
1953         {\r
1954             InjectQuestList(new[] {605, 606, 607, 608, 609, 619});\r
1955 \r
1956             _questCounter.InspectCreateItem(\r
1957                 "api_verno=1&api_item1=10&api_item2=10&api_item3=30&api_item4=10&api_multiple_flag=0");\r
1958             _questCounter.InspectCreateItem(\r
1959                 "api_verno=1&api_item1=10&api_item2=10&api_item3=30&api_item4=10&api_multiple_flag=1");\r
1960             _questCounter.CountCreateShip();\r
1961             _questCounter.InspectDestroyShip("api%5Fship%5Fid=98159%2C98166%2C98168&api%5Fverno=1");\r
1962             _questCounter.CountRemodelSlot();\r
1963             PAssert.That(() =>\r
1964                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1965                     .SequenceEqual(new[]\r
1966                     {\r
1967                         new {Id = 605, Now = 4}, new {Id = 606, Now = 1}, new {Id = 607, Now = 4},\r
1968                         new {Id = 608, Now = 1}, new {Id = 609, Now = 3}, new {Id = 619, Now = 1}\r
1969                     }));\r
1970         }\r
1971 \r
1972         /// <summary>\r
1973         /// 613: 資源の再利用\r
1974         /// 638: 対空機銃量産\r
1975         /// 643: 主力「陸攻」の調達\r
1976         /// 645: 「洋上補給」物資の調達\r
1977         /// 653: 工廠稼働!次期作戦準備!\r
1978         /// 654: 精鋭複葉機飛行隊の編成\r
1979         /// 657: 新型兵装開発整備の強化\r
1980         /// 663: 新型艤装の継続研究\r
1981         /// 673: 装備開発力の整備\r
1982         /// 674: 工廠環境の整備\r
1983         /// 675: 運用装備の統合整備\r
1984         /// 676: 装備開発力の集中整備\r
1985         /// 677: 継戦支援能力の整備\r
1986         /// 678: 主力艦上戦闘機の更新\r
1987         /// 680: 対空兵装の整備拡充\r
1988         /// 688: 航空戦力の強化\r
1989         /// </summary>\r
1990         [TestMethod]\r
1991         public void DestroyItem_613_638_643_645_653_654_655_657_663_673_674_675_676_677_678_680_686_688()\r
1992         {\r
1993             InjectItems(new[]\r
1994             {\r
1995                 new ItemSpec {Id = 1, Name = "12cm単装砲", Type = 1},\r
1996                 new ItemSpec {Id = 37, Name = "7.7mm機銃", Type = 21},\r
1997                 new ItemSpec {Id = 19, Name = "九六式艦戦", Type = 6},\r
1998                 new ItemSpec {Id = 4, Name = "14cm単装砲", Type = 2},\r
1999                 new ItemSpec {Id = 11, Name = "15.2cm単装砲", Type = 4},\r
2000                 new ItemSpec {Id = 75, Name = "ドラム缶(輸送用)", Type = 30},\r
2001                 new ItemSpec {Id = 7, Name = "35.6cm連装砲", Type = 3},\r
2002                 new ItemSpec {Id = 25, Name = "零式水上偵察機", Type = 10},\r
2003                 new ItemSpec {Id = 13, Name = "61cm三連装魚雷", Type = 5},\r
2004                 new ItemSpec {Id = 20, Name = "零式艦戦21型", Type = 6},\r
2005                 new ItemSpec {Id = 28, Name = "22号水上電探", Type = 12},\r
2006                 new ItemSpec {Id = 31, Name = "32号水上電探", Type = 13},\r
2007                 new ItemSpec {Id = 35, Name = "三式弾", Type = 18},\r
2008                 new ItemSpec {Id = 23, Name = "九九式艦爆", Type = 7},\r
2009                 new ItemSpec {Id = 16, Name = "九七式艦攻", Type = 8},\r
2010                 new ItemSpec {Id = 3, Name = "10cm連装高角砲", Type = 1},\r
2011                 new ItemSpec {Id = 121, Name = "94式高射装置", Type = 36},\r
2012                 new ItemSpec {Id = 242, Name = "Swordfish", Type = 8},\r
2013                 new ItemSpec {Id = 249, Name = "Fulmar", Type = 6}\r
2014             });\r
2015             var questList = new[] {613, 638, 643, 645, 655, 653, 654, 657, 663, 673, 674, 675, 676, 677, 678, 680, 686, 688};\r
2016             InjectQuestList(questList);\r
2017             _questCounter.InspectDestroyItem(\r
2018                 $"api%5Fslotitem%5Fids={string.Join("%2C", Enumerable.Range(1, _itemInventory.Count))}&api%5Fverno=1");\r
2019             var scalar = new[]\r
2020             {\r
2021                 new {Id = 613, Now = 1}, new {Id = 638, Now = 1}, new {Id = 643, Now = 1}, new {Id = 645, Now = 1},\r
2022                 new {Id = 653, Now = 1}, new {Id = 663, Now = 1}, new {Id = 673, Now = 2}, new {Id = 674, Now = 1}\r
2023             };\r
2024             foreach (var e in scalar)\r
2025             {\r
2026                 var c = Array.Find(_questInfo.Quests, q => q.Id == e.Id).Count;\r
2027                 Assert.AreEqual(e.Id, c.Id);\r
2028                 Assert.AreEqual(e.Now, c.Now, $"{c.Id}");\r
2029             }\r
2030             var array = new[]\r
2031             {\r
2032                 new {Id = 654, NowArray = new[] {1, 1}}, new {Id = 655, NowArray = new[] {2, 1, 1, 1, 2}},\r
2033                 new {Id = 657, NowArray = new[] {2, 1, 1}},\r
2034                 new {Id = 675, NowArray = new[] {3, 1}}, new {Id = 676, NowArray = new[] {1, 1, 1}},\r
2035                 new {Id = 677, NowArray = new[] {1, 1, 1}}, new {Id = 678, NowArray = new[] {1, 1}},\r
2036                 new {Id = 680, NowArray = new[] {1, 2}}, new {Id = 686, NowArray = new[] {1, 1}},\r
2037                 new {Id = 688, NowArray = new[] {3, 1, 2, 1}}\r
2038             };\r
2039             foreach (var e in array)\r
2040             {\r
2041                 var c = Array.Find(_questInfo.Quests, q => q.Id == e.Id).Count;\r
2042                 Assert.AreEqual(e.Id, c.Id);\r
2043                 PAssert.That(() => c.NowArray.SequenceEqual(e.NowArray), $"{c.Id}");\r
2044             }\r
2045         }\r
2046 \r
2047         private void InjectItems(IEnumerable<ItemSpec> specs)\r
2048         {\r
2049             _itemInventory.Add(specs.Select((s, i) => new ItemStatus{Id = i + 1, Spec = s}));\r
2050         }\r
2051 \r
2052         /// <summary>\r
2053         /// 702: 艦の「近代化改修」を実施せよ!\r
2054         /// 703: 「近代化改修」を進め、戦備を整えよ!\r
2055         /// </summary>\r
2056         [TestMethod]\r
2057         public void PowerUp_702_703()\r
2058         {\r
2059             InjectQuestList(new[] {702, 703});\r
2060             _questCounter.InspectPowerUp("", Js(new {api_powerup_flag = 1}));\r
2061             PAssert.That(() =>\r
2062                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
2063                     .SequenceEqual(new[] {new {Id = 702, Now = 1}, new {Id = 703, Now = 1}}));\r
2064         }\r
2065 \r
2066         /// <summary>\r
2067         /// 714: 「駆逐艦」の改修工事を実施せよ!\r
2068         /// 715: 続:「駆逐艦」の改修工事を実施せよ!\r
2069         /// </summary>\r
2070         [TestMethod]\r
2071         public void PowerUp_714_715()\r
2072         {\r
2073             var ships = new[]\r
2074             {\r
2075                 ShipStatus(2), ShipStatus(2), ShipStatus(2), ShipStatus(2),\r
2076                 ShipStatus(3), ShipStatus(3), ShipStatus(3), ShipStatus(3)\r
2077             };\r
2078             _shipInventory.Add(ships.Select((s, i) =>\r
2079             {\r
2080                 s.Id = i + 1;\r
2081                 return s;\r
2082             }));\r
2083 \r
2084             var q714 = InjectQuest(714);\r
2085             _questCounter.InspectPowerUp("api_id=3&api_id_items=1,2", Js(new {api_powerup_flag = 1}));\r
2086             Assert.AreEqual(0, q714.Now);\r
2087             _questCounter.InspectPowerUp("api_id=5&api_id_items=1,2,3", Js(new {api_powerup_flag = 1}));\r
2088             Assert.AreEqual(0, q714.Now);\r
2089             _questCounter.InspectPowerUp("api_id=4&api_id_items=1,2,3", Js(new {api_powerup_flag = 1}));\r
2090             Assert.AreEqual(1, q714.Now);\r
2091 \r
2092             var q715 = InjectQuest(715);\r
2093             _questCounter.InspectPowerUp("api_id=4&api_id_items=1,2,3", Js(new {api_powerup_flag = 1}));\r
2094             Assert.AreEqual(0, q715.Now);\r
2095             _questCounter.InspectPowerUp("api_id=4&api_id_items=5,6,7", Js(new {api_powerup_flag = 1}));\r
2096             Assert.AreEqual(1, q715.Now);\r
2097         }\r
2098     }\r
2099 }