OSDN Git Service

24a94961f73ad6823b8eb3cb000261cdac6990d0
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer.Test / QuestInfoTest.cs
1 // Copyright (C) 2017 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 ExpressionToCodeLib;\r
19 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
20 \r
21 namespace KancolleSniffer.Test\r
22 {\r
23     [TestClass]\r
24     public class QuestInfoTest\r
25     {\r
26         [TestMethod]\r
27         public void AdjustCount()\r
28         {\r
29             var count = new QuestCount\r
30             {\r
31                 Spec = new QuestSpec {Max = 7},\r
32                 Now = 3\r
33             };\r
34             count.AdjustCount(0);\r
35             PAssert.That(() => count.Now == 3);\r
36             count.AdjustCount(50);\r
37             PAssert.That(() => count.Now == 4);\r
38             count.AdjustCount(80);\r
39             PAssert.That(() => count.Now == 6);\r
40             count.AdjustCount(100);\r
41             PAssert.That(() => count.Now == 7);\r
42             count.Now = 14;\r
43             count.AdjustCount(100);\r
44             PAssert.That(() => count.Now == 14);\r
45             count.AdjustCount(80);\r
46             PAssert.That(() => count.Now == 6);\r
47             count.AdjustCount(50);\r
48             PAssert.That(() => count.Now == 5);\r
49             count.AdjustCount(0);\r
50             PAssert.That(() => count.Now == 3);\r
51         }\r
52 \r
53         [TestMethod]\r
54         public void AdjustCountWithShift()\r
55         {\r
56             var count = new QuestCount\r
57             {\r
58                 Spec = new QuestSpec {Max = 7, Shift = 1},\r
59                 Now = 3\r
60             };\r
61             count.AdjustCount(0);\r
62             PAssert.That(() => count.Now == 2);\r
63             count.AdjustCount(50);\r
64             PAssert.That(() => count.Now == 3);\r
65             count.AdjustCount(80);\r
66             PAssert.That(() => count.Now == 6);\r
67             count.AdjustCount(100);\r
68             PAssert.That(() => count.Now == 7);\r
69             count.Now = 14;\r
70             count.AdjustCount(100);\r
71             PAssert.That(() => count.Now == 14);\r
72             count.AdjustCount(80);\r
73             PAssert.That(() => count.Now == 6);\r
74             count.AdjustCount(50);\r
75             PAssert.That(() => count.Now == 5);\r
76             count.AdjustCount(0);\r
77             PAssert.That(() => count.Now == 2);\r
78         }\r
79 \r
80         [TestMethod]\r
81         public void AdjustCount80Percent()\r
82         {\r
83             var count = new QuestCount\r
84             {\r
85                 Spec = new QuestSpec()\r
86             };\r
87             for (var shift = 0; shift <= 1; shift++)\r
88             {\r
89                 for (var max = 2; max <= 6; max++)\r
90                 {\r
91                     count.Spec.Max = max;\r
92                     count.Spec.Shift = shift;\r
93                     count.Now = 1;\r
94                     count.AdjustCount(80);\r
95                     PAssert.That(() => count.Now == count.Spec.Max - 1);\r
96                 }\r
97             }\r
98         }\r
99 \r
100         [TestMethod]\r
101         public void AdjestCountNowArray()\r
102         {\r
103             var count = new QuestCount\r
104             {\r
105                 Spec = new QuestSpec {MaxArray = new[] {36, 6, 24, 12}},\r
106                 NowArray = new[] {1, 2, 3, 4}\r
107             };\r
108             count.AdjustCount(50);\r
109             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 2, 3, 4}));\r
110             count.AdjustCount(100);\r
111             PAssert.That(() => count.NowArray.SequenceEqual(new[] {36, 6, 24, 12}));\r
112             count.NowArray = new[] {38, 12, 19, 12};\r
113             count.AdjustCount(100);\r
114             PAssert.That(() => count.NowArray.SequenceEqual(new[] {38, 12, 24, 12}));\r
115         }\r
116 \r
117         [TestMethod]\r
118         public void ResetQuest()\r
119         {\r
120             var queue = new Queue<DateTime>(new[]\r
121             {\r
122                 new DateTime(2017, 11, 1, 5, 0, 0), new DateTime(2017, 11, 6, 5, 0, 0),\r
123                 new DateTime(2017, 12, 1, 5, 0, 0)\r
124             });\r
125             var questInfo = new QuestInfo(null, null, () => queue.Dequeue());\r
126             var status = new Status\r
127             {\r
128                 QuestCountList = new[]\r
129                 {\r
130                     new QuestCount {Id = 201, Now = 1}, new QuestCount {Id = 213, Now = 1},\r
131                     new QuestCount {Id = 265, Now = 1}, new QuestCount {Id = 822, Now = 1}\r
132                 },\r
133                 QuestLastReset = new DateTime(2017, 10, 31, 5, 0, 0)\r
134             };\r
135             questInfo.LoadState(status);\r
136             questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
137             questInfo.SaveState(status);\r
138             PAssert.That(() =>\r
139                 status.QuestCountList.Select(qc => new {qc.Id, qc.Now}).SequenceEqual(new[]\r
140                     {new {Id = 213, Now = 1}, new {Id = 822, Now = 1}})); // デイリーとマンスリーが消える\r
141             questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
142             questInfo.SaveState(status);\r
143             PAssert.That(() =>\r
144                 status.QuestCountList.Select(qc => new {qc.Id, qc.Now}).SequenceEqual(new[]\r
145                     {new {Id = 822, Now = 1}})); // ウィークリーが消える\r
146             questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
147             questInfo.SaveState(status);\r
148             PAssert.That(() => status.QuestCountList.Length == 0); // クォータリーが消える\r
149         }\r
150 \r
151         private JsonObject Js(object obj) => JsonObject.CreateJsonObject(obj);\r
152 \r
153         private object CreateQuestList(int[] ids) => Js(new\r
154         {\r
155             api_list =\r
156             ids.Select(id => new\r
157             {\r
158                 api_no = id,\r
159                 api_category = id / 100,\r
160                 api_state = 2,\r
161                 api_title = "",\r
162                 api_detail = "",\r
163                 api_get_material = new int[0],\r
164                 api_progress_flag = 0\r
165             })\r
166         });\r
167 \r
168         /// <summary>\r
169         /// 201: 敵艦隊を撃滅せよ!\r
170         /// 210: 敵艦隊を10回邀撃せよ!\r
171         /// 214: あ号\r
172         /// 216: 敵艦隊主力を撃滅せよ!\r
173         /// </summary>\r
174         [TestMethod]\r
175         public void BattleResult_201_216_210_214()\r
176         {\r
177             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
178             questInfo.InspectQuestList(CreateQuestList(new[] {201, 216, 210, 214}));\r
179 \r
180             questInfo.InspectMapStart(Js(new\r
181             {\r
182                 api_maparea_id = 1,\r
183                 api_mapinfo_no = 1,\r
184                 api_event_id = 4\r
185             }));\r
186             var quests = questInfo.Quests;\r
187             // 出撃カウント\r
188             PAssert.That(() => quests[2].Id == 214 && quests[2].Count.NowArray[0] == 1);\r
189             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
190             // 道中S勝利\r
191             PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]\r
192             {\r
193                 new {Id = 201, Now = 1}, new {Id = 210, Now = 1},\r
194                 new {Id = 214, Now = 0}, new {Id = 216, Now = 1}\r
195             }));\r
196             PAssert.That(() => quests[2].Id == 214 &&\r
197                                quests[2].Count.NowArray.SequenceEqual(new[] {1, 1, 0, 0}));\r
198 \r
199             questInfo.InspectMapNext(Js(new\r
200             {\r
201                 api_maparea_id = 1,\r
202                 api_mapinfo_no = 1,\r
203                 api_event_id = 5\r
204             }));\r
205             // ボスB勝利\r
206             questInfo.InspectBattleResult(Js(new {api_win_rank = "B"}));\r
207             PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]\r
208             {\r
209                 new {Id = 201, Now = 2}, new {Id = 210, Now = 2},\r
210                 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}\r
211             }));\r
212             // ボス敗北\r
213             PAssert.That(() => quests[2].Id == 214 && quests[2].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
214             questInfo.InspectBattleResult(Js(new {api_win_rank = "C"}));\r
215             PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]\r
216             {\r
217                 new {Id = 201, Now = 2}, new {Id = 210, Now = 3},\r
218                 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}\r
219             }));\r
220             PAssert.That(() => quests[2].Id == 214 && quests[2].Count.NowArray.SequenceEqual(new[] {1, 1, 2, 1}));\r
221         }\r
222 \r
223         /// <summary>\r
224         /// 211: 敵空母を3隻撃沈せよ!\r
225         /// 212: 敵輸送船団を叩け!\r
226         /// 213: 海上通商破壊作戦\r
227         /// 218: 敵補給艦を3隻撃沈せよ!\r
228         /// </summary>\r
229         [TestMethod]\r
230         public void BattleResult_211_212_213_218_220_221()\r
231         {\r
232             var battleInfo = new BattleInfo(null, null);\r
233             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1)) {AcceptMax = 6};\r
234             questInfo.InspectQuestList(CreateQuestList(new[] {211, 212, 213, 218, 220, 221}));\r
235             // 補給艦1隻と空母2隻\r
236             battleInfo.InjectResultStatus(new ShipStatus[0], new ShipStatus[0], new[]\r
237             {\r
238                 new ShipStatus {NowHp = 0, MaxHp = 130, Spec = new ShipSpec {Id = 1558, ShipType = 15}},\r
239                 new ShipStatus {NowHp = 0, MaxHp = 90, Spec = new ShipSpec {Id = 1543, ShipType = 8}},\r
240                 new ShipStatus {NowHp = 0, MaxHp = 90, Spec = new ShipSpec {Id = 1543, ShipType = 8}},\r
241                 new ShipStatus {NowHp = 0, MaxHp = 96, Spec = new ShipSpec {Id = 1528, ShipType = 11}},\r
242                 new ShipStatus {NowHp = 0, MaxHp = 70, Spec = new ShipSpec {Id = 1523, ShipType = 7}},\r
243                 new ShipStatus {NowHp = 1, MaxHp = 70, Spec = new ShipSpec {Id = 1523, ShipType = 7}}\r
244             }, new ShipStatus[0]);\r
245             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
246             PAssert.That(() =>\r
247                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
248                     .SequenceEqual(new[]\r
249                     {\r
250                         new {Id = 211, Now = 2}, new {Id = 212, Now = 1}, new {Id = 213, Now = 1},\r
251                         new {Id = 218, Now = 1}, new {Id = 220, Now = 2}, new {Id = 221, Now = 1}\r
252                     }));\r
253         }\r
254 \r
255         /// <summary>\r
256         /// 228: 海上護衛戦\r
257         /// 230: 敵潜水艦を制圧せよ!\r
258         /// </summary>\r
259         [TestMethod]\r
260         public void BattleResult_228_230()\r
261         {\r
262             var battleInfo = new BattleInfo(null, null);\r
263             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
264             questInfo.InspectQuestList(CreateQuestList(new[] {228, 230}));\r
265             // 潜水艦3\r
266             battleInfo.InjectResultStatus(new ShipStatus[0], new ShipStatus[0], new[]\r
267             {\r
268                 new ShipStatus {NowHp = 0, MaxHp = 27, Spec = new ShipSpec {Id = 1532, ShipType = 13}},\r
269                 new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}},\r
270                 new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}}\r
271             }, new ShipStatus[0]);\r
272             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
273             PAssert.That(() =>\r
274                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
275                     .SequenceEqual(new[]\r
276                     {\r
277                         new {Id = 228, Now = 3}, new {Id = 230, Now = 3}\r
278                     }));\r
279         }\r
280 \r
281         /// <summary>\r
282         /// 226: 南西諸島海域の制海権を握れ!\r
283         /// </summary>\r
284         [TestMethod]\r
285         public void BattleResult_226()\r
286         {\r
287             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
288             questInfo.InspectQuestList(CreateQuestList(new[] {226}));\r
289 \r
290             questInfo.InspectMapStart(Js(new\r
291             {\r
292                 api_maparea_id = 2,\r
293                 api_mapinfo_no = 1,\r
294                 api_event_id = 4\r
295             }));\r
296             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
297             PAssert.That(() =>\r
298                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
299                     .SequenceEqual(new[] {new {Id = 226, Now = 0}}));\r
300             questInfo.InspectMapNext(Js(new\r
301             {\r
302                 api_maparea_id = 2,\r
303                 api_mapinfo_no = 1,\r
304                 api_event_id = 5\r
305             }));\r
306             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
307             PAssert.That(() =>\r
308                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
309                     .SequenceEqual(new[] {new {Id = 226, Now = 1}}));\r
310             questInfo.InspectMapStart(Js(new\r
311             {\r
312                 api_maparea_id = 2,\r
313                 api_mapinfo_no = 1,\r
314                 api_event_id = 4\r
315             }));\r
316             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
317             PAssert.That(() =>\r
318                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
319                     .SequenceEqual(new[] {new {Id = 226, Now = 1}}));\r
320         }\r
321 \r
322         /// <summary>\r
323         /// // 243: 南方海域珊瑚諸島沖の制空権を握れ!\r
324         /// </summary>\r
325         [TestMethod]\r
326         public void BattleResult_243()\r
327         {\r
328             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
329             questInfo.InspectQuestList(CreateQuestList(new[] {243}));\r
330 \r
331             questInfo.InspectMapStart(Js(new\r
332             {\r
333                 api_maparea_id = 5,\r
334                 api_mapinfo_no = 2,\r
335                 api_event_id = 5\r
336             }));\r
337             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
338             PAssert.That(() =>\r
339                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
340                     .SequenceEqual(new[] {new {Id = 243, Now = 0}}));\r
341 \r
342             questInfo.InspectMapNext(Js(new\r
343             {\r
344                 api_maparea_id = 5,\r
345                 api_mapinfo_no = 2,\r
346                 api_event_id = 5\r
347             }));\r
348             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
349             PAssert.That(() =>\r
350                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
351                     .SequenceEqual(new[] {new {Id = 243, Now = 1}}));\r
352         }\r
353 \r
354         private ShipStatus ShipStatus(int shipType, int specId = 0) =>\r
355             new ShipStatus {NowHp = 1, Spec = new ShipSpec {Id = specId, ShipType = shipType}};\r
356 \r
357 \r
358         /// <summary>\r
359         /// 249: 「第五戦隊」出撃せよ!\r
360         /// </summary>\r
361         [TestMethod]\r
362         public void BattleResult_249()\r
363         {\r
364             var battleInfo = new BattleInfo(null, null);\r
365             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
366             questInfo.InspectQuestList(CreateQuestList(new[] {249}));\r
367 \r
368             battleInfo.InjectResultStatus(new[]\r
369             {\r
370                 ShipStatus(5, 319), ShipStatus(5, 192), ShipStatus(5, 194),\r
371                 ShipStatus(5, 193), ShipStatus(6, 189), ShipStatus(6, 188)\r
372             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
373             questInfo.InspectMapNext(Js(new\r
374             {\r
375                 api_maparea_id = 2,\r
376                 api_mapinfo_no = 5,\r
377                 api_event_id = 4\r
378             }));\r
379             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
380             questInfo.InspectMapNext(Js(new\r
381             {\r
382                 api_maparea_id = 2,\r
383                 api_mapinfo_no = 5,\r
384                 api_event_id = 5\r
385             }));\r
386             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
387             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
388             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
389             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
390             questInfo.Quests[0].Count.Now = 0;\r
391 \r
392             battleInfo.Result.Friend.Main[1].NowHp = 0;\r
393             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
394             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "那智改二轟沈");\r
395         }\r
396 \r
397         /// <summary>\r
398         /// 257: 「水雷戦隊」南西へ!\r
399         /// </summary>\r
400         [TestMethod]\r
401         public void BattleResult_257()\r
402         {\r
403             var battleInfo = new BattleInfo(null, null);\r
404             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
405             questInfo.InspectQuestList(CreateQuestList(new[] {257}));\r
406 \r
407             battleInfo.InjectResultStatus(new[]\r
408             {\r
409                 ShipStatus(3), ShipStatus(2), ShipStatus(2),\r
410                 ShipStatus(2), ShipStatus(2), ShipStatus(2)\r
411             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
412             questInfo.InspectMapNext(Js(new\r
413             {\r
414                 api_maparea_id = 1,\r
415                 api_mapinfo_no = 4,\r
416                 api_event_id = 4\r
417             }));\r
418             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
419             questInfo.InspectMapNext(Js(new\r
420             {\r
421                 api_maparea_id = 1,\r
422                 api_mapinfo_no = 4,\r
423                 api_event_id = 5\r
424             }));\r
425             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
426             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
427             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
428             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
429             questInfo.Quests[0].Count.Now = 0;\r
430 \r
431             battleInfo.Result.Friend.Main[0].NowHp = 0;\r
432             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
433             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "軽巡轟沈");\r
434             battleInfo.Result.Friend.Main[0].NowHp = 1;\r
435 \r
436             battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;\r
437             battleInfo.Result.Friend.Main[1].Spec.ShipType = 3;\r
438             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
439             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "旗艦が駆逐");\r
440             battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;\r
441 \r
442             battleInfo.Result.Friend.Main[2].Spec.ShipType = 3;\r
443             battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;\r
444             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
445             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "軽巡が4隻");\r
446 \r
447             battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;\r
448             battleInfo.Result.Friend.Main[3].Spec.ShipType = 4;\r
449             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
450             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "駆逐軽巡以外");\r
451         }\r
452 \r
453         /// <summary>\r
454         /// 257: 「水上打撃部隊」南方へ!\r
455         /// </summary>\r
456         [TestMethod]\r
457         public void BattleResult_259()\r
458         {\r
459             var battleInfo = new BattleInfo(null, null);\r
460             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
461             questInfo.InspectQuestList(CreateQuestList(new[] {259}));\r
462 \r
463             battleInfo.InjectResultStatus(new[]\r
464             {\r
465                 ShipStatus(3, 183), ShipStatus(9, 276), ShipStatus(10, 411),\r
466                 ShipStatus(10, 412), ShipStatus(5, 193), ShipStatus(5, 194)\r
467             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
468             questInfo.InspectMapNext(Js(new\r
469             {\r
470                 api_maparea_id = 5,\r
471                 api_mapinfo_no = 1,\r
472                 api_event_id = 4\r
473             }));\r
474             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
475             questInfo.InspectMapNext(Js(new\r
476             {\r
477                 api_maparea_id = 5,\r
478                 api_mapinfo_no = 1,\r
479                 api_event_id = 5\r
480             }));\r
481             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
482             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
483             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
484             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
485             questInfo.Quests[0].Count.Now = 0;\r
486 \r
487             battleInfo.Result.Friend.Main[0].NowHp = 0;\r
488             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
489             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "軽巡轟沈");\r
490             battleInfo.Result.Friend.Main[0].NowHp = 1;\r
491 \r
492             battleInfo.Result.Friend.Main[4].Spec = new ShipSpec {Id = 136, ShipType = 9};\r
493             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
494             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "戦艦4隻");\r
495             battleInfo.Result.Friend.Main[4].Spec = new ShipSpec {Id = 193, ShipType = 5};\r
496 \r
497             battleInfo.Result.Friend.Main[0].Spec = new ShipSpec {Id = 58, ShipType = 4};\r
498             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
499             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "軽巡なし");\r
500         }\r
501 \r
502         /// <summary>\r
503         /// 266: 「水上反撃部隊」突入せよ!\r
504         /// </summary>\r
505         [TestMethod]\r
506         public void BattleResult_266()\r
507         {\r
508             var battleInfo = new BattleInfo(null, null);\r
509             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
510             questInfo.InspectQuestList(CreateQuestList(new[] {266}));\r
511 \r
512             battleInfo.InjectResultStatus(new[]\r
513             {\r
514                 ShipStatus(2), ShipStatus(5), ShipStatus(3),\r
515                 ShipStatus(2), ShipStatus(2), ShipStatus(2)\r
516             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
517             questInfo.InspectMapNext(Js(new\r
518             {\r
519                 api_maparea_id = 2,\r
520                 api_mapinfo_no = 5,\r
521                 api_event_id = 4\r
522             }));\r
523             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
524             questInfo.InspectMapNext(Js(new\r
525             {\r
526                 api_maparea_id = 2,\r
527                 api_mapinfo_no = 5,\r
528                 api_event_id = 5\r
529             }));\r
530             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
531             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
532             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
533             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
534 \r
535             battleInfo.Result.Friend.Main[1].NowHp = 0;\r
536             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
537             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "轟沈あり");\r
538             battleInfo.Result.Friend.Main[1].NowHp = 1;\r
539 \r
540             battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;\r
541             battleInfo.Result.Friend.Main[2].Spec.ShipType = 2;\r
542             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
543             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "旗艦が軽巡");\r
544             battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;\r
545             battleInfo.Result.Friend.Main[2].Spec.ShipType = 3;\r
546 \r
547             battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;\r
548             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
549             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "軽巡が2隻");\r
550         }\r
551 \r
552         /// <summary>\r
553         /// 822: 沖ノ島海域迎撃戦\r
554         /// 854: 戦果拡張任務!「Z作戦」前段作戦\r
555         /// </summary>\r
556         [TestMethod]\r
557         public void BattleResult_822_854()\r
558         {\r
559             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
560             questInfo.InspectQuestList(CreateQuestList(new[] {822, 854}));\r
561 \r
562             questInfo.InspectMapNext(Js(new\r
563             {\r
564                 api_maparea_id = 2,\r
565                 api_mapinfo_no = 4,\r
566                 api_event_id = 5\r
567             }));\r
568             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
569             questInfo.InspectMapNext(Js(new\r
570             {\r
571                 api_maparea_id = 6,\r
572                 api_mapinfo_no = 1,\r
573                 api_event_id = 5\r
574             }));\r
575             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
576             questInfo.InspectMapNext(Js(new\r
577             {\r
578                 api_maparea_id = 6,\r
579                 api_mapinfo_no = 3,\r
580                 api_event_id = 5\r
581             }));\r
582             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
583             questInfo.InspectMapNext(Js(new\r
584             {\r
585                 api_maparea_id = 6,\r
586                 api_mapinfo_no = 4,\r
587                 api_event_id = 5\r
588             }));\r
589             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
590             PAssert.That(() => questInfo.Quests[1].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
591             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
592             questInfo.InspectMapNext(Js(new\r
593             {\r
594                 api_maparea_id = 2,\r
595                 api_mapinfo_no = 4,\r
596                 api_event_id = 5\r
597             }));\r
598             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
599             PAssert.That(() => questInfo.Quests[1].Count.NowArray.SequenceEqual(new[] {2, 1, 1, 1}));\r
600             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
601         }\r
602 \r
603         /// <summary>\r
604         /// 861: 強行輸送艦隊、抜錨!\r
605         /// </summary>\r
606         [TestMethod]\r
607         public void MapNext_861()\r
608         {\r
609             var battleInfo = new BattleInfo(null, null);\r
610             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
611             questInfo.InspectQuestList(CreateQuestList(new[] {861}));\r
612 \r
613             battleInfo.InjectResultStatus(new[]\r
614             {\r
615                 ShipStatus(10), ShipStatus(22), ShipStatus(2),\r
616                 ShipStatus(2), ShipStatus(2), ShipStatus(2)\r
617             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
618 \r
619             questInfo.InspectMapNext(Js(new\r
620             {\r
621                 api_maparea_id = 1,\r
622                 api_mapinfo_no = 6,\r
623                 api_event_id = 4\r
624             }));\r
625             questInfo.InspectMapNext(Js(new\r
626             {\r
627                 api_maparea_id = 1,\r
628                 api_mapinfo_no = 6,\r
629                 api_event_id = 8\r
630             }));\r
631             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
632 \r
633             battleInfo.Result.Friend.Main[1].NowHp = 0;\r
634             questInfo.InspectMapNext(Js(new\r
635             {\r
636                 api_maparea_id = 1,\r
637                 api_mapinfo_no = 6,\r
638                 api_event_id = 8\r
639             }));\r
640             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "轟沈あり");\r
641             battleInfo.Result.Friend.Main[1].NowHp = 1;\r
642 \r
643             battleInfo.Result.Friend.Main[2].Spec.ShipType = 10;\r
644             questInfo.InspectMapNext(Js(new\r
645             {\r
646                 api_maparea_id = 1,\r
647                 api_mapinfo_no = 6,\r
648                 api_event_id = 8\r
649             }));\r
650             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "補給・航戦が3隻");\r
651         }\r
652 \r
653         /// <summary>\r
654         /// 862: 前線の航空偵察を実施せよ!\r
655         /// </summary>\r
656         [TestMethod]\r
657         public void BattleResult_862()\r
658         {\r
659             var battleInfo = new BattleInfo(null, null);\r
660             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
661             questInfo.InspectQuestList(CreateQuestList(new[] {862}));\r
662 \r
663             battleInfo.InjectResultStatus(new[]\r
664             {\r
665                 ShipStatus(2), ShipStatus(3), ShipStatus(3),\r
666                 ShipStatus(2), ShipStatus(2), ShipStatus(16)\r
667             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
668             questInfo.InspectMapNext(Js(new\r
669             {\r
670                 api_maparea_id = 6,\r
671                 api_mapinfo_no = 3,\r
672                 api_event_id = 4\r
673             }));\r
674             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
675             questInfo.InspectMapNext(Js(new\r
676             {\r
677                 api_maparea_id = 6,\r
678                 api_mapinfo_no = 3,\r
679                 api_event_id = 5\r
680             }));\r
681             questInfo.InspectBattleResult(Js(new {api_win_rank = "B"}));\r
682             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
683             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
684             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
685 \r
686             battleInfo.Result.Friend.Main[1].NowHp = 0;\r
687             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
688             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "轟沈あり");\r
689             battleInfo.Result.Friend.Main[1].NowHp = 1;\r
690 \r
691             battleInfo.Result.Friend.Main[4].Spec.ShipType = 16;\r
692             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
693             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "水母2隻");\r
694         }\r
695 \r
696         /// <summary>\r
697         /// 873: 北方海域警備を実施せよ!\r
698         /// </summary>\r
699         [TestMethod]\r
700         public void BattleResult_873()\r
701         {\r
702             var battleInfo = new BattleInfo(null, null);\r
703             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
704             questInfo.InspectQuestList(CreateQuestList(new[] {873}));\r
705 \r
706             battleInfo.InjectResultStatus(new[]\r
707             {\r
708                 ShipStatus(3), ShipStatus(2), ShipStatus(2),\r
709                 ShipStatus(2), ShipStatus(2), ShipStatus(2)\r
710             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
711             questInfo.InspectMapNext(Js(new\r
712             {\r
713                 api_maparea_id = 3,\r
714                 api_mapinfo_no = 1,\r
715                 api_event_id = 4\r
716             }));\r
717             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
718             questInfo.InspectMapNext(Js(new\r
719             {\r
720                 api_maparea_id = 3,\r
721                 api_mapinfo_no = 1,\r
722                 api_event_id = 5\r
723             }));\r
724             questInfo.InspectBattleResult(Js(new {api_win_rank = "B"}));\r
725             PAssert.That(() => questInfo.Quests[0].Count.NowArray[0] == 0);\r
726             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
727             PAssert.That(() => questInfo.Quests[0].Count.NowArray[0] == 1);\r
728 \r
729             battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;\r
730             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
731             PAssert.That(() => questInfo.Quests[0].Count.NowArray[0] == 1, "軽巡なし");\r
732             battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;\r
733 \r
734             questInfo.InspectMapNext(Js(new\r
735             {\r
736                 api_maparea_id = 3,\r
737                 api_mapinfo_no = 2,\r
738                 api_event_id = 5\r
739             }));\r
740             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
741             questInfo.InspectMapNext(Js(new\r
742             {\r
743                 api_maparea_id = 3,\r
744                 api_mapinfo_no = 3,\r
745                 api_event_id = 5\r
746             }));\r
747             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
748             PAssert.That(() => questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
749         }\r
750 \r
751         /// <summary>\r
752         /// 875: 精鋭「三一駆」、鉄底海域に突入せよ!\r
753         /// </summary>\r
754         [TestMethod]\r
755         public void BattleResult_875()\r
756         {\r
757             var battleInfo = new BattleInfo(null, null);\r
758             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
759             questInfo.InspectQuestList(CreateQuestList(new[] {875}));\r
760 \r
761             battleInfo.InjectResultStatus(new[]\r
762             {\r
763                 ShipStatus(2, 543), ShipStatus(8, 360), ShipStatus(11, 545),\r
764                 ShipStatus(18, 467), ShipStatus(11, 261), ShipStatus(2, 344)\r
765             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
766             questInfo.InspectMapNext(Js(new\r
767             {\r
768                 api_maparea_id = 5,\r
769                 api_mapinfo_no = 4,\r
770                 api_event_id = 4\r
771             }));\r
772             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
773             questInfo.InspectMapNext(Js(new\r
774             {\r
775                 api_maparea_id = 5,\r
776                 api_mapinfo_no = 4,\r
777                 api_event_id = 5\r
778             }));\r
779             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
780             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
781             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
782             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
783 \r
784             battleInfo.Result.Friend.Main[5].NowHp = 0;\r
785             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
786             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "朝霜改轟沈");\r
787             battleInfo.Result.Friend.Main[5].NowHp = 1;\r
788 \r
789             battleInfo.Result.Friend.Main[0].Spec.Id = 345;\r
790             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
791             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "長波改二なし");\r
792             battleInfo.Result.Friend.Main[0].Spec.Id = 543;\r
793 \r
794             battleInfo.Result.Friend.Main[5].Spec.Id = 345;\r
795             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
796             PAssert.That(() => questInfo.Quests[0].Count.Now == 2, "高波改");\r
797             battleInfo.Result.Friend.Main[5].Spec.Id = 359;\r
798             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
799             PAssert.That(() => questInfo.Quests[0].Count.Now == 3, "沖波改");\r
800         }\r
801 \r
802         /// <summary>\r
803         /// 302: 大規模演習\r
804         /// 303: 「演習」で練度向上!\r
805         /// 304: 「演習」で他提督を圧倒せよ!\r
806         /// 311: 精鋭艦隊演習\r
807         /// </summary>\r
808         [TestMethod]\r
809         public void PracticeResult_303_304_302_311()\r
810         {\r
811             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
812             questInfo.InspectQuestList(CreateQuestList(new[] {302, 303, 304, 311}));\r
813 \r
814             questInfo.InspectPracticeResult(Js(new {api_win_rank = "C"}));\r
815             questInfo.InspectPracticeResult(Js(new {api_win_rank = "A"}));\r
816             PAssert.That(() =>\r
817                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
818                     .SequenceEqual(new[]\r
819                     {\r
820                         new {Id = 302, Now = 1}, new {Id = 303, Now = 2}, new {Id = 304, Now = 1},\r
821                         new {Id = 311, Now = 1}\r
822                     }));\r
823         }\r
824 \r
825         /// <summary>\r
826         /// 402: 「遠征」を3回成功させよう!\r
827         /// 403: 「遠征」を10回成功させよう!\r
828         /// 404: 大規模遠征作戦、発令!\r
829         /// 410: 南方への輸送作戦を成功させよ!\r
830         /// 411: 南方への鼠輸送を継続実施せよ!\r
831         /// </summary>\r
832         [TestMethod]\r
833         public void MissionResult_402_403_404_410_411()\r
834         {\r
835             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
836             questInfo.InspectQuestList(CreateQuestList(new[] {402, 403, 404, 410, 411}));\r
837 \r
838             questInfo.InspectDeck(Js(\r
839                 new[]\r
840                 {\r
841                     new {api_id = 2, api_mission = new[] {2, 6}},\r
842                     new {api_id = 3, api_mission = new[] {2, 37}},\r
843                     new {api_id = 4, api_mission = new[] {2, 2}}\r
844                 }));\r
845             questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
846             questInfo.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 2}));\r
847             questInfo.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 0}));\r
848             PAssert.That(() =>\r
849                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
850                     .SequenceEqual(new[]\r
851                     {\r
852                         new {Id = 402, Now = 2}, new {Id = 403, Now = 2}, new {Id = 404, Now = 2},\r
853                         new {Id = 410, Now = 1}, new {Id = 411, Now = 1}\r
854                     }));\r
855         }\r
856 \r
857         /// <summary>\r
858         /// 426: 海上通商航路の警戒を厳とせよ!\r
859         /// </summary>\r
860         [TestMethod]\r
861         public void MissionResult_426()\r
862         {\r
863             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
864             questInfo.InspectQuestList(CreateQuestList(new[] {426}));\r
865 \r
866             questInfo.InspectDeck(Js(\r
867                 new[]\r
868                 {\r
869                     new {api_id = 2, api_mission = new[] {2, 3}},\r
870                     new {api_id = 3, api_mission = new[] {2, 4}},\r
871                     new {api_id = 4, api_mission = new[] {2, 5}}\r
872                 }));\r
873             questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
874             questInfo.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
875             questInfo.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
876             PAssert.That(() =>\r
877                 questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}));\r
878             questInfo.InspectDeck(Js(\r
879                 new[]\r
880                 {\r
881                     new {api_id = 2, api_mission = new[] {2, 10}}\r
882                 }));\r
883             questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
884             PAssert.That(() =>\r
885                 questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
886         }\r
887 \r
888         /// <summary>\r
889         /// 428: 近海に侵入する敵潜を制圧せよ!\r
890         /// </summary>\r
891         [TestMethod]\r
892         public void MissionResult_428()\r
893         {\r
894             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
895             questInfo.InspectQuestList(CreateQuestList(new[] {428}));\r
896 \r
897             questInfo.InspectDeck(Js(\r
898                 new[]\r
899                 {\r
900                     new {api_id = 2, api_mission = new[] {2, 4}},\r
901                     new {api_id = 3, api_mission = new[] {2, 101}},\r
902                     new {api_id = 4, api_mission = new[] {2, 102}}\r
903                 }));\r
904             questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
905             questInfo.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
906             questInfo.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
907             PAssert.That(() =>\r
908                 questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
909         }\r
910 \r
911         /// <summary>\r
912         /// 503: 艦隊大整備!\r
913         /// 504: 艦隊酒保祭り!\r
914         /// </summary>\r
915         [TestMethod]\r
916         public void Powerup_503_504()\r
917         {\r
918             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
919             questInfo.InspectQuestList(CreateQuestList(new[] {503, 504}));\r
920 \r
921             questInfo.CountNyukyo();\r
922             questInfo.CountCharge();\r
923             PAssert.That(() =>\r
924                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
925                     .SequenceEqual(new[] {new {Id = 503, Now = 1}, new {Id = 504, Now = 1}}));\r
926         }\r
927 \r
928         /// <summary>\r
929         /// 605: 新装備「開発」指令\r
930         /// 606: 新造艦「建造」指令\r
931         /// 607: 装備「開発」集中強化!\r
932         /// 608: 艦娘「建造」艦隊強化!\r
933         /// 609: 軍縮条約対応!\r
934         /// 619: 装備の改修強化\r
935         /// </summary>\r
936         [TestMethod]\r
937         public void Kousyou_605_606_607_608_609_619()\r
938         {\r
939             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1)) {AcceptMax = 6};\r
940             questInfo.InspectQuestList(CreateQuestList(new[] {605, 606, 607, 608, 609, 619}));\r
941 \r
942             questInfo.CountCreateItem();\r
943             questInfo.CountCreateShip();\r
944             questInfo.InspectDestroyShip("api%5Fship%5Fid=98159%2C98166%2C98168&api%5Fverno=1");\r
945             questInfo.CountRemodelSlot();\r
946             PAssert.That(() =>\r
947                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
948                     .SequenceEqual(new[]\r
949                     {\r
950                         new {Id = 605, Now = 1}, new {Id = 606, Now = 1}, new {Id = 607, Now = 1},\r
951                         new {Id = 608, Now = 1}, new {Id = 609, Now = 3}, new {Id = 619, Now = 1}\r
952                     }));\r
953         }\r
954 \r
955         /// <summary>\r
956         /// 613: 資源の再利用\r
957         /// 638: 対空機銃量産\r
958         /// 663: 新型艤装の継続研究\r
959         /// 673: 装備開発力の整備\r
960         /// 674: 工廠環境の整備\r
961         /// 675: 運用装備の統合整備\r
962         /// 676: 装備開発力の集中整備\r
963         /// 677: 継戦支援能力の整備\r
964         /// </summary>\r
965         [TestMethod]\r
966         public void DestroyItem_613_638_663_673_674_675_676_677()\r
967         {\r
968             var itemInfo = new ItemInfo();\r
969             var questInfo = new QuestInfo(itemInfo, null, () => new DateTime(2015, 1, 1)) {AcceptMax = 8};\r
970 \r
971             itemInfo.InjectItemSpec(new[]\r
972             {\r
973                 new ItemSpec {Id = 1, Name = "12cm単装砲", Type = 1},\r
974                 new ItemSpec {Id = 37, Name = "7.7mm機銃", Type = 21},\r
975                 new ItemSpec {Id = 19, Name = "九六式艦戦", Type = 6},\r
976                 new ItemSpec {Id = 4, Name = "14cm単装砲", Type = 2},\r
977                 new ItemSpec {Id = 11, Name = "15.2cm単装砲", Type = 4},\r
978                 new ItemSpec {Id = 75, Name = "ドラム缶(輸送用)", Type = 30},\r
979                 new ItemSpec {Id = 7, Name = "35.6cm連装砲", Type = 3},\r
980                 new ItemSpec {Id = 25, Name = "零式水上偵察機", Type = 10},\r
981                 new ItemSpec {Id = 13, Name = "61cm三連装魚雷", Type = 5}\r
982             });\r
983             itemInfo.InjectItems(new[] {1, 37, 19, 4, 11, 75, 7, 25, 13});\r
984             questInfo.InspectQuestList(CreateQuestList(new[] {613, 638, 663, 673, 674, 675, 676, 677}));\r
985             questInfo.InspectDestroyItem("api%5Fslotitem%5Fids=1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9&api%5Fverno=1", null);\r
986             PAssert.That(() =>\r
987                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now}).Take(5).SequenceEqual(new[]\r
988                 {\r
989                     new {Id = 613, Now = 1}, new {Id = 638, Now = 1}, new {Id = 663, Now = 1},\r
990                     new {Id = 673, Now = 1}, new {Id = 674, Now = 1}\r
991                 }));\r
992             var q675 = questInfo.Quests[5];\r
993             PAssert.That(() => q675.Id == 675 && q675.Count.NowArray.SequenceEqual(new[] {1, 1}));\r
994             var q676 = questInfo.Quests[6];\r
995             PAssert.That(() => q676.Id == 676 && q676.Count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
996             var q677 = questInfo.Quests[7];\r
997             PAssert.That(() => q677.Id == 677 && q677.Count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
998         }\r
999 \r
1000         /// <summary>\r
1001         /// 702: 艦の「近代化改修」を実施せよ!\r
1002         /// 703: 「近代化改修」を進め、戦備を整えよ!\r
1003         /// </summary>\r
1004         [TestMethod]\r
1005         public void Powerup_702_703()\r
1006         {\r
1007             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
1008             questInfo.InspectQuestList(CreateQuestList(new[] {702, 703}));\r
1009             questInfo.InspectPowerup(Js(new {api_powerup_flag = 1}));\r
1010             PAssert.That(() =>\r
1011                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1012                     .SequenceEqual(new[] {new {Id = 702, Now = 1}, new {Id = 703, Now = 1}}));\r
1013         }\r
1014 \r
1015         [TestMethod]\r
1016         public void NotImplemented()\r
1017         {\r
1018             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
1019             questInfo.InspectQuestList(CreateQuestList(new[] {318}));\r
1020             PAssert.That(() => questInfo.Quests[0].Count.Spec.Material.Length == 0);\r
1021         }\r
1022 \r
1023         /// <summary>\r
1024         /// 文字列表記にする\r
1025         /// </summary>\r
1026         [TestMethod]\r
1027         public void ToStringTest()\r
1028         {\r
1029             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
1030             var status = new Status\r
1031             {\r
1032                 QuestCountList = new[]\r
1033                 {\r
1034                     new QuestCount {Id = 211, Now = 2},\r
1035                     new QuestCount {Id = 214, NowArray = new[] {20, 7, 10, 8}},\r
1036                     new QuestCount {Id = 854, NowArray = new[] {2, 1, 1, 1}},\r
1037                     new QuestCount {Id = 426, NowArray = new[] {1, 1, 1, 1}},\r
1038                     new QuestCount {Id = 428, NowArray = new[] {1, 1, 1}},\r
1039                     new QuestCount {Id = 873, NowArray = new[] {1, 1, 1}}\r
1040                 }\r
1041             };\r
1042             questInfo.LoadState(status);\r
1043             PAssert.That(() => status.QuestCountList[0].ToString() == "2/3");\r
1044             PAssert.That(() => status.QuestCountList[1].ToString() == "20/36 7/6 10/24 8/12");\r
1045             var z = status.QuestCountList[2];\r
1046             PAssert.That(() => z.ToString() == "4/4");\r
1047             PAssert.That(() => z.ToToolTip() == "2-4 6-1 6-3 6-4");\r
1048             z.NowArray = new[] {0, 0, 0, 0};\r
1049             PAssert.That(() => z.ToToolTip() == "");\r
1050             var q426 = status.QuestCountList[3];\r
1051             PAssert.That(() => q426.ToString() == "4/4");\r
1052             PAssert.That(() => q426.ToToolTip() == "警備任務 対潜警戒任務 海上護衛任務 強硬偵察任務");\r
1053             var q428 = status.QuestCountList[4];\r
1054             PAssert.That(() => q428.ToToolTip() == "対潜警戒任務1 海峡警備行動1 長時間対潜警戒1");\r
1055             q428.NowArray = new[] {0, 1, 0};\r
1056             PAssert.That(() => q428.ToToolTip() == "海峡警備行動1");\r
1057             var q873 = status.QuestCountList[5];\r
1058             PAssert.That(() => q873.ToString() == "3/3");\r
1059             PAssert.That(() => q873.ToToolTip() == "3-1 3-2 3-3");\r
1060         }\r
1061 \r
1062         /// <summary>\r
1063         /// 状態をロードするときに獲得資材に特殊資材のリストを追加しない\r
1064         /// </summary>\r
1065         [TestMethod]\r
1066         public void LoadStateNotAppendMaterialList()\r
1067         {\r
1068             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
1069             var status = new Status\r
1070             {\r
1071                 QuestList = new[]\r
1072                 {\r
1073                     new QuestStatus\r
1074                     {\r
1075                         Id = 854,\r
1076                         Category = 8,\r
1077                         Name = "",\r
1078                         Detail = "",\r
1079                         Material = new[] {0, 2000, 0, 0, 0, 0, 0, 4}\r
1080                     }\r
1081                 },\r
1082                 QuestCountList = new[]\r
1083                 {\r
1084                     new QuestCount{Id = 854,NowArray = new []{1,0,1,0}}\r
1085                 }\r
1086             };\r
1087             questInfo.LoadState(status);\r
1088             PAssert.That(() => questInfo.Quests[0].Material.Length == 8);\r
1089         }\r
1090     }\r
1091 }