OSDN Git Service

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