1 // Copyright (C) 2017 Kazuhiro Fujieda <fujieda@users.osdn.me>
\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
7 // http://www.apache.org/licenses/LICENSE-2.0
\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
16 using System.Collections.Generic;
\r
18 using ExpressionToCodeLib;
\r
19 using KancolleSniffer.Model;
\r
20 using KancolleSniffer.Util;
\r
21 using Microsoft.VisualStudio.TestTools.UnitTesting;
\r
23 namespace KancolleSniffer.Test
\r
26 public class QuestInfoTest
\r
29 public void AdjustCount()
\r
31 var count = new QuestCount
\r
33 Spec = new QuestSpec {Max = 7},
\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
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
56 public void AdjustCountWithShift()
\r
58 var count = new QuestCount
\r
60 Spec = new QuestSpec {Max = 7, Shift = 1},
\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
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
83 public void AdjustCount80Percent()
\r
85 var count = new QuestCount
\r
87 Spec = new QuestSpec()
\r
89 for (var shift = 0; shift <= 1; shift++)
\r
91 for (var max = 2; max <= 6; max++)
\r
93 count.Spec.Max = max;
\r
94 count.Spec.Shift = shift;
\r
96 count.AdjustCount(80);
\r
97 PAssert.That(() => count.Now == count.Spec.Max - 1);
\r
103 public void AdjustCountNowArray()
\r
105 var count = new QuestCount
\r
107 Spec = new QuestSpec {MaxArray = new[] {36, 6, 24, 12}},
\r
108 NowArray = new[] {1, 2, 3, 4}
\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
120 public void ResetQuestCount()
\r
122 var queue = new Queue<DateTime>(new[]
\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
127 var questInfo = new QuestInfo(null, null, () => queue.Dequeue());
\r
128 var status = new Status
\r
130 QuestCountList = new[]
\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
135 QuestLastReset = new DateTime(2017, 10, 31, 5, 0, 0)
\r
137 questInfo.LoadState(status);
\r
138 questInfo.InspectQuestList(CreateQuestList(new[] {201}));
\r
139 questInfo.SaveState(status);
\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
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
154 public void ResetQuestList()
\r
156 var queue = new Queue<DateTime>(new[]
\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
161 var questInfo = new QuestInfo(null, null, () => queue.Dequeue());
\r
162 var status = new Status
\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
169 QuestLastReset = new DateTime(2017, 10, 31, 5, 0, 0)
\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
183 private JsonObject Js(object obj) => JsonObject.CreateJsonObject(obj);
\r
185 private object CreateQuestList(int[] ids) => Js(new
\r
188 ids.Select(id => new
\r
191 api_category = id / 100,
\r
195 api_get_material = new int[0],
\r
196 api_progress_flag = 0
\r
202 /// 210: 敵艦隊を10回邀撃せよ!
\r
204 /// 216: 敵艦隊主力を撃滅せよ!
\r
207 public void BattleResult_201_216_210_214()
\r
209 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
210 questInfo.InspectQuestList(CreateQuestList(new[] {201, 216, 210, 214}));
\r
212 questInfo.InspectMapStart(Js(new
\r
214 api_maparea_id = 1,
\r
215 api_mapinfo_no = 1,
\r
218 var quests = questInfo.Quests;
\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
223 PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]
\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
228 PAssert.That(() => quests[2].Id == 214 &&
\r
229 quests[2].Count.NowArray.SequenceEqual(new[] {1, 1, 0, 0}));
\r
231 questInfo.InspectMapNext(Js(new
\r
233 api_maparea_id = 1,
\r
234 api_mapinfo_no = 1,
\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
241 new {Id = 201, Now = 2}, new {Id = 210, Now = 2},
\r
242 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}
\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
249 new {Id = 201, Now = 2}, new {Id = 210, Now = 3},
\r
250 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}
\r
252 PAssert.That(() => quests[2].Id == 214 && quests[2].Count.NowArray.SequenceEqual(new[] {1, 1, 2, 1}));
\r
256 /// 211: 敵空母を3隻撃沈せよ!
\r
259 /// 218: 敵補給艦を3隻撃沈せよ!
\r
262 public void BattleResult_211_212_213_218_220_221()
\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
268 battleInfo.InjectResultStatus(new ShipStatus[0], new ShipStatus[0], new[]
\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
279 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
280 .SequenceEqual(new[]
\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
289 /// 230: 敵潜水艦を制圧せよ!
\r
292 public void BattleResult_228_230()
\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
298 battleInfo.InjectResultStatus(new ShipStatus[0], new ShipStatus[0], new[]
\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
306 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
307 .SequenceEqual(new[]
\r
309 new {Id = 228, Now = 3}, new {Id = 230, Now = 3}
\r
314 /// 226: 南西諸島海域の制海権を握れ!
\r
317 public void BattleResult_226()
\r
319 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
320 questInfo.InspectQuestList(CreateQuestList(new[] {226}));
\r
322 questInfo.InspectMapStart(Js(new
\r
324 api_maparea_id = 2,
\r
325 api_mapinfo_no = 1,
\r
328 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\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
334 api_maparea_id = 2,
\r
335 api_mapinfo_no = 1,
\r
338 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\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
344 api_maparea_id = 2,
\r
345 api_mapinfo_no = 1,
\r
348 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
350 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
351 .SequenceEqual(new[] {new {Id = 226, Now = 1}}));
\r
355 /// // 243: 南方海域珊瑚諸島沖の制空権を握れ!
\r
358 public void BattleResult_243()
\r
360 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
361 questInfo.InspectQuestList(CreateQuestList(new[] {243}));
\r
363 questInfo.InspectMapStart(Js(new
\r
365 api_maparea_id = 5,
\r
366 api_mapinfo_no = 2,
\r
369 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
371 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
372 .SequenceEqual(new[] {new {Id = 243, Now = 0}}));
\r
374 questInfo.InspectMapNext(Js(new
\r
376 api_maparea_id = 5,
\r
377 api_mapinfo_no = 2,
\r
380 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
382 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
383 .SequenceEqual(new[] {new {Id = 243, Now = 1}}));
\r
386 private ShipStatus ShipStatus(int shipType, int specId = 0) =>
\r
387 new ShipStatus {NowHp = 1, Spec = new ShipSpec {Id = specId, ShipType = shipType}};
\r
391 /// 249: 「第五戦隊」出撃せよ!
\r
394 public void BattleResult_249()
\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
400 battleInfo.InjectResultStatus(new[]
\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
407 api_maparea_id = 2,
\r
408 api_mapinfo_no = 5,
\r
411 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
412 questInfo.InspectMapNext(Js(new
\r
414 api_maparea_id = 2,
\r
415 api_mapinfo_no = 5,
\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
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
430 /// 257: 「水雷戦隊」南西へ!
\r
433 public void BattleResult_257()
\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
439 battleInfo.InjectResultStatus(new[]
\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
446 api_maparea_id = 1,
\r
447 api_mapinfo_no = 4,
\r
450 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
451 questInfo.InspectMapNext(Js(new
\r
453 api_maparea_id = 1,
\r
454 api_mapinfo_no = 4,
\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
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
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
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
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
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
489 /// 257: 「水上打撃部隊」南方へ!
\r
492 public void BattleResult_259()
\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
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
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
508 api_maparea_id = 5,
\r
509 api_mapinfo_no = 1,
\r
512 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
513 questInfo.InspectMapNext(Js(new
\r
515 api_maparea_id = 5,
\r
516 api_mapinfo_no = 1,
\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
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
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
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
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
546 /// 264: 「空母機動部隊」西へ!
\r
549 public void BattleResult_264()
\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
555 battleInfo.InjectResultStatus(new[]
\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
562 api_maparea_id = 4,
\r
563 api_mapinfo_no = 2,
\r
566 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
567 questInfo.InspectMapNext(Js(new
\r
569 api_maparea_id = 4,
\r
570 api_mapinfo_no = 2,
\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
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
584 /// 266: 「水上反撃部隊」突入せよ!
\r
587 public void BattleResult_266()
\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
593 battleInfo.InjectResultStatus(new[]
\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
600 api_maparea_id = 2,
\r
601 api_mapinfo_no = 5,
\r
604 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
605 questInfo.InspectMapNext(Js(new
\r
607 api_maparea_id = 2,
\r
608 api_mapinfo_no = 5,
\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
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
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
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
635 /// 854: 戦果拡張任務!「Z作戦」前段作戦
\r
638 public void BattleResult_822_854()
\r
640 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
641 questInfo.InspectQuestList(CreateQuestList(new[] {822, 854}));
\r
643 questInfo.InspectMapNext(Js(new
\r
645 api_maparea_id = 2,
\r
646 api_mapinfo_no = 4,
\r
649 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
650 questInfo.InspectMapNext(Js(new
\r
652 api_maparea_id = 6,
\r
653 api_mapinfo_no = 1,
\r
656 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
657 questInfo.InspectMapNext(Js(new
\r
659 api_maparea_id = 6,
\r
660 api_mapinfo_no = 3,
\r
663 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
664 questInfo.InspectMapNext(Js(new
\r
666 api_maparea_id = 6,
\r
667 api_mapinfo_no = 4,
\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
675 api_maparea_id = 2,
\r
676 api_mapinfo_no = 4,
\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
685 /// 861: 強行輸送艦隊、抜錨!
\r
688 public void MapNext_861()
\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
694 battleInfo.InjectResultStatus(new[]
\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
700 questInfo.InspectMapNext(Js(new
\r
702 api_maparea_id = 1,
\r
703 api_mapinfo_no = 6,
\r
706 questInfo.InspectMapNext(Js(new
\r
708 api_maparea_id = 1,
\r
709 api_mapinfo_no = 6,
\r
712 PAssert.That(() => questInfo.Quests[0].Count.Now == 1);
\r
714 battleInfo.Result.Friend.Main[1].NowHp = 0;
\r
715 questInfo.InspectMapNext(Js(new
\r
717 api_maparea_id = 1,
\r
718 api_mapinfo_no = 6,
\r
721 PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "轟沈あり");
\r
722 battleInfo.Result.Friend.Main[1].NowHp = 1;
\r
724 battleInfo.Result.Friend.Main[2].Spec.ShipType = 10;
\r
725 questInfo.InspectMapNext(Js(new
\r
727 api_maparea_id = 1,
\r
728 api_mapinfo_no = 6,
\r
731 PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "補給・航戦が3隻");
\r
735 /// 862: 前線の航空偵察を実施せよ!
\r
738 public void BattleResult_862()
\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
744 battleInfo.InjectResultStatus(new[]
\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
751 api_maparea_id = 6,
\r
752 api_mapinfo_no = 3,
\r
755 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
756 questInfo.InspectMapNext(Js(new
\r
758 api_maparea_id = 6,
\r
759 api_mapinfo_no = 3,
\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
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
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
779 /// 873: 北方海域警備を実施せよ!
\r
782 public void BattleResult_873()
\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
788 battleInfo.InjectResultStatus(new[]
\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
795 api_maparea_id = 3,
\r
796 api_mapinfo_no = 1,
\r
799 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
800 questInfo.InspectMapNext(Js(new
\r
802 api_maparea_id = 3,
\r
803 api_mapinfo_no = 1,
\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
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
816 questInfo.InspectMapNext(Js(new
\r
818 api_maparea_id = 3,
\r
819 api_mapinfo_no = 2,
\r
822 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
823 questInfo.InspectMapNext(Js(new
\r
825 api_maparea_id = 3,
\r
826 api_mapinfo_no = 3,
\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
834 /// 875: 精鋭「三一駆」、鉄底海域に突入せよ!
\r
837 public void BattleResult_875()
\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
843 battleInfo.InjectResultStatus(new[]
\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
850 api_maparea_id = 5,
\r
851 api_mapinfo_no = 4,
\r
854 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
855 questInfo.InspectMapNext(Js(new
\r
857 api_maparea_id = 5,
\r
858 api_mapinfo_no = 4,
\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
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
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
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
885 /// 888: 新編成「三川艦隊」、鉄底海峡に突入せよ!
\r
888 public void BattleResult_888()
\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
895 battleInfo.InjectResultStatus(new[]
\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
902 api_maparea_id = 5,
\r
903 api_mapinfo_no = 1,
\r
906 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
907 questInfo.InspectMapNext(Js(new
\r
909 api_maparea_id = 5,
\r
910 api_mapinfo_no = 1,
\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
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
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
928 questInfo.InspectMapNext(Js(new
\r
930 api_maparea_id = 5,
\r
931 api_mapinfo_no = 3,
\r
934 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
935 PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0}));
\r
937 questInfo.InspectMapNext(Js(new
\r
939 api_maparea_id = 5,
\r
940 api_mapinfo_no = 4,
\r
943 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
944 PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1}));
\r
948 /// 893: 泊地周辺海域の安全確保を徹底せよ!
\r
951 public void BattleResult_893()
\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
957 questInfo.InspectMapNext(Js(new
\r
959 api_maparea_id = 1,
\r
960 api_mapinfo_no = 5,
\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
968 questInfo.InspectMapNext(Js(new
\r
970 api_maparea_id = 7,
\r
971 api_mapinfo_no = 1,
\r
974 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
975 PAssert.That(() => count.NowArray[1] == 1, "7-1");
\r
977 questInfo.InspectMapNext(Js(new
\r
979 api_maparea_id = 7,
\r
980 api_mapinfo_no = 2,
\r
984 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
985 PAssert.That(() => count.NowArray[2] == 1, "7-2G");
\r
987 questInfo.InspectMapNext(Js(new
\r
989 api_maparea_id = 7,
\r
990 api_mapinfo_no = 2,
\r
994 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
995 PAssert.That(() => count.NowArray[3] == 1, "7-2M");
\r
999 /// 894: 空母戦力の投入による兵站線戦闘哨戒
\r
1002 public void BattleResult_894()
\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
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
1014 questInfo.InspectMapNext(Js(new
\r
1016 api_maparea_id = 1,
\r
1017 api_mapinfo_no = 3,
\r
1020 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1021 PAssert.That(() => count.NowArray[0] == 0, "空母なしはカウントしない");
\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
1027 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1028 PAssert.That(() => count.NowArray[0] == 1, "1-3");
\r
1030 questInfo.InspectMapNext(Js(new
\r
1032 api_maparea_id = 1,
\r
1033 api_mapinfo_no = 4,
\r
1036 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1037 PAssert.That(() => count.NowArray[1] == 1, "1-4");
\r
1039 questInfo.InspectMapNext(Js(new
\r
1041 api_maparea_id = 2,
\r
1042 api_mapinfo_no = 1,
\r
1045 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1046 PAssert.That(() => count.NowArray[2] == 1, "2-1");
\r
1048 questInfo.InspectMapNext(Js(new
\r
1050 api_maparea_id = 2,
\r
1051 api_mapinfo_no = 2,
\r
1054 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1055 PAssert.That(() => count.NowArray[3] == 1, "2-2");
\r
1057 questInfo.InspectMapNext(Js(new
\r
1059 api_maparea_id = 2,
\r
1060 api_mapinfo_no = 3,
\r
1063 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1064 PAssert.That(() => count.NowArray[4] == 1, "2-3");
\r
1069 /// 303: 「演習」で練度向上!
\r
1070 /// 304: 「演習」で他提督を圧倒せよ!
\r
1072 /// 318: 給糧艦「伊良湖」の支援
\r
1075 public void PracticeResult_303_304_302_311_315()
\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
1081 battleInfo.InjectResultStatus(new[]
\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
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
1097 public void PracticeResult_318()
\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
1104 battleInfo.InjectResultStatus(new[]
\r
1106 ShipStatus(2, 543), ShipStatus(3, 488)
\r
1107 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\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
1121 q318.Count.Now = 2;
\r
1122 questInfo.InspectQuestList(CreateQuestList(new[] {318}));
\r
1123 PAssert.That(() => q318.Count.Now == 2, "進捗調節しない");
\r
1127 /// 402: 「遠征」を3回成功させよう!
\r
1128 /// 403: 「遠征」を10回成功させよう!
\r
1129 /// 404: 大規模遠征作戦、発令!
\r
1130 /// 410: 南方への輸送作戦を成功させよ!
\r
1131 /// 411: 南方への鼠輸送を継続実施せよ!
\r
1134 public void MissionResult_402_403_404_410_411()
\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
1139 questInfo.InspectDeck(Js(
\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
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
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
1159 /// 426: 海上通商航路の警戒を厳とせよ!
\r
1162 public void MissionResult_426()
\r
1164 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
1165 questInfo.InspectQuestList(CreateQuestList(new[] {426}));
\r
1167 questInfo.InspectDeck(Js(
\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
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
1182 new {api_id = 2, api_mission = new[] {2, 10}}
\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
1190 /// 428: 近海に侵入する敵潜を制圧せよ!
\r
1193 public void MissionResult_428()
\r
1195 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
1196 questInfo.InspectQuestList(CreateQuestList(new[] {428}));
\r
1198 questInfo.InspectDeck(Js(
\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
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
1217 public void PowerUp_503_504()
\r
1219 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
1220 questInfo.InspectQuestList(CreateQuestList(new[] {503, 504}));
\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
1230 /// 605: 新装備「開発」指令
\r
1231 /// 606: 新造艦「建造」指令
\r
1232 /// 607: 装備「開発」集中強化!
\r
1233 /// 608: 艦娘「建造」艦隊強化!
\r
1238 public void Kousyou_605_606_607_608_609_619()
\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
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
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
1259 /// 643: 主力「陸攻」の調達
\r
1260 /// 645: 「洋上補給」物資の調達
\r
1261 /// 663: 新型艤装の継続研究
\r
1264 /// 675: 運用装備の統合整備
\r
1265 /// 676: 装備開発力の集中整備
\r
1266 /// 677: 継戦支援能力の整備
\r
1267 /// 678: 主力艦上戦闘機の更新
\r
1268 /// 680: 対空兵装の整備拡充
\r
1272 public void DestroyItem_613_638_643_645_663_673_674_675_676_677_678_680_688()
\r
1274 var itemInfo = new ItemInfo(new ItemMaster(), new ItemInventory());
\r
1275 var questInfo = new QuestInfo(itemInfo, null, () => new DateTime(2015, 1, 1));
\r
1277 itemInfo.InjectItemSpec(new[]
\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
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
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
1307 foreach (var e in scalar)
\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
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
1318 foreach (var e in array)
\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
1326 /// 702: 艦の「近代化改修」を実施せよ!
\r
1327 /// 703: 「近代化改修」を進め、戦備を整えよ!
\r
1330 public void PowerUp_702_703()
\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
1341 public void NotImplemented()
\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
1352 public void ToStringTest()
\r
1354 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
1355 var status = new Status
\r
1357 QuestCountList = new[]
\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
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
1402 /// 状態をロードするときに獲得資材に特殊資材のリストを追加しない
\r
1405 public void LoadStateNotAppendMaterialList()
\r
1407 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
1408 var status = new Status
\r
1418 Material = new[] {0, 2000, 0, 0, 0, 0, 0, 4}
\r
1421 QuestCountList = new[]
\r
1423 new QuestCount {Id = 854, NowArray = new[] {1, 0, 1, 0}}
\r
1426 questInfo.LoadState(status);
\r
1427 PAssert.That(() => questInfo.Quests[0].Material.Length == 8);
\r