OSDN Git Service

節分任務がリセットされないのを直す
[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 KancolleSniffer.Model;\r
20 using KancolleSniffer.Util;\r
21 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
22 \r
23 namespace KancolleSniffer.Test\r
24 {\r
25     [TestClass]\r
26     public class QuestInfoTest\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             PAssert.That(() => count.Now == 3);\r
38             count.AdjustCount(50);\r
39             PAssert.That(() => count.Now == 4);\r
40             count.AdjustCount(80);\r
41             PAssert.That(() => count.Now == 6);\r
42             count.AdjustCount(100);\r
43             PAssert.That(() => count.Now == 7);\r
44             count.Now = 14;\r
45             count.AdjustCount(100);\r
46             PAssert.That(() => count.Now == 14);\r
47             count.AdjustCount(80);\r
48             PAssert.That(() => count.Now == 6);\r
49             count.AdjustCount(50);\r
50             PAssert.That(() => count.Now == 5);\r
51             count.AdjustCount(0);\r
52             PAssert.That(() => count.Now == 3);\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             PAssert.That(() => count.Now == 2);\r
65             count.AdjustCount(50);\r
66             PAssert.That(() => count.Now == 3);\r
67             count.AdjustCount(80);\r
68             PAssert.That(() => count.Now == 6);\r
69             count.AdjustCount(100);\r
70             PAssert.That(() => count.Now == 7);\r
71             count.Now = 14;\r
72             count.AdjustCount(100);\r
73             PAssert.That(() => count.Now == 14);\r
74             count.AdjustCount(80);\r
75             PAssert.That(() => count.Now == 6);\r
76             count.AdjustCount(50);\r
77             PAssert.That(() => count.Now == 5);\r
78             count.AdjustCount(0);\r
79             PAssert.That(() => count.Now == 2);\r
80         }\r
81 \r
82         [TestMethod]\r
83         public void AdjustCount80Percent()\r
84         {\r
85             var count = new QuestCount\r
86             {\r
87                 Spec = new QuestSpec()\r
88             };\r
89             for (var shift = 0; shift <= 1; shift++)\r
90             {\r
91                 for (var max = 2; max <= 6; max++)\r
92                 {\r
93                     count.Spec.Max = max;\r
94                     count.Spec.Shift = shift;\r
95                     count.Now = 1;\r
96                     count.AdjustCount(80);\r
97                     PAssert.That(() => count.Now == count.Spec.Max - 1);\r
98                 }\r
99             }\r
100         }\r
101 \r
102         [TestMethod]\r
103         public void AdjustCountNowArray()\r
104         {\r
105             var count = new QuestCount\r
106             {\r
107                 Spec = new QuestSpec {MaxArray = new[] {36, 6, 24, 12}},\r
108                 NowArray = new[] {1, 2, 3, 4}\r
109             };\r
110             count.AdjustCount(50);\r
111             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 2, 3, 4}));\r
112             count.AdjustCount(100);\r
113             PAssert.That(() => count.NowArray.SequenceEqual(new[] {36, 6, 24, 12}));\r
114             count.NowArray = new[] {38, 12, 19, 12};\r
115             count.AdjustCount(100);\r
116             PAssert.That(() => count.NowArray.SequenceEqual(new[] {38, 12, 24, 12}));\r
117         }\r
118 \r
119         [TestMethod]\r
120         public void ResetQuestCount()\r
121         {\r
122             var queue = new Queue<DateTime>(new[]\r
123             {\r
124                 new DateTime(2017, 11, 1, 5, 0, 0), new DateTime(2017, 11, 6, 5, 0, 0),\r
125                 new DateTime(2017, 12, 1, 5, 0, 0)\r
126             });\r
127             var questInfo = new QuestInfo(null, null, () => queue.Dequeue());\r
128             var status = new Status\r
129             {\r
130                 QuestCountList = new[]\r
131                 {\r
132                     new QuestCount {Id = 201, Now = 1}, new QuestCount {Id = 213, Now = 1},\r
133                     new QuestCount {Id = 265, Now = 1}, new QuestCount {Id = 822, Now = 1}\r
134                 },\r
135                 QuestLastReset = new DateTime(2017, 10, 31, 5, 0, 0)\r
136             };\r
137             questInfo.LoadState(status);\r
138             questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
139             questInfo.SaveState(status);\r
140             PAssert.That(() =>\r
141                 status.QuestCountList.Select(qc => new {qc.Id, qc.Now}).SequenceEqual(new[]\r
142                     {new {Id = 213, Now = 1}, new {Id = 822, Now = 1}})); // デイリーとマンスリーが消える\r
143             questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
144             questInfo.SaveState(status);\r
145             PAssert.That(() =>\r
146                 status.QuestCountList.Select(qc => new {qc.Id, qc.Now}).SequenceEqual(new[]\r
147                     {new {Id = 822, Now = 1}})); // ウィークリーが消える\r
148             questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
149             questInfo.SaveState(status);\r
150             PAssert.That(() => status.QuestCountList.Length == 0); // クォータリーが消える\r
151         }\r
152 \r
153         [TestMethod]\r
154         public void ResetQuestList()\r
155         {\r
156             var queue = new Queue<DateTime>(new[]\r
157             {\r
158                 new DateTime(2017, 11, 1, 5, 0, 0), new DateTime(2017, 11, 6, 5, 0, 0),\r
159                 new DateTime(2017, 12, 1, 5, 0, 0)\r
160             });\r
161             var questInfo = new QuestInfo(null, null, () => queue.Dequeue());\r
162             var status = new Status\r
163             {\r
164                 QuestList = new[]\r
165                 {\r
166                     new QuestStatus {Id = 201, Category = 2}, new QuestStatus {Id = 213, Category = 2},\r
167                     new QuestStatus {Id = 265, Category = 2}, new QuestStatus {Id = 822, Category = 8}\r
168                 },\r
169                 QuestLastReset = new DateTime(2017, 10, 31, 5, 0, 0)\r
170             };\r
171             questInfo.LoadState(status);\r
172             questInfo.InspectQuestList(CreateQuestList(new int[0]));\r
173             questInfo.SaveState(status);\r
174             PAssert.That(() => status.QuestList.Select(q => q.Id).SequenceEqual(new[] {213, 822})); // デイリーとマンスリーが消える\r
175             questInfo.InspectQuestList(CreateQuestList(new int[0]));\r
176             questInfo.SaveState(status);\r
177             PAssert.That(() => status.QuestList.Select(q => q.Id).SequenceEqual(new[] {822})); // ウィークリーが消える\r
178             questInfo.InspectQuestList(CreateQuestList(new int[0]));\r
179             questInfo.SaveState(status);\r
180             PAssert.That(() => status.QuestList.Length == 0); // クォータリーが消える\r
181         }\r
182 \r
183         [TestMethod]\r
184         public void ResetFrom0To5OClock()\r
185         {\r
186             var queue = new Queue<DateTime>(new[]\r
187             {\r
188                 new DateTime(2019, 1, 22, 4, 0, 0)\r
189             });\r
190             var questInfo = new QuestInfo(null, null, () => queue.Dequeue());\r
191             var status = new Status\r
192             {\r
193                 QuestCountList = new[] {new QuestCount {Id = 213, Now = 1}},\r
194                 QuestLastReset = new DateTime(2019, 1, 20, 5, 16, 22)\r
195             };\r
196             questInfo.LoadState(status);\r
197             questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
198             questInfo.SaveState(status);\r
199             PAssert.That(() => status.QuestCountList.Length == 0);\r
200         }\r
201 \r
202         [TestMethod]\r
203         public void ResetWeeklyWithoutCount()\r
204         {\r
205             var queue = new Queue<DateTime>(new[]\r
206             {\r
207                 new DateTime(2019, 1, 27, 10, 0, 0),\r
208                 new DateTime(2019, 1, 28, 5, 0, 0)\r
209             });\r
210             var questInfo = new QuestInfo(null, null, () => queue.Dequeue());\r
211             var status = new Status\r
212             {\r
213                 QuestLastReset = new DateTime(2019, 1, 27, 5, 0, 0)\r
214             };\r
215             questInfo.LoadState(status);\r
216             questInfo.InspectQuestList( // 2019-1-27 10:00\r
217                 Js(new\r
218                 {\r
219                     api_list = new[]\r
220                     {\r
221                         new\r
222                         {\r
223                             api_no = 237,\r
224                             api_category = 2,\r
225                             api_type = 2,\r
226                             api_state = 2,\r
227                             api_title = "【節分拡張任務】南方海域 艦隊決戦",\r
228                             api_detail = "",\r
229                             api_get_material = new int[0],\r
230                             api_progress_flag = 0\r
231                         }\r
232                     }\r
233                 }));\r
234             PAssert.That(() => questInfo.Quests[0].Id == 237);\r
235             questInfo.InspectQuestList(CreateQuestList(new[] {201})); // 2019-1-28 05:00\r
236             PAssert.That(() => questInfo.Quests[0].Id == 201);\r
237         }\r
238 \r
239         private JsonObject Js(object obj) => JsonObject.CreateJsonObject(obj);\r
240 \r
241         private object CreateQuestList(int[] ids) => Js(new\r
242         {\r
243             api_list =\r
244                 ids.Select(id => new\r
245                 {\r
246                     api_no = id,\r
247                     api_category = id / 100,\r
248                     api_type = 1,\r
249                     api_state = 2,\r
250                     api_title = "",\r
251                     api_detail = "",\r
252                     api_get_material = new int[0],\r
253                     api_progress_flag = 0\r
254                 })\r
255         });\r
256 \r
257         /// <summary>\r
258         /// 201: 敵艦隊を撃滅せよ!\r
259         /// 210: 敵艦隊を10回邀撃せよ!\r
260         /// 214: あ号\r
261         /// 216: 敵艦隊主力を撃滅せよ!\r
262         /// </summary>\r
263         [TestMethod]\r
264         public void BattleResult_201_216_210_214()\r
265         {\r
266             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
267             questInfo.InspectQuestList(CreateQuestList(new[] {201, 216, 210, 214}));\r
268 \r
269             questInfo.InspectMapStart(Js(new\r
270             {\r
271                 api_maparea_id = 1,\r
272                 api_mapinfo_no = 1,\r
273                 api_event_id = 4\r
274             }));\r
275             var quests = questInfo.Quests;\r
276             // 出撃カウント\r
277             PAssert.That(() => quests[2].Id == 214 && quests[2].Count.NowArray[0] == 1);\r
278             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
279             // 道中S勝利\r
280             PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]\r
281             {\r
282                 new {Id = 201, Now = 1}, new {Id = 210, Now = 1},\r
283                 new {Id = 214, Now = 0}, new {Id = 216, Now = 1}\r
284             }));\r
285             PAssert.That(() => quests[2].Id == 214 &&\r
286                                quests[2].Count.NowArray.SequenceEqual(new[] {1, 1, 0, 0}));\r
287 \r
288             questInfo.InspectMapNext(Js(new\r
289             {\r
290                 api_maparea_id = 1,\r
291                 api_mapinfo_no = 1,\r
292                 api_event_id = 5\r
293             }));\r
294             // ボスB勝利\r
295             questInfo.InspectBattleResult(Js(new {api_win_rank = "B"}));\r
296             PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]\r
297             {\r
298                 new {Id = 201, Now = 2}, new {Id = 210, Now = 2},\r
299                 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}\r
300             }));\r
301             // ボス敗北\r
302             PAssert.That(() => quests[2].Id == 214 && quests[2].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
303             questInfo.InspectBattleResult(Js(new {api_win_rank = "C"}));\r
304             PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]\r
305             {\r
306                 new {Id = 201, Now = 2}, new {Id = 210, Now = 3},\r
307                 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}\r
308             }));\r
309             PAssert.That(() => quests[2].Id == 214 && quests[2].Count.NowArray.SequenceEqual(new[] {1, 1, 2, 1}));\r
310         }\r
311 \r
312         /// <summary>\r
313         /// 211: 敵空母を3隻撃沈せよ!\r
314         /// 212: 敵輸送船団を叩け!\r
315         /// 213: 海上通商破壊作戦\r
316         /// 218: 敵補給艦を3隻撃沈せよ!\r
317         /// </summary>\r
318         [TestMethod]\r
319         public void BattleResult_211_212_213_218_220_221()\r
320         {\r
321             var battleInfo = new BattleInfo(null, null);\r
322             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1)) {AcceptMax = 6};\r
323             questInfo.InspectQuestList(CreateQuestList(new[] {211, 212, 213, 218, 220, 221}));\r
324             // 補給艦1隻と空母2隻\r
325             battleInfo.InjectResultStatus(new ShipStatus[0], new ShipStatus[0], new[]\r
326             {\r
327                 new ShipStatus {NowHp = 0, MaxHp = 130, Spec = new ShipSpec {Id = 1558, ShipType = 15}},\r
328                 new ShipStatus {NowHp = 0, MaxHp = 90, Spec = new ShipSpec {Id = 1543, ShipType = 8}},\r
329                 new ShipStatus {NowHp = 0, MaxHp = 90, Spec = new ShipSpec {Id = 1543, ShipType = 8}},\r
330                 new ShipStatus {NowHp = 0, MaxHp = 96, Spec = new ShipSpec {Id = 1528, ShipType = 11}},\r
331                 new ShipStatus {NowHp = 0, MaxHp = 70, Spec = new ShipSpec {Id = 1523, ShipType = 7}},\r
332                 new ShipStatus {NowHp = 1, MaxHp = 70, Spec = new ShipSpec {Id = 1523, ShipType = 7}}\r
333             }, new ShipStatus[0]);\r
334             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
335             PAssert.That(() =>\r
336                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
337                     .SequenceEqual(new[]\r
338                     {\r
339                         new {Id = 211, Now = 2}, new {Id = 212, Now = 1}, new {Id = 213, Now = 1},\r
340                         new {Id = 218, Now = 1}, new {Id = 220, Now = 2}, new {Id = 221, Now = 1}\r
341                     }));\r
342         }\r
343 \r
344         /// <summary>\r
345         /// 228: 海上護衛戦\r
346         /// 230: 敵潜水艦を制圧せよ!\r
347         /// </summary>\r
348         [TestMethod]\r
349         public void BattleResult_228_230()\r
350         {\r
351             var battleInfo = new BattleInfo(null, null);\r
352             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
353             questInfo.InspectQuestList(CreateQuestList(new[] {228, 230}));\r
354             // 潜水艦3\r
355             battleInfo.InjectResultStatus(new ShipStatus[0], new ShipStatus[0], new[]\r
356             {\r
357                 new ShipStatus {NowHp = 0, MaxHp = 27, Spec = new ShipSpec {Id = 1532, ShipType = 13}},\r
358                 new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}},\r
359                 new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}}\r
360             }, new ShipStatus[0]);\r
361             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
362             PAssert.That(() =>\r
363                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
364                     .SequenceEqual(new[]\r
365                     {\r
366                         new {Id = 228, Now = 3}, new {Id = 230, Now = 3}\r
367                     }));\r
368         }\r
369 \r
370         /// <summary>\r
371         /// 226: 南西諸島海域の制海権を握れ!\r
372         /// </summary>\r
373         [TestMethod]\r
374         public void BattleResult_226()\r
375         {\r
376             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
377             questInfo.InspectQuestList(CreateQuestList(new[] {226}));\r
378 \r
379             questInfo.InspectMapStart(Js(new\r
380             {\r
381                 api_maparea_id = 2,\r
382                 api_mapinfo_no = 1,\r
383                 api_event_id = 4\r
384             }));\r
385             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
386             PAssert.That(() =>\r
387                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
388                     .SequenceEqual(new[] {new {Id = 226, Now = 0}}));\r
389             questInfo.InspectMapNext(Js(new\r
390             {\r
391                 api_maparea_id = 2,\r
392                 api_mapinfo_no = 1,\r
393                 api_event_id = 5\r
394             }));\r
395             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
396             PAssert.That(() =>\r
397                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
398                     .SequenceEqual(new[] {new {Id = 226, Now = 1}}));\r
399             questInfo.InspectMapStart(Js(new\r
400             {\r
401                 api_maparea_id = 2,\r
402                 api_mapinfo_no = 1,\r
403                 api_event_id = 4\r
404             }));\r
405             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
406             PAssert.That(() =>\r
407                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
408                     .SequenceEqual(new[] {new {Id = 226, Now = 1}}));\r
409         }\r
410 \r
411         /// <summary>\r
412         /// // 243: 南方海域珊瑚諸島沖の制空権を握れ!\r
413         /// </summary>\r
414         [TestMethod]\r
415         public void BattleResult_243()\r
416         {\r
417             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
418             questInfo.InspectQuestList(CreateQuestList(new[] {243}));\r
419 \r
420             questInfo.InspectMapStart(Js(new\r
421             {\r
422                 api_maparea_id = 5,\r
423                 api_mapinfo_no = 2,\r
424                 api_event_id = 5\r
425             }));\r
426             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
427             PAssert.That(() =>\r
428                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
429                     .SequenceEqual(new[] {new {Id = 243, Now = 0}}));\r
430 \r
431             questInfo.InspectMapNext(Js(new\r
432             {\r
433                 api_maparea_id = 5,\r
434                 api_mapinfo_no = 2,\r
435                 api_event_id = 5\r
436             }));\r
437             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
438             PAssert.That(() =>\r
439                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
440                     .SequenceEqual(new[] {new {Id = 243, Now = 1}}));\r
441         }\r
442 \r
443         private ShipStatus ShipStatus(int shipType, int specId = 0) =>\r
444             new ShipStatus {NowHp = 1, Spec = new ShipSpec {Id = specId, ShipType = shipType}};\r
445 \r
446 \r
447         /// <summary>\r
448         /// 249: 「第五戦隊」出撃せよ!\r
449         /// </summary>\r
450         [TestMethod]\r
451         public void BattleResult_249()\r
452         {\r
453             var battleInfo = new BattleInfo(null, null);\r
454             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
455             questInfo.InspectQuestList(CreateQuestList(new[] {249}));\r
456 \r
457             battleInfo.InjectResultStatus(new[]\r
458             {\r
459                 ShipStatus(5, 319), ShipStatus(5, 192), ShipStatus(5, 194),\r
460                 ShipStatus(5, 193), ShipStatus(6, 189), ShipStatus(6, 188)\r
461             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
462             questInfo.InspectMapNext(Js(new\r
463             {\r
464                 api_maparea_id = 2,\r
465                 api_mapinfo_no = 5,\r
466                 api_event_id = 4\r
467             }));\r
468             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
469             questInfo.InspectMapNext(Js(new\r
470             {\r
471                 api_maparea_id = 2,\r
472                 api_mapinfo_no = 5,\r
473                 api_event_id = 5\r
474             }));\r
475             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
476             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
477             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
478             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
479             questInfo.Quests[0].Count.Now = 0;\r
480 \r
481             battleInfo.Result.Friend.Main[1].NowHp = 0;\r
482             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
483             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "那智改二轟沈");\r
484         }\r
485 \r
486         /// <summary>\r
487         /// 257: 「水雷戦隊」南西へ!\r
488         /// </summary>\r
489         [TestMethod]\r
490         public void BattleResult_257()\r
491         {\r
492             var battleInfo = new BattleInfo(null, null);\r
493             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
494             questInfo.InspectQuestList(CreateQuestList(new[] {257}));\r
495 \r
496             battleInfo.InjectResultStatus(new[]\r
497             {\r
498                 ShipStatus(3), ShipStatus(2), ShipStatus(2),\r
499                 ShipStatus(2), ShipStatus(2), ShipStatus(2)\r
500             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
501             questInfo.InspectMapNext(Js(new\r
502             {\r
503                 api_maparea_id = 1,\r
504                 api_mapinfo_no = 4,\r
505                 api_event_id = 4\r
506             }));\r
507             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
508             questInfo.InspectMapNext(Js(new\r
509             {\r
510                 api_maparea_id = 1,\r
511                 api_mapinfo_no = 4,\r
512                 api_event_id = 5\r
513             }));\r
514             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
515             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
516             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
517             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
518             questInfo.Quests[0].Count.Now = 0;\r
519 \r
520             battleInfo.Result.Friend.Main[0].NowHp = 0;\r
521             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
522             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "軽巡轟沈");\r
523             battleInfo.Result.Friend.Main[0].NowHp = 1;\r
524 \r
525             battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;\r
526             battleInfo.Result.Friend.Main[1].Spec.ShipType = 3;\r
527             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
528             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "旗艦が駆逐");\r
529             battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;\r
530 \r
531             battleInfo.Result.Friend.Main[2].Spec.ShipType = 3;\r
532             battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;\r
533             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
534             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "軽巡が4隻");\r
535 \r
536             battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;\r
537             battleInfo.Result.Friend.Main[3].Spec.ShipType = 4;\r
538             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
539             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "駆逐軽巡以外");\r
540         }\r
541 \r
542         private ShipStatus ShipStatus(int shipType, int shipClass, int specId) =>\r
543             new ShipStatus {NowHp = 1, Spec = new ShipSpec {Id = specId, ShipType = shipType, ShipClass = shipClass}};\r
544 \r
545         /// <summary>\r
546         /// 257: 「水上打撃部隊」南方へ!\r
547         /// </summary>\r
548         [TestMethod]\r
549         public void BattleResult_259()\r
550         {\r
551             var battleInfo = new BattleInfo(null, null);\r
552             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
553             questInfo.InspectQuestList(CreateQuestList(new[] {259}));\r
554 \r
555             var org = new[]\r
556             {\r
557                 ShipStatus(3, 52, 321), ShipStatus(9, 19, 276), ShipStatus(10, 26, 411),\r
558                 ShipStatus(10, 26, 412), ShipStatus(5, 29, 193), ShipStatus(5, 29, 194)\r
559             };\r
560             battleInfo.InjectResultStatus(\r
561                 org.ToArray(), new ShipStatus[0],\r
562                 new ShipStatus[0], new ShipStatus[0]);\r
563             questInfo.InspectMapNext(Js(new\r
564             {\r
565                 api_maparea_id = 5,\r
566                 api_mapinfo_no = 1,\r
567                 api_event_id = 4\r
568             }));\r
569             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
570             questInfo.InspectMapNext(Js(new\r
571             {\r
572                 api_maparea_id = 5,\r
573                 api_mapinfo_no = 1,\r
574                 api_event_id = 5\r
575             }));\r
576             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
577             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
578             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
579             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
580             questInfo.Quests[0].Count.Now = 0;\r
581 \r
582             battleInfo.Result.Friend.Main[0].NowHp = 0;\r
583             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
584             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "軽巡轟沈");\r
585             battleInfo.Result.Friend.Main[0].NowHp = 1;\r
586 \r
587             battleInfo.Result.Friend.Main[4] = ShipStatus(9, 37, 136);\r
588             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
589             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "戦艦4隻");\r
590             battleInfo.Result.Friend.Main[4] = org[4];\r
591 \r
592             battleInfo.Result.Friend.Main[0] = ShipStatus(4, 4, 58);\r
593             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
594             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "軽巡なし");\r
595             battleInfo.Result.Friend.Main[0] = org[0];\r
596 \r
597             battleInfo.Result.Friend.Main[2] = ShipStatus(10, 2, 553);\r
598             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
599             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "伊勢改二");\r
600         }\r
601 \r
602         /// <summary>\r
603         /// 264: 「空母機動部隊」西へ!\r
604         /// </summary>\r
605         [TestMethod]\r
606         public void BattleResult_264()\r
607         {\r
608             var battleInfo = new BattleInfo(null, null);\r
609             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
610             questInfo.InspectQuestList(CreateQuestList(new[] {264}));\r
611 \r
612             battleInfo.InjectResultStatus(new[]\r
613             {\r
614                 ShipStatus(7), ShipStatus(11), ShipStatus(3),\r
615                 ShipStatus(3), ShipStatus(2), ShipStatus(2)\r
616             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
617             questInfo.InspectMapNext(Js(new\r
618             {\r
619                 api_maparea_id = 4,\r
620                 api_mapinfo_no = 2,\r
621                 api_event_id = 4\r
622             }));\r
623             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
624             questInfo.InspectMapNext(Js(new\r
625             {\r
626                 api_maparea_id = 4,\r
627                 api_mapinfo_no = 2,\r
628                 api_event_id = 5\r
629             }));\r
630             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
631             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
632             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
633             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
634 \r
635             battleInfo.Result.Friend.Main[0].NowHp = 0;\r
636             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
637             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "轟沈あり");\r
638         }\r
639 \r
640         /// <summary>\r
641         /// 266: 「水上反撃部隊」突入せよ!\r
642         /// </summary>\r
643         [TestMethod]\r
644         public void BattleResult_266()\r
645         {\r
646             var battleInfo = new BattleInfo(null, null);\r
647             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
648             questInfo.InspectQuestList(CreateQuestList(new[] {266}));\r
649 \r
650             battleInfo.InjectResultStatus(new[]\r
651             {\r
652                 ShipStatus(2), ShipStatus(5), ShipStatus(3),\r
653                 ShipStatus(2), ShipStatus(2), ShipStatus(2)\r
654             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
655             questInfo.InspectMapNext(Js(new\r
656             {\r
657                 api_maparea_id = 2,\r
658                 api_mapinfo_no = 5,\r
659                 api_event_id = 4\r
660             }));\r
661             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
662             questInfo.InspectMapNext(Js(new\r
663             {\r
664                 api_maparea_id = 2,\r
665                 api_mapinfo_no = 5,\r
666                 api_event_id = 5\r
667             }));\r
668             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
669             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
670             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
671             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
672 \r
673             battleInfo.Result.Friend.Main[1].NowHp = 0;\r
674             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
675             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "轟沈あり");\r
676             battleInfo.Result.Friend.Main[1].NowHp = 1;\r
677 \r
678             battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;\r
679             battleInfo.Result.Friend.Main[2].Spec.ShipType = 2;\r
680             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
681             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "旗艦が軽巡");\r
682             battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;\r
683             battleInfo.Result.Friend.Main[2].Spec.ShipType = 3;\r
684 \r
685             battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;\r
686             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
687             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "軽巡が2隻");\r
688         }\r
689 \r
690         /// <summary>\r
691         /// 822: 沖ノ島海域迎撃戦\r
692         /// 854: 戦果拡張任務!「Z作戦」前段作戦\r
693         /// </summary>\r
694         [TestMethod]\r
695         public void BattleResult_822_854()\r
696         {\r
697             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
698             questInfo.InspectQuestList(CreateQuestList(new[] {822, 854}));\r
699 \r
700             questInfo.InspectMapNext(Js(new\r
701             {\r
702                 api_maparea_id = 2,\r
703                 api_mapinfo_no = 4,\r
704                 api_event_id = 5\r
705             }));\r
706             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
707             questInfo.InspectMapNext(Js(new\r
708             {\r
709                 api_maparea_id = 6,\r
710                 api_mapinfo_no = 1,\r
711                 api_event_id = 5\r
712             }));\r
713             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
714             questInfo.InspectMapNext(Js(new\r
715             {\r
716                 api_maparea_id = 6,\r
717                 api_mapinfo_no = 3,\r
718                 api_event_id = 5\r
719             }));\r
720             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
721             questInfo.InspectMapNext(Js(new\r
722             {\r
723                 api_maparea_id = 6,\r
724                 api_mapinfo_no = 4,\r
725                 api_event_id = 5\r
726             }));\r
727             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
728             PAssert.That(() => questInfo.Quests[1].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
729             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
730             questInfo.InspectMapNext(Js(new\r
731             {\r
732                 api_maparea_id = 2,\r
733                 api_mapinfo_no = 4,\r
734                 api_event_id = 5\r
735             }));\r
736             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
737             PAssert.That(() => questInfo.Quests[1].Count.NowArray.SequenceEqual(new[] {2, 1, 1, 1}));\r
738             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
739         }\r
740 \r
741         /// <summary>\r
742         /// 861: 強行輸送艦隊、抜錨!\r
743         /// </summary>\r
744         [TestMethod]\r
745         public void MapNext_861()\r
746         {\r
747             var battleInfo = new BattleInfo(null, null);\r
748             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
749             questInfo.InspectQuestList(CreateQuestList(new[] {861}));\r
750 \r
751             battleInfo.InjectResultStatus(new[]\r
752             {\r
753                 ShipStatus(10), ShipStatus(22), ShipStatus(2),\r
754                 ShipStatus(2), ShipStatus(2), ShipStatus(2)\r
755             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
756 \r
757             questInfo.InspectMapNext(Js(new\r
758             {\r
759                 api_maparea_id = 1,\r
760                 api_mapinfo_no = 6,\r
761                 api_event_id = 4\r
762             }));\r
763             questInfo.InspectMapNext(Js(new\r
764             {\r
765                 api_maparea_id = 1,\r
766                 api_mapinfo_no = 6,\r
767                 api_event_id = 8\r
768             }));\r
769             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
770 \r
771             battleInfo.Result.Friend.Main[1].NowHp = 0;\r
772             questInfo.InspectMapNext(Js(new\r
773             {\r
774                 api_maparea_id = 1,\r
775                 api_mapinfo_no = 6,\r
776                 api_event_id = 8\r
777             }));\r
778             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "轟沈あり");\r
779             battleInfo.Result.Friend.Main[1].NowHp = 1;\r
780 \r
781             battleInfo.Result.Friend.Main[2].Spec.ShipType = 10;\r
782             questInfo.InspectMapNext(Js(new\r
783             {\r
784                 api_maparea_id = 1,\r
785                 api_mapinfo_no = 6,\r
786                 api_event_id = 8\r
787             }));\r
788             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "補給・航戦が3隻");\r
789         }\r
790 \r
791         /// <summary>\r
792         /// 862: 前線の航空偵察を実施せよ!\r
793         /// </summary>\r
794         [TestMethod]\r
795         public void BattleResult_862()\r
796         {\r
797             var battleInfo = new BattleInfo(null, null);\r
798             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
799             questInfo.InspectQuestList(CreateQuestList(new[] {862}));\r
800 \r
801             battleInfo.InjectResultStatus(new[]\r
802             {\r
803                 ShipStatus(2), ShipStatus(3), ShipStatus(3),\r
804                 ShipStatus(2), ShipStatus(2), ShipStatus(16)\r
805             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
806             questInfo.InspectMapNext(Js(new\r
807             {\r
808                 api_maparea_id = 6,\r
809                 api_mapinfo_no = 3,\r
810                 api_event_id = 4\r
811             }));\r
812             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
813             questInfo.InspectMapNext(Js(new\r
814             {\r
815                 api_maparea_id = 6,\r
816                 api_mapinfo_no = 3,\r
817                 api_event_id = 5\r
818             }));\r
819             questInfo.InspectBattleResult(Js(new {api_win_rank = "B"}));\r
820             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
821             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
822             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
823 \r
824             battleInfo.Result.Friend.Main[1].NowHp = 0;\r
825             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
826             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "轟沈あり");\r
827             battleInfo.Result.Friend.Main[1].NowHp = 1;\r
828 \r
829             battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;\r
830             battleInfo.Result.Friend.Main[4].Spec.ShipType = 16;\r
831             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
832             PAssert.That(() => questInfo.Quests[0].Count.Now == 2, "軽巡3隻水母2隻");\r
833         }\r
834 \r
835         /// <summary>\r
836         /// 873: 北方海域警備を実施せよ!\r
837         /// </summary>\r
838         [TestMethod]\r
839         public void BattleResult_873()\r
840         {\r
841             var battleInfo = new BattleInfo(null, null);\r
842             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
843             questInfo.InspectQuestList(CreateQuestList(new[] {873}));\r
844 \r
845             battleInfo.InjectResultStatus(new[]\r
846             {\r
847                 ShipStatus(3), ShipStatus(2), ShipStatus(2),\r
848                 ShipStatus(2), ShipStatus(2), ShipStatus(2)\r
849             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
850             questInfo.InspectMapNext(Js(new\r
851             {\r
852                 api_maparea_id = 3,\r
853                 api_mapinfo_no = 1,\r
854                 api_event_id = 4\r
855             }));\r
856             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
857             questInfo.InspectMapNext(Js(new\r
858             {\r
859                 api_maparea_id = 3,\r
860                 api_mapinfo_no = 1,\r
861                 api_event_id = 5\r
862             }));\r
863             questInfo.InspectBattleResult(Js(new {api_win_rank = "B"}));\r
864             PAssert.That(() => questInfo.Quests[0].Count.NowArray[0] == 0);\r
865             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
866             PAssert.That(() => questInfo.Quests[0].Count.NowArray[0] == 1);\r
867 \r
868             battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;\r
869             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
870             PAssert.That(() => questInfo.Quests[0].Count.NowArray[0] == 1, "軽巡なし");\r
871             battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;\r
872 \r
873             questInfo.InspectMapNext(Js(new\r
874             {\r
875                 api_maparea_id = 3,\r
876                 api_mapinfo_no = 2,\r
877                 api_event_id = 5\r
878             }));\r
879             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
880             questInfo.InspectMapNext(Js(new\r
881             {\r
882                 api_maparea_id = 3,\r
883                 api_mapinfo_no = 3,\r
884                 api_event_id = 5\r
885             }));\r
886             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
887             PAssert.That(() => questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
888         }\r
889 \r
890         /// <summary>\r
891         /// 875: 精鋭「三一駆」、鉄底海域に突入せよ!\r
892         /// </summary>\r
893         [TestMethod]\r
894         public void BattleResult_875()\r
895         {\r
896             var battleInfo = new BattleInfo(null, null);\r
897             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
898             questInfo.InspectQuestList(CreateQuestList(new[] {875}));\r
899 \r
900             battleInfo.InjectResultStatus(new[]\r
901             {\r
902                 ShipStatus(2, 543), ShipStatus(8, 360), ShipStatus(11, 545),\r
903                 ShipStatus(18, 467), ShipStatus(11, 261), ShipStatus(2, 344)\r
904             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
905             questInfo.InspectMapNext(Js(new\r
906             {\r
907                 api_maparea_id = 5,\r
908                 api_mapinfo_no = 4,\r
909                 api_event_id = 4\r
910             }));\r
911             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
912             questInfo.InspectMapNext(Js(new\r
913             {\r
914                 api_maparea_id = 5,\r
915                 api_mapinfo_no = 4,\r
916                 api_event_id = 5\r
917             }));\r
918             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
919             PAssert.That(() => questInfo.Quests[0].Count.Now == 0);\r
920             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
921             PAssert.That(() => questInfo.Quests[0].Count.Now == 1);\r
922 \r
923             battleInfo.Result.Friend.Main[5].NowHp = 0;\r
924             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
925             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "朝霜改轟沈");\r
926             battleInfo.Result.Friend.Main[5].NowHp = 1;\r
927 \r
928             battleInfo.Result.Friend.Main[0].Spec.Id = 345;\r
929             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
930             PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "長波改二なし");\r
931             battleInfo.Result.Friend.Main[0].Spec.Id = 543;\r
932 \r
933             battleInfo.Result.Friend.Main[5].Spec.Id = 345;\r
934             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
935             PAssert.That(() => questInfo.Quests[0].Count.Now == 2, "高波改");\r
936             battleInfo.Result.Friend.Main[5].Spec.Id = 359;\r
937             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
938             PAssert.That(() => questInfo.Quests[0].Count.Now == 3, "沖波改");\r
939         }\r
940 \r
941         /// <summary>\r
942         /// 888: 新編成「三川艦隊」、鉄底海峡に突入せよ!\r
943         /// </summary>\r
944         [TestMethod]\r
945         public void BattleResult_888()\r
946         {\r
947             var battleInfo = new BattleInfo(null, null);\r
948             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
949             questInfo.InspectQuestList(CreateQuestList(new[] {888}));\r
950             var count = questInfo.Quests[0].Count;\r
951 \r
952             battleInfo.InjectResultStatus(new[]\r
953             {\r
954                 ShipStatus(5, 427), ShipStatus(5, 264), ShipStatus(5, 142),\r
955                 ShipStatus(5, 417), ShipStatus(2, 144), ShipStatus(2, 195)\r
956             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
957             questInfo.InspectMapNext(Js(new\r
958             {\r
959                 api_maparea_id = 5,\r
960                 api_mapinfo_no = 1,\r
961                 api_event_id = 4\r
962             }));\r
963             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
964             questInfo.InspectMapNext(Js(new\r
965             {\r
966                 api_maparea_id = 5,\r
967                 api_mapinfo_no = 1,\r
968                 api_event_id = 5\r
969             }));\r
970             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
971             PAssert.That(() => count.NowArray[0] == 0);\r
972             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
973             PAssert.That(() => count.NowArray[0] == 1);\r
974 \r
975             battleInfo.Result.Friend.Main[0].NowHp = 0;\r
976             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
977             PAssert.That(() => count.NowArray[0] == 1, "轟沈あり");\r
978             battleInfo.Result.Friend.Main[0].NowHp = 1;\r
979 \r
980             battleInfo.Result.Friend.Main[0].Spec.Id = 319;\r
981             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
982             PAssert.That(() => count.NowArray[0] == 1, "三川艦隊3隻");\r
983             battleInfo.Result.Friend.Main[0].Spec.Id = 427;\r
984 \r
985             questInfo.InspectMapNext(Js(new\r
986             {\r
987                 api_maparea_id = 5,\r
988                 api_mapinfo_no = 3,\r
989                 api_event_id = 5\r
990             }));\r
991             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
992             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0}));\r
993 \r
994             questInfo.InspectMapNext(Js(new\r
995             {\r
996                 api_maparea_id = 5,\r
997                 api_mapinfo_no = 4,\r
998                 api_event_id = 5\r
999             }));\r
1000             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
1001             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
1002         }\r
1003 \r
1004         /// <summary>\r
1005         /// 893: 泊地周辺海域の安全確保を徹底せよ!\r
1006         /// </summary>\r
1007         [TestMethod]\r
1008         public void BattleResult_893()\r
1009         {\r
1010             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
1011             questInfo.InspectQuestList(CreateQuestList(new[] {893}));\r
1012             var count = questInfo.Quests[0].Count;\r
1013 \r
1014             questInfo.InspectMapNext(Js(new\r
1015             {\r
1016                 api_maparea_id = 1,\r
1017                 api_mapinfo_no = 5,\r
1018                 api_event_id = 5\r
1019             }));\r
1020             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
1021             PAssert.That(() => count.NowArray[0] == 0, "A勝利はカウントしない");\r
1022             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
1023             PAssert.That(() => count.NowArray[0] == 1, "1-5");\r
1024 \r
1025             questInfo.InspectMapNext(Js(new\r
1026             {\r
1027                 api_maparea_id = 7,\r
1028                 api_mapinfo_no = 1,\r
1029                 api_event_id = 5\r
1030             }));\r
1031             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
1032             PAssert.That(() => count.NowArray[1] == 1, "7-1");\r
1033 \r
1034             questInfo.InspectMapNext(Js(new\r
1035             {\r
1036                 api_maparea_id = 7,\r
1037                 api_mapinfo_no = 2,\r
1038                 api_no = 7,\r
1039                 api_event_id = 5\r
1040             }));\r
1041             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
1042             PAssert.That(() => count.NowArray[2] == 1, "7-2G");\r
1043 \r
1044             questInfo.InspectMapNext(Js(new\r
1045             {\r
1046                 api_maparea_id = 7,\r
1047                 api_mapinfo_no = 2,\r
1048                 api_no = 15,\r
1049                 api_event_id = 5\r
1050             }));\r
1051             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
1052             PAssert.That(() => count.NowArray[3] == 1, "7-2M");\r
1053         }\r
1054 \r
1055         /// <summary>\r
1056         /// 894: 空母戦力の投入による兵站線戦闘哨戒\r
1057         /// </summary>\r
1058         [TestMethod]\r
1059         public void BattleResult_894()\r
1060         {\r
1061             var battleInfo = new BattleInfo(null, null);\r
1062             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
1063             questInfo.InspectQuestList(CreateQuestList(new[] {894}));\r
1064             var count = questInfo.Quests[0].Count;\r
1065             battleInfo.InjectResultStatus(new[]\r
1066             {\r
1067                 ShipStatus(2), ShipStatus(2), ShipStatus(2),\r
1068                 ShipStatus(2), ShipStatus(2), ShipStatus(2)\r
1069             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1070 \r
1071             questInfo.InspectMapNext(Js(new\r
1072             {\r
1073                 api_maparea_id = 1,\r
1074                 api_mapinfo_no = 3,\r
1075                 api_event_id = 5\r
1076             }));\r
1077             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
1078             PAssert.That(() => count.NowArray[0] == 0, "空母なしはカウントしない");\r
1079 \r
1080             battleInfo.Result.Friend.Main[0].Spec.ShipType = 7;\r
1081             questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
1082             PAssert.That(() => count.NowArray[0] == 0, "A勝利はカウントしない");\r
1083 \r
1084             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
1085             PAssert.That(() => count.NowArray[0] == 1, "1-3");\r
1086 \r
1087             questInfo.InspectMapNext(Js(new\r
1088             {\r
1089                 api_maparea_id = 1,\r
1090                 api_mapinfo_no = 4,\r
1091                 api_event_id = 5\r
1092             }));\r
1093             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
1094             PAssert.That(() => count.NowArray[1] == 1, "1-4");\r
1095 \r
1096             questInfo.InspectMapNext(Js(new\r
1097             {\r
1098                 api_maparea_id = 2,\r
1099                 api_mapinfo_no = 1,\r
1100                 api_event_id = 5\r
1101             }));\r
1102             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
1103             PAssert.That(() => count.NowArray[2] == 1, "2-1");\r
1104 \r
1105             questInfo.InspectMapNext(Js(new\r
1106             {\r
1107                 api_maparea_id = 2,\r
1108                 api_mapinfo_no = 2,\r
1109                 api_event_id = 5\r
1110             }));\r
1111             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
1112             PAssert.That(() => count.NowArray[3] == 1, "2-2");\r
1113 \r
1114             questInfo.InspectMapNext(Js(new\r
1115             {\r
1116                 api_maparea_id = 2,\r
1117                 api_mapinfo_no = 3,\r
1118                 api_event_id = 5\r
1119             }));\r
1120             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
1121             PAssert.That(() => count.NowArray[4] == 1, "2-3");\r
1122         }\r
1123 \r
1124         /// <summary>\r
1125         /// 302: 大規模演習\r
1126         /// 303: 「演習」で練度向上!\r
1127         /// 304: 「演習」で他提督を圧倒せよ!\r
1128         /// 311: 精鋭艦隊演習\r
1129         /// 318: 給糧艦「伊良湖」の支援\r
1130         /// </summary>\r
1131         [TestMethod]\r
1132         public void PracticeResult_303_304_302_311_315()\r
1133         {\r
1134             var battleInfo = new BattleInfo(null, null);\r
1135             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
1136             questInfo.InspectQuestList(CreateQuestList(new[] {302, 303, 304, 311, 315}));\r
1137 \r
1138             battleInfo.InjectResultStatus(new[]\r
1139             {\r
1140                 ShipStatus(2, 543), ShipStatus(3, 488)\r
1141             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1142             questInfo.InspectPracticeResult(Js(new {api_win_rank = "C"}));\r
1143             questInfo.InspectPracticeResult(Js(new {api_win_rank = "A"}));\r
1144             PAssert.That(() =>\r
1145                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1146                     .SequenceEqual(new[]\r
1147                     {\r
1148                         new {Id = 302, Now = 1}, new {Id = 303, Now = 2}, new {Id = 304, Now = 1},\r
1149                         new {Id = 311, Now = 1}, new {Id = 315, Now = 1}\r
1150                     }));\r
1151         }\r
1152 \r
1153         [TestMethod]\r
1154         public void PracticeResult_318()\r
1155         {\r
1156             var battleInfo = new BattleInfo(null, null);\r
1157             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
1158             questInfo.InspectQuestList(CreateQuestList(new[] {318}));\r
1159             var q318 = questInfo.Quests[0];\r
1160 \r
1161             battleInfo.InjectResultStatus(new[]\r
1162             {\r
1163                 ShipStatus(2, 543), ShipStatus(3, 488)\r
1164             }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
1165 \r
1166             questInfo.InspectPracticeResult(Js(new {api_win_rank = "B"}));\r
1167             PAssert.That(() => q318.Count.Now == 0, "軽巡1隻");\r
1168             battleInfo.Result.Friend.Main[0] = ShipStatus(3, 200);\r
1169             questInfo.StartPractice("api%5Fdeck%5Fid=2");\r
1170             questInfo.InspectPracticeResult(Js(new {api_win_rank = "B"}));\r
1171             PAssert.That(() => q318.Count.Now == 0, "第2艦隊");\r
1172             questInfo.StartPractice("api%5Fdeck%5Fid=1"); // 第一艦隊\r
1173             questInfo.InspectPracticeResult(Js(new {api_win_rank = "C"}));\r
1174             PAssert.That(() => q318.Count.Now == 0, "敗北");\r
1175             questInfo.InspectPracticeResult(Js(new {api_win_rank = "B"}));\r
1176             PAssert.That(() => q318.Count.Now == 1);\r
1177 \r
1178             q318.Count.Now = 2;\r
1179             questInfo.InspectQuestList(CreateQuestList(new[] {318}));\r
1180             PAssert.That(() => q318.Count.Now == 2, "進捗調節しない");\r
1181         }\r
1182 \r
1183         /// <summary>\r
1184         /// 402: 「遠征」を3回成功させよう!\r
1185         /// 403: 「遠征」を10回成功させよう!\r
1186         /// 404: 大規模遠征作戦、発令!\r
1187         /// 410: 南方への輸送作戦を成功させよ!\r
1188         /// 411: 南方への鼠輸送を継続実施せよ!\r
1189         /// </summary>\r
1190         [TestMethod]\r
1191         public void MissionResult_402_403_404_410_411()\r
1192         {\r
1193             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
1194             questInfo.InspectQuestList(CreateQuestList(new[] {402, 403, 404, 410, 411}));\r
1195 \r
1196             questInfo.InspectDeck(Js(\r
1197                 new[]\r
1198                 {\r
1199                     new {api_id = 2, api_mission = new[] {2, 6}},\r
1200                     new {api_id = 3, api_mission = new[] {2, 37}},\r
1201                     new {api_id = 4, api_mission = new[] {2, 2}}\r
1202                 }));\r
1203             questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1204             questInfo.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 2}));\r
1205             questInfo.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 0}));\r
1206             PAssert.That(() =>\r
1207                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1208                     .SequenceEqual(new[]\r
1209                     {\r
1210                         new {Id = 402, Now = 2}, new {Id = 403, Now = 2}, new {Id = 404, Now = 2},\r
1211                         new {Id = 410, Now = 1}, new {Id = 411, Now = 1}\r
1212                     }));\r
1213         }\r
1214 \r
1215         /// <summary>\r
1216         /// 426: 海上通商航路の警戒を厳とせよ!\r
1217         /// </summary>\r
1218         [TestMethod]\r
1219         public void MissionResult_426()\r
1220         {\r
1221             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
1222             questInfo.InspectQuestList(CreateQuestList(new[] {426}));\r
1223 \r
1224             questInfo.InspectDeck(Js(\r
1225                 new[]\r
1226                 {\r
1227                     new {api_id = 2, api_mission = new[] {2, 3}},\r
1228                     new {api_id = 3, api_mission = new[] {2, 4}},\r
1229                     new {api_id = 4, api_mission = new[] {2, 5}}\r
1230                 }));\r
1231             questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1232             questInfo.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1233             questInfo.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1234             PAssert.That(() =>\r
1235                 questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}));\r
1236             questInfo.InspectDeck(Js(\r
1237                 new[]\r
1238                 {\r
1239                     new {api_id = 2, api_mission = new[] {2, 10}}\r
1240                 }));\r
1241             questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1242             PAssert.That(() =>\r
1243                 questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
1244         }\r
1245 \r
1246         /// <summary>\r
1247         /// 428: 近海に侵入する敵潜を制圧せよ!\r
1248         /// </summary>\r
1249         [TestMethod]\r
1250         public void MissionResult_428()\r
1251         {\r
1252             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
1253             questInfo.InspectQuestList(CreateQuestList(new[] {428}));\r
1254 \r
1255             questInfo.InspectDeck(Js(\r
1256                 new[]\r
1257                 {\r
1258                     new {api_id = 2, api_mission = new[] {2, 4}},\r
1259                     new {api_id = 3, api_mission = new[] {2, 101}},\r
1260                     new {api_id = 4, api_mission = new[] {2, 102}}\r
1261                 }));\r
1262             questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
1263             questInfo.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
1264             questInfo.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
1265             PAssert.That(() =>\r
1266                 questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
1267         }\r
1268 \r
1269         /// <summary>\r
1270         /// 503: 艦隊大整備!\r
1271         /// 504: 艦隊酒保祭り!\r
1272         /// </summary>\r
1273         [TestMethod]\r
1274         public void PowerUp_503_504()\r
1275         {\r
1276             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
1277             questInfo.InspectQuestList(CreateQuestList(new[] {503, 504}));\r
1278 \r
1279             questInfo.CountNyukyo();\r
1280             questInfo.CountCharge();\r
1281             PAssert.That(() =>\r
1282                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1283                     .SequenceEqual(new[] {new {Id = 503, Now = 1}, new {Id = 504, Now = 1}}));\r
1284         }\r
1285 \r
1286         /// <summary>\r
1287         /// 605: 新装備「開発」指令\r
1288         /// 606: 新造艦「建造」指令\r
1289         /// 607: 装備「開発」集中強化!\r
1290         /// 608: 艦娘「建造」艦隊強化!\r
1291         /// 609: 軍縮条約対応!\r
1292         /// 619: 装備の改修強化\r
1293         /// </summary>\r
1294         [TestMethod]\r
1295         public void Kousyou_605_606_607_608_609_619()\r
1296         {\r
1297             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1)) {AcceptMax = 6};\r
1298             questInfo.InspectQuestList(CreateQuestList(new[] {605, 606, 607, 608, 609, 619}));\r
1299 \r
1300             questInfo.CountCreateItem();\r
1301             questInfo.CountCreateShip();\r
1302             questInfo.InspectDestroyShip("api%5Fship%5Fid=98159%2C98166%2C98168&api%5Fverno=1");\r
1303             questInfo.CountRemodelSlot();\r
1304             PAssert.That(() =>\r
1305                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1306                     .SequenceEqual(new[]\r
1307                     {\r
1308                         new {Id = 605, Now = 1}, new {Id = 606, Now = 1}, new {Id = 607, Now = 1},\r
1309                         new {Id = 608, Now = 1}, new {Id = 609, Now = 3}, new {Id = 619, Now = 1}\r
1310                     }));\r
1311         }\r
1312 \r
1313         /// <summary>\r
1314         /// 613: 資源の再利用\r
1315         /// 638: 対空機銃量産\r
1316         /// 643: 主力「陸攻」の調達\r
1317         /// 645: 「洋上補給」物資の調達\r
1318         /// 663: 新型艤装の継続研究\r
1319         /// 673: 装備開発力の整備\r
1320         /// 674: 工廠環境の整備\r
1321         /// 675: 運用装備の統合整備\r
1322         /// 676: 装備開発力の集中整備\r
1323         /// 677: 継戦支援能力の整備\r
1324         /// 678: 主力艦上戦闘機の更新\r
1325         /// 680: 対空兵装の整備拡充\r
1326         /// 688: 航空戦力の強化\r
1327         /// </summary>\r
1328         [TestMethod]\r
1329         public void DestroyItem_613_638_643_645_663_673_674_675_676_677_678_680_688()\r
1330         {\r
1331             var itemInfo = new ItemInfo(new ItemMaster(), new ItemInventory());\r
1332             var questInfo = new QuestInfo(itemInfo, null, () => new DateTime(2015, 1, 1));\r
1333 \r
1334             itemInfo.InjectItemSpec(new[]\r
1335             {\r
1336                 new ItemSpec {Id = 1, Name = "12cm単装砲", Type = 1},\r
1337                 new ItemSpec {Id = 37, Name = "7.7mm機銃", Type = 21},\r
1338                 new ItemSpec {Id = 19, Name = "九六式艦戦", Type = 6},\r
1339                 new ItemSpec {Id = 4, Name = "14cm単装砲", Type = 2},\r
1340                 new ItemSpec {Id = 11, Name = "15.2cm単装砲", Type = 4},\r
1341                 new ItemSpec {Id = 75, Name = "ドラム缶(輸送用)", Type = 30},\r
1342                 new ItemSpec {Id = 7, Name = "35.6cm連装砲", Type = 3},\r
1343                 new ItemSpec {Id = 25, Name = "零式水上偵察機", Type = 10},\r
1344                 new ItemSpec {Id = 13, Name = "61cm三連装魚雷", Type = 5},\r
1345                 new ItemSpec {Id = 20, Name = "零式艦戦21型", Type = 6},\r
1346                 new ItemSpec {Id = 28, Name = "22号水上電探", Type = 12},\r
1347                 new ItemSpec {Id = 31, Name = "32号水上電探", Type = 13},\r
1348                 new ItemSpec {Id = 35, Name = "三式弾", Type = 18},\r
1349                 new ItemSpec {Id = 23, Name = "九九式艦爆", Type = 7},\r
1350                 new ItemSpec {Id = 16, Name = "九七式艦攻", Type = 8}\r
1351             });\r
1352             var items = new[] {1, 37, 19, 4, 11, 75, 7, 25, 13, 20, 28, 31, 35, 23, 16};\r
1353             itemInfo.InjectItems(items);\r
1354             var questList = new[] {613, 638, 643, 645, 663, 673, 674, 675, 676, 677, 678, 680, 688};\r
1355             questInfo.AcceptMax = questList.Length;\r
1356             questInfo.InspectQuestList(CreateQuestList(questList));\r
1357             questInfo.InspectDestroyItem(\r
1358                 $"api%5Fslotitem%5Fids={string.Join("%2C", Enumerable.Range(1, items.Length))}&api%5Fverno=1", null);\r
1359             var scalar = new[]\r
1360             {\r
1361                 new {Id = 613, Now = 1}, new {Id = 638, Now = 1}, new {Id = 643, Now = 1}, new {Id = 645, Now = 1},\r
1362                 new {Id = 663, Now = 1}, new {Id = 673, Now = 1}, new {Id = 674, Now = 1}\r
1363             };\r
1364             foreach (var e in scalar)\r
1365             {\r
1366                 var c = Array.Find(questInfo.Quests, q => q.Id == e.Id).Count;\r
1367                 PAssert.That(() => c.Id == e.Id && c.Now == e.Now, $"{c.Id}");\r
1368             }\r
1369             var array = new[]\r
1370             {\r
1371                 new {Id = 675, NowArray = new[] {2, 1}}, new {Id = 676, NowArray = new[] {1, 1, 1}},\r
1372                 new {Id = 677, NowArray = new[] {1, 1, 1}}, new {Id = 678, NowArray = new[] {1, 1}},\r
1373                 new {Id = 680, NowArray = new[] {1, 2}}, new {Id = 688, NowArray = new[] {2, 1, 1, 1}}\r
1374             };\r
1375             foreach (var e in array)\r
1376             {\r
1377                 var c = Array.Find(questInfo.Quests, q => q.Id == e.Id).Count;\r
1378                 PAssert.That(() => c.Id == e.Id && c.NowArray.SequenceEqual(e.NowArray), $"{c.Id}");\r
1379             }\r
1380         }\r
1381 \r
1382         /// <summary>\r
1383         /// 702: 艦の「近代化改修」を実施せよ!\r
1384         /// 703: 「近代化改修」を進め、戦備を整えよ!\r
1385         /// </summary>\r
1386         [TestMethod]\r
1387         public void PowerUp_702_703()\r
1388         {\r
1389             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
1390             questInfo.InspectQuestList(CreateQuestList(new[] {702, 703}));\r
1391             questInfo.InspectPowerUp(Js(new {api_powerup_flag = 1}));\r
1392             PAssert.That(() =>\r
1393                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
1394                     .SequenceEqual(new[] {new {Id = 702, Now = 1}, new {Id = 703, Now = 1}}));\r
1395         }\r
1396 \r
1397         [TestMethod]\r
1398         public void NotImplemented()\r
1399         {\r
1400             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
1401             questInfo.InspectQuestList(CreateQuestList(new[] {679}));\r
1402             PAssert.That(() => questInfo.Quests[0].Count.Spec.Material.Length == 0);\r
1403         }\r
1404 \r
1405         /// <summary>\r
1406         /// 文字列表記にする\r
1407         /// </summary>\r
1408         [TestMethod]\r
1409         public void ToStringTest()\r
1410         {\r
1411             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
1412             var status = new Status\r
1413             {\r
1414                 QuestCountList = new[]\r
1415                 {\r
1416                     new QuestCount {Id = 211, Now = 2},\r
1417                     new QuestCount {Id = 214, NowArray = new[] {20, 7, 10, 8}},\r
1418                     new QuestCount {Id = 854, NowArray = new[] {2, 1, 1, 1}},\r
1419                     new QuestCount {Id = 426, NowArray = new[] {1, 1, 1, 1}},\r
1420                     new QuestCount {Id = 428, NowArray = new[] {1, 1, 1}},\r
1421                     new QuestCount {Id = 873, NowArray = new[] {1, 1, 1}},\r
1422                     new QuestCount {Id = 888, NowArray = new[] {1, 1, 1}},\r
1423                     new QuestCount {Id = 688, NowArray = new[] {2, 1, 2, 1}},\r
1424                     new QuestCount {Id = 893, NowArray = new[] {1, 1, 1, 1}},\r
1425                     new QuestCount {Id = 894, NowArray = new[] {1, 1, 1, 1, 1}}\r
1426                 }\r
1427             };\r
1428             questInfo.LoadState(status);\r
1429             PAssert.That(() => status.QuestCountList[0].ToString() == "2/3");\r
1430             PAssert.That(() => status.QuestCountList[1].ToString() == "20/36 7/6 10/24 8/12");\r
1431             var z = status.QuestCountList[2];\r
1432             PAssert.That(() => z.ToString() == "4/4");\r
1433             PAssert.That(() => z.ToToolTip() == "2-4 6-1 6-3 6-4");\r
1434             z.NowArray = new[] {0, 0, 0, 0};\r
1435             PAssert.That(() => z.ToToolTip() == "");\r
1436             var q426 = status.QuestCountList[3];\r
1437             PAssert.That(() => q426.ToString() == "4/4");\r
1438             PAssert.That(() => q426.ToToolTip() == "警備任務 対潜警戒任務 海上護衛任務 強硬偵察任務");\r
1439             var q428 = status.QuestCountList[4];\r
1440             PAssert.That(() => q428.ToToolTip() == "対潜警戒任務1 海峡警備行動1 長時間対潜警戒1");\r
1441             q428.NowArray = new[] {0, 1, 0};\r
1442             PAssert.That(() => q428.ToToolTip() == "海峡警備行動1");\r
1443             var q873 = status.QuestCountList[5];\r
1444             PAssert.That(() => q873.ToString() == "3/3");\r
1445             PAssert.That(() => q873.ToToolTip() == "3-1 3-2 3-3");\r
1446             var q888 = status.QuestCountList[6];\r
1447             PAssert.That(() => q888.ToString() == "3/3");\r
1448             PAssert.That(() => q888.ToToolTip() == "5-1 5-3 5-4");\r
1449             var q688 = status.QuestCountList[7];\r
1450             PAssert.That(() => q688.ToToolTip() == "艦戦2 艦爆1 艦攻2 水偵1");\r
1451             var q893 = status.QuestCountList[8];\r
1452             PAssert.That(() => q893.ToToolTip() == "1-5:1 7-1:1 7-2G:1 7-2M:1");\r
1453             var q894 = status.QuestCountList[9];\r
1454             PAssert.That(() => q894.ToString() == "5/5");\r
1455             PAssert.That(() => q894.ToToolTip() == "1-3 1-4 2-1 2-2 2-3");\r
1456         }\r
1457 \r
1458         /// <summary>\r
1459         /// 状態をロードするときに獲得資材に特殊資材のリストを追加しない\r
1460         /// </summary>\r
1461         [TestMethod]\r
1462         public void LoadStateNotAppendMaterialList()\r
1463         {\r
1464             var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
1465             var status = new Status\r
1466             {\r
1467                 QuestList = new[]\r
1468                 {\r
1469                     new QuestStatus\r
1470                     {\r
1471                         Id = 854,\r
1472                         Category = 8,\r
1473                         Name = "",\r
1474                         Detail = "",\r
1475                         Material = new[] {0, 2000, 0, 0, 0, 0, 0, 4}\r
1476                     }\r
1477                 },\r
1478                 QuestCountList = new[]\r
1479                 {\r
1480                     new QuestCount {Id = 854, NowArray = new[] {1, 0, 1, 0}}\r
1481                 }\r
1482             };\r
1483             questInfo.LoadState(status);\r
1484             PAssert.That(() => questInfo.Quests[0].Material.Length == 8);\r
1485         }\r
1486     }\r
1487 }