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 Microsoft.VisualStudio.TestTools.UnitTesting;
\r
21 namespace KancolleSniffer.Test
\r
24 public class QuestInfoTest
\r
27 public void AdjustCount()
\r
29 var count = new QuestCount
\r
31 Spec = new QuestSpec {Max = 7},
\r
34 count.AdjustCount(0);
\r
35 PAssert.That(() => count.Now == 3);
\r
36 count.AdjustCount(50);
\r
37 PAssert.That(() => count.Now == 4);
\r
38 count.AdjustCount(80);
\r
39 PAssert.That(() => count.Now == 6);
\r
40 count.AdjustCount(100);
\r
41 PAssert.That(() => count.Now == 7);
\r
43 count.AdjustCount(100);
\r
44 PAssert.That(() => count.Now == 14);
\r
45 count.AdjustCount(80);
\r
46 PAssert.That(() => count.Now == 6);
\r
47 count.AdjustCount(50);
\r
48 PAssert.That(() => count.Now == 5);
\r
49 count.AdjustCount(0);
\r
50 PAssert.That(() => count.Now == 3);
\r
54 public void AdjustCountWithShift()
\r
56 var count = new QuestCount
\r
58 Spec = new QuestSpec {Max = 7, Shift = 1},
\r
61 count.AdjustCount(0);
\r
62 PAssert.That(() => count.Now == 2);
\r
63 count.AdjustCount(50);
\r
64 PAssert.That(() => count.Now == 3);
\r
65 count.AdjustCount(80);
\r
66 PAssert.That(() => count.Now == 6);
\r
67 count.AdjustCount(100);
\r
68 PAssert.That(() => count.Now == 7);
\r
70 count.AdjustCount(100);
\r
71 PAssert.That(() => count.Now == 14);
\r
72 count.AdjustCount(80);
\r
73 PAssert.That(() => count.Now == 6);
\r
74 count.AdjustCount(50);
\r
75 PAssert.That(() => count.Now == 5);
\r
76 count.AdjustCount(0);
\r
77 PAssert.That(() => count.Now == 2);
\r
81 public void AdjestCountNowArray()
\r
83 var count = new QuestCount
\r
85 Spec = new QuestSpec {MaxArray = new[] {36, 6, 24, 12}},
\r
86 NowArray = new[] {1, 2, 3, 4}
\r
88 count.AdjustCount(50);
\r
89 PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 2, 3, 4}));
\r
90 count.AdjustCount(100);
\r
91 PAssert.That(() => count.NowArray.SequenceEqual(new[] {36, 6, 24, 12}));
\r
92 count.NowArray = new[] {38, 12, 19, 12};
\r
93 count.AdjustCount(100);
\r
94 PAssert.That(() => count.NowArray.SequenceEqual(new[] {38, 12, 24, 12}));
\r
98 public void ResetQuest()
\r
100 var queue = new Queue<DateTime>(new[]
\r
102 new DateTime(2017, 11, 1, 5, 0, 0), new DateTime(2017, 11, 6, 5, 0, 0),
\r
103 new DateTime(2017, 12, 1, 5, 0, 0)
\r
105 var questInfo = new QuestInfo(null, null, () => queue.Dequeue());
\r
106 var status = new Status
\r
108 QuestCountList = new[]
\r
110 new QuestCount {Id = 201, Now = 1}, new QuestCount {Id = 213, Now = 1},
\r
111 new QuestCount {Id = 265, Now = 1}, new QuestCount {Id = 822, Now = 1}
\r
113 QuestLastReset = new DateTime(2017, 10, 31, 5, 0, 0)
\r
115 questInfo.LoadState(status);
\r
116 questInfo.InspectQuestList(Js(new
\r
119 {new {api_no = 201, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}}
\r
121 questInfo.SaveState(status);
\r
123 status.QuestCountList.Select(qc => new {qc.Id, qc.Now}).SequenceEqual(new[]
\r
124 {new {Id = 213, Now = 1}, new {Id = 822, Now = 1}})); // デイリーとマンスリーが消える
\r
125 questInfo.InspectQuestList(Js(new
\r
128 {new {api_no = 201, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}}
\r
130 questInfo.SaveState(status);
\r
132 status.QuestCountList.Select(qc => new {qc.Id, qc.Now}).SequenceEqual(new[]
\r
133 {new {Id = 822, Now = 1}})); // ウィークリーが消える
\r
134 questInfo.InspectQuestList(Js(new
\r
137 {new {api_no = 201, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}}
\r
139 questInfo.SaveState(status);
\r
140 PAssert.That(() => status.QuestCountList.Length == 0); // クォータリーが消える
\r
143 private JsonObject Js(object obj) => JsonObject.CreateJsonObject(obj);
\r
147 /// 210: 敵艦隊を10回邀撃せよ!
\r
149 /// 216: 敵艦隊主力を撃滅せよ!
\r
152 public void BattleResult_201_216_210_214()
\r
154 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
155 questInfo.InspectQuestList(Js(new
\r
159 new {api_no = 201, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
160 new {api_no = 210, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
161 new {api_no = 214, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
162 new {api_no = 216, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}
\r
166 questInfo.InspectMapStart(Js(new
\r
168 api_maparea_id = 1,
\r
169 api_mapinfo_no = 1,
\r
172 var quests = questInfo.Quests;
\r
174 PAssert.That(() => quests[2].Id == 214 && quests[2].Count.NowArray[0] == 1);
\r
175 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
177 PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]
\r
179 new {Id = 201, Now = 1}, new {Id = 210, Now = 1},
\r
180 new {Id = 214, Now = 0}, new {Id = 216, Now = 1}
\r
182 PAssert.That(() => quests[2].Id == 214 &&
\r
183 quests[2].Count.NowArray.SequenceEqual(new[] {1, 1, 0, 0}));
\r
185 questInfo.InspectMapNext(Js(new
\r
187 api_maparea_id = 1,
\r
188 api_mapinfo_no = 1,
\r
192 questInfo.InspectBattleResult(Js(new {api_win_rank = "B"}));
\r
193 PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]
\r
195 new {Id = 201, Now = 2}, new {Id = 210, Now = 2},
\r
196 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}
\r
199 PAssert.That(() => quests[2].Id == 214 && quests[2].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));
\r
200 questInfo.InspectBattleResult(Js(new {api_win_rank = "C"}));
\r
201 PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]
\r
203 new {Id = 201, Now = 2}, new {Id = 210, Now = 3},
\r
204 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}
\r
206 PAssert.That(() => quests[2].Id == 214 && quests[2].Count.NowArray.SequenceEqual(new[] {1, 1, 2, 1}));
\r
210 /// 211: 敵空母を3隻撃沈せよ!
\r
213 /// 218: 敵補給艦を3隻撃沈せよ!
\r
216 public void BattleResult_211_212_218_213_220_221()
\r
218 var battleInfo = new BattleInfo(null, null);
\r
219 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1)) {AcceptMax = 6};
\r
220 questInfo.InspectQuestList(Js(new
\r
224 new {api_no = 211, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
225 new {api_no = 212, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
226 new {api_no = 213, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
227 new {api_no = 218, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
228 new {api_no = 220, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
229 new {api_no = 221, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}
\r
233 battleInfo.InjectEnemyResultStatus(new[]
\r
235 new ShipStatus {NowHp = 0, MaxHp = 130, Spec = new ShipSpec {Id = 1558, ShipType = 15}},
\r
236 new ShipStatus {NowHp = 0, MaxHp = 90, Spec = new ShipSpec {Id = 1543, ShipType = 8}},
\r
237 new ShipStatus {NowHp = 0, MaxHp = 90, Spec = new ShipSpec {Id = 1543, ShipType = 8}},
\r
238 new ShipStatus {NowHp = 0, MaxHp = 96, Spec = new ShipSpec {Id = 1528, ShipType = 11}},
\r
239 new ShipStatus {NowHp = 0, MaxHp = 70, Spec = new ShipSpec {Id = 1523, ShipType = 7}},
\r
240 new ShipStatus {NowHp = 1, MaxHp = 70, Spec = new ShipSpec {Id = 1523, ShipType = 7}}
\r
241 }, new ShipStatus[0]);
\r
242 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
244 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
245 .SequenceEqual(new[]
\r
247 new {Id = 211, Now = 2}, new {Id = 212, Now = 1}, new {Id = 213, Now = 1},
\r
248 new {Id = 218, Now = 1}, new {Id = 220, Now = 2}, new {Id = 221, Now = 1}
\r
254 /// 230: 敵潜水艦を制圧せよ!
\r
257 public void BattleResult_228_230()
\r
259 var battleInfo = new BattleInfo(null, null);
\r
260 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
261 questInfo.InspectQuestList(Js(new
\r
265 new {api_no = 228, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
266 new {api_no = 230, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}
\r
270 battleInfo.InjectEnemyResultStatus(new[]
\r
272 new ShipStatus {NowHp = 0, MaxHp = 27, Spec = new ShipSpec {Id = 1532, ShipType = 13}},
\r
273 new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}},
\r
274 new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}}
\r
275 }, new ShipStatus[0]);
\r
276 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
278 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
279 .SequenceEqual(new[]
\r
281 new {Id = 228, Now = 3}, new {Id = 230, Now = 3}
\r
286 /// 226: 南西諸島海域の制海権を握れ!
\r
289 public void BattleResult_226()
\r
291 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
292 questInfo.InspectQuestList(Js(new
\r
296 new {api_no = 226, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}
\r
300 questInfo.InspectMapStart(Js(new
\r
302 api_maparea_id = 2,
\r
303 api_mapinfo_no = 1,
\r
306 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
308 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
309 .SequenceEqual(new[] {new {Id = 226, Now = 0}}));
\r
310 questInfo.InspectMapNext(Js(new
\r
312 api_maparea_id = 2,
\r
313 api_mapinfo_no = 1,
\r
316 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
318 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
319 .SequenceEqual(new[] {new {Id = 226, Now = 1}}));
\r
320 questInfo.InspectMapStart(Js(new
\r
322 api_maparea_id = 2,
\r
323 api_mapinfo_no = 1,
\r
326 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
328 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
329 .SequenceEqual(new[] {new {Id = 226, Now = 1}}));
\r
333 /// // 243: 南方海域珊瑚諸島沖の制空権を握れ!
\r
336 public void BattleResult_243()
\r
338 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
339 questInfo.InspectQuestList(Js(new
\r
343 new {api_no = 243, api_category = 2, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}
\r
347 questInfo.InspectMapStart(Js(new
\r
349 api_maparea_id = 5,
\r
350 api_mapinfo_no = 2,
\r
353 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
355 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
356 .SequenceEqual(new[] {new {Id = 243, Now = 0}}));
\r
358 questInfo.InspectMapNext(Js(new
\r
360 api_maparea_id = 5,
\r
361 api_mapinfo_no = 2,
\r
364 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
366 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
367 .SequenceEqual(new[] {new {Id = 243, Now = 1}}));
\r
372 /// 854: 戦果拡張任務!「Z作戦」前段作戦
\r
375 public void BattleResult_822_854()
\r
377 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
378 questInfo.InspectQuestList(Js(new
\r
382 new {api_no = 822, api_category = 8, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
383 new {api_no = 854, api_category = 8, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}
\r
387 questInfo.InspectMapNext(Js(new
\r
389 api_maparea_id = 2,
\r
390 api_mapinfo_no = 4,
\r
393 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
394 questInfo.InspectMapNext(Js(new
\r
396 api_maparea_id = 6,
\r
397 api_mapinfo_no = 1,
\r
400 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
401 questInfo.InspectMapNext(Js(new
\r
403 api_maparea_id = 6,
\r
404 api_mapinfo_no = 3,
\r
407 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
408 questInfo.InspectMapNext(Js(new
\r
410 api_maparea_id = 6,
\r
411 api_mapinfo_no = 4,
\r
414 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
415 PAssert.That(() => questInfo.Quests[1].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));
\r
416 PAssert.That(() => questInfo.Quests[0].Count.Now == 0);
\r
417 questInfo.InspectMapNext(Js(new
\r
419 api_maparea_id = 2,
\r
420 api_mapinfo_no = 4,
\r
423 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
424 PAssert.That(() => questInfo.Quests[1].Count.NowArray.SequenceEqual(new[] {2, 1, 1, 1}));
\r
425 PAssert.That(() => questInfo.Quests[0].Count.Now == 1);
\r
430 /// 303: 「演習」で練度向上!
\r
431 /// 304: 「演習」で他提督を圧倒せよ!
\r
435 public void PracticeResult_303_304_302_311()
\r
437 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
438 questInfo.InspectQuestList(Js(new
\r
442 new {api_no = 302, api_category = 3, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
443 new {api_no = 303, api_category = 3, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
444 new {api_no = 304, api_category = 3, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
445 new {api_no = 311, api_category = 3, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}
\r
449 questInfo.InspectPracticeResult(Js(new {api_win_rank = "C"}));
\r
450 questInfo.InspectPracticeResult(Js(new {api_win_rank = "A"}));
\r
452 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
453 .SequenceEqual(new[]
\r
455 new {Id = 302, Now = 1}, new {Id = 303, Now = 2}, new {Id = 304, Now = 1},
\r
456 new {Id = 311, Now = 1}
\r
461 /// 402: 「遠征」を3回成功させよう!
\r
462 /// 403: 「遠征」を10回成功させよう!
\r
463 /// 404: 大規模遠征作戦、発令!
\r
464 /// 410: 南方への輸送作戦を成功させよ!
\r
465 /// 411: 南方への鼠輸送を継続実施せよ!
\r
468 public void MissionResult_402_403_404_410_411()
\r
470 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
471 questInfo.InspectQuestList(Js(new
\r
475 new {api_no = 402, api_category = 4, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
476 new {api_no = 403, api_category = 4, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
477 new {api_no = 404, api_category = 4, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
478 new {api_no = 410, api_category = 4, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
479 new {api_no = 411, api_category = 4, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}
\r
483 questInfo.InspectDeck(Js(
\r
486 new {api_id = 2, api_mission = new[] {2, 6}},
\r
487 new {api_id = 3, api_mission = new[] {2, 37}},
\r
488 new {api_id = 4, api_mission = new[] {2, 2}}
\r
490 questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));
\r
491 questInfo.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 2}));
\r
492 questInfo.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 0}));
\r
494 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
495 .SequenceEqual(new[]
\r
497 new {Id = 402, Now = 2}, new {Id = 403, Now = 2}, new {Id = 404, Now = 2},
\r
498 new {Id = 410, Now = 1}, new {Id = 411, Now = 1}
\r
503 /// 426: 海上通商航路の警戒を厳とせよ!
\r
506 public void MissionResult_426()
\r
508 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
509 questInfo.InspectQuestList(Js(new
\r
513 new {api_no = 426, api_category = 4, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
517 questInfo.InspectDeck(Js(
\r
520 new {api_id = 2, api_mission = new[] {2, 3}},
\r
521 new {api_id = 3, api_mission = new[] {2, 4}},
\r
522 new {api_id = 4, api_mission = new[] {2, 5}},
\r
524 questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));
\r
525 questInfo.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));
\r
526 questInfo.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));
\r
528 questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}));
\r
529 questInfo.InspectDeck(Js(
\r
532 new {api_id = 2, api_mission = new[] {2, 10}},
\r
534 questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));
\r
536 questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));
\r
540 /// 428: 近海に侵入する敵潜を制圧せよ!
\r
543 public void MissionResult_428()
\r
545 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
546 questInfo.InspectQuestList(Js(new
\r
550 new {api_no = 428, api_category = 4, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
554 questInfo.InspectDeck(Js(
\r
557 new {api_id = 2, api_mission = new[] {2, 4}},
\r
558 new {api_id = 3, api_mission = new[] {2, 101}},
\r
559 new {api_id = 4, api_mission = new[] {2, 102}},
\r
561 questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));
\r
562 questInfo.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));
\r
563 questInfo.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));
\r
565 questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1}));
\r
573 public void Powerup_503_504()
\r
575 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
576 questInfo.InspectQuestList(Js(new
\r
580 new {api_no = 503, api_category = 5, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
581 new {api_no = 504, api_category = 5, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}
\r
585 questInfo.CountNyukyo();
\r
586 questInfo.CountCharge();
\r
588 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
589 .SequenceEqual(new[] {new {Id = 503, Now = 1}, new {Id = 504, Now = 1}}));
\r
595 /// 607: 装備「開発」集中強化!
\r
596 /// 608: 艦娘「建造」艦隊強化!
\r
601 public void Kousyou_605_606_607_608_609_619()
\r
603 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1)) {AcceptMax = 6};
\r
604 questInfo.InspectQuestList(Js(new
\r
608 new {api_no = 605, api_category = 6, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
609 new {api_no = 606, api_category = 6, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
610 new {api_no = 607, api_category = 6, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
611 new {api_no = 608, api_category = 6, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
612 new {api_no = 609, api_category = 6, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
613 new {api_no = 619, api_category = 6, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}
\r
617 questInfo.CountCreateItem();
\r
618 questInfo.CountCreateShip();
\r
619 questInfo.InspectDestroyShip("api%5Fship%5Fid=98159%2C98166%2C98168&api%5Fverno=1");
\r
620 questInfo.CountRemodelSlot();
\r
622 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
623 .SequenceEqual(new[]
\r
625 new {Id = 605, Now = 1}, new {Id = 606, Now = 1}, new {Id = 607, Now = 1},
\r
626 new {Id = 608, Now = 1}, new {Id = 609, Now = 3}, new {Id = 619, Now = 1}
\r
637 /// 676: 装備開発力の集中整備
\r
641 public void DestroyItem_613_638_663_673_674_675_676_677()
\r
643 var itemInfo = new ItemInfo();
\r
644 var questInfo = new QuestInfo(itemInfo, null, () => new DateTime(2015, 1, 1)) {AcceptMax = 8};
\r
646 itemInfo.InjectItemSpec(new[]
\r
648 new ItemSpec {Id = 1, Name = "12cm単装砲", Type = 1},
\r
649 new ItemSpec {Id = 37, Name = "7.7mm機銃", Type = 21},
\r
650 new ItemSpec {Id = 19, Name = "九六式艦戦", Type = 6},
\r
651 new ItemSpec {Id = 4, Name = "14cm単装砲", Type = 2},
\r
652 new ItemSpec {Id = 11, Name = "15.2cm単装砲", Type = 4},
\r
653 new ItemSpec {Id = 75, Name = "ドラム缶(輸送用)", Type = 30},
\r
654 new ItemSpec {Id = 7, Name = "35.6cm連装砲", Type = 3},
\r
655 new ItemSpec {Id = 25, Name = "零式水上偵察機", Type = 10},
\r
656 new ItemSpec {Id = 13, Name = "61cm三連装魚雷", Type = 5}
\r
658 itemInfo.InjectItems(new[] {1, 37, 19, 4, 11, 75, 7, 25, 13});
\r
659 questInfo.InspectQuestList(Js(new
\r
663 new {api_no = 613, api_category = 6, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
664 new {api_no = 638, api_category = 6, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
665 new {api_no = 663, api_category = 6, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
666 new {api_no = 673, api_category = 6, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
667 new {api_no = 674, api_category = 6, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
668 new {api_no = 675, api_category = 6, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
669 new {api_no = 676, api_category = 6, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
670 new {api_no = 677, api_category = 6, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}
\r
673 questInfo.InspectDestroyItem("api%5Fslotitem%5Fids=1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9&api%5Fverno=1", null);
\r
675 questInfo.Quests.Select(q => new {q.Id, q.Count.Now}).Take(5).SequenceEqual(new[]
\r
677 new {Id = 613, Now = 1}, new {Id = 638, Now = 1}, new {Id = 663, Now = 1},
\r
678 new {Id = 673, Now = 1}, new {Id = 674, Now = 1}
\r
680 var q675 = questInfo.Quests[5];
\r
681 PAssert.That(() => q675.Id == 675 && q675.Count.NowArray.SequenceEqual(new[] {1, 1}));
\r
682 var q676 = questInfo.Quests[6];
\r
683 PAssert.That(() => q676.Id == 676 && q676.Count.NowArray.SequenceEqual(new[] {1, 1, 1}));
\r
684 var q677 = questInfo.Quests[7];
\r
685 PAssert.That(() => q677.Id == 677 && q677.Count.NowArray.SequenceEqual(new[] {1, 1, 1}));
\r
689 /// 702: 艦の「近代化改修」を実施せよ!
\r
690 /// 703: 「近代化改修」を進め、戦備を整えよ!
\r
693 public void Powerup_702_703()
\r
695 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
697 questInfo.InspectQuestList(Js(new
\r
701 new {api_no = 702, api_category = 7, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0},
\r
702 new {api_no = 703, api_category = 7, api_state = 2, api_title = "", api_detail = "", api_progress_flag = 0}
\r
705 questInfo.InspectPowerup(Js(new {api_powerup_flag = 1}));
\r
707 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
708 .SequenceEqual(new[] {new {Id = 702, Now = 1}, new {Id = 703, Now = 1}}));
\r
715 public void ToStringTest()
\r
717 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
718 var status = new Status
\r
720 QuestCountList = new[]
\r
722 new QuestCount {Id = 211, Now = 2},
\r
723 new QuestCount {Id = 214, NowArray = new[] {20, 7, 10, 8}},
\r
724 new QuestCount {Id = 854, NowArray = new[] {2, 1, 1, 1}},
\r
725 new QuestCount {Id = 426, NowArray = new[] {1, 1, 1, 1}},
\r
726 new QuestCount {Id = 428, NowArray = new[] {1, 1, 1}}
\r
729 questInfo.LoadState(status);
\r
730 PAssert.That(() => status.QuestCountList[0].ToString() == "2/3");
\r
731 PAssert.That(() => status.QuestCountList[1].ToString() == "20/36 7/6 10/24 8/12");
\r
732 var z = status.QuestCountList[2];
\r
733 PAssert.That(() => z.ToString() == "4/4");
\r
734 PAssert.That(() => z.ToToolTip() == "2-4 6-1 6-3 6-4");
\r
735 z.NowArray = new[] {0, 0, 0, 0};
\r
736 PAssert.That(() => z.ToToolTip() == "");
\r
737 var q426 = status.QuestCountList[3];
\r
738 PAssert.That(() => q426.ToString() == "4/4");
\r
739 PAssert.That(() => q426.ToToolTip() == "警備任務 対潜警戒任務 海上護衛任務 強硬偵察任務");
\r
740 var q428 = status.QuestCountList[4];
\r
741 PAssert.That(() => q428.ToToolTip() == "対潜警戒任務1 海峡警備行動1 長時間対潜警戒1");
\r
742 q428.NowArray = new[] {0, 1, 0};
\r
743 PAssert.That(() => q428.ToToolTip() == "海峡警備行動1");
\r