1 // Copyright (C) 2019 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
17 using ExpressionToCodeLib;
\r
18 using KancolleSniffer.Model;
\r
19 using KancolleSniffer.Util;
\r
20 using Microsoft.VisualStudio.TestTools.UnitTesting;
\r
22 namespace KancolleSniffer.Test
\r
25 public class QuestCountTest
\r
28 public void AdjustCount()
\r
30 var count = new QuestCount
\r
32 Spec = new QuestSpec {Max = 7},
\r
35 count.AdjustCount(0);
\r
36 Assert.IsTrue(count.Now == 3);
\r
37 count.AdjustCount(50);
\r
38 Assert.IsTrue(count.Now == 4);
\r
39 count.AdjustCount(80);
\r
40 Assert.IsTrue(count.Now == 6);
\r
41 count.AdjustCount(100);
\r
42 Assert.IsTrue(count.Now == 7);
\r
44 count.AdjustCount(100);
\r
45 Assert.IsTrue(count.Now == 14);
\r
46 count.AdjustCount(80);
\r
47 Assert.IsTrue(count.Now == 6);
\r
48 count.AdjustCount(50);
\r
49 Assert.IsTrue(count.Now == 5);
\r
50 count.AdjustCount(0);
\r
51 Assert.IsTrue(count.Now == 3);
\r
55 public void AdjustCountWithShift()
\r
57 var count = new QuestCount
\r
59 Spec = new QuestSpec {Max = 7, Shift = 1},
\r
62 count.AdjustCount(0);
\r
63 Assert.IsTrue(count.Now == 2);
\r
64 count.AdjustCount(50);
\r
65 Assert.IsTrue(count.Now == 3);
\r
66 count.AdjustCount(80);
\r
67 Assert.IsTrue(count.Now == 6);
\r
68 count.AdjustCount(100);
\r
69 Assert.IsTrue(count.Now == 7);
\r
71 count.AdjustCount(100);
\r
72 Assert.IsTrue(count.Now == 14);
\r
73 count.AdjustCount(80);
\r
74 Assert.IsTrue(count.Now == 6);
\r
75 count.AdjustCount(50);
\r
76 Assert.IsTrue(count.Now == 5);
\r
77 count.AdjustCount(0);
\r
78 Assert.IsTrue(count.Now == 2);
\r
82 public void AdjustCount80Percent()
\r
84 var count = new QuestCount
\r
86 Spec = new QuestSpec()
\r
88 for (var shift = 0; shift <= 1; shift++)
\r
90 for (var max = 2; max <= 6; max++)
\r
92 count.Spec.Max = max;
\r
93 count.Spec.Shift = shift;
\r
95 count.AdjustCount(80);
\r
96 Assert.IsTrue(count.Now == count.Spec.Max - 1);
\r
102 public void AdjustCountNowArray()
\r
104 var count = new QuestCount
\r
106 Spec = new QuestSpec {MaxArray = new[] {36, 6, 24, 12}},
\r
107 NowArray = new[] {1, 2, 3, 4}
\r
109 count.AdjustCount(50);
\r
110 Assert.IsTrue(count.NowArray.SequenceEqual(new[] {1, 2, 3, 4}));
\r
111 count.AdjustCount(100);
\r
112 Assert.IsTrue(count.NowArray.SequenceEqual(new[] {36, 6, 24, 12}));
\r
113 count.NowArray = new[] {38, 12, 19, 12};
\r
114 count.AdjustCount(100);
\r
115 Assert.IsTrue(count.NowArray.SequenceEqual(new[] {38, 12, 24, 12}));
\r
122 public void ToStringTest()
\r
124 var status = new Status
\r
126 QuestCountList = new[]
\r
128 new QuestCount {Id = 211, Now = 2},
\r
129 new QuestCount {Id = 214, NowArray = new[] {20, 7, 10, 8}},
\r
130 new QuestCount {Id = 854, NowArray = new[] {2, 1, 1, 1}},
\r
131 new QuestCount {Id = 426, NowArray = new[] {1, 1, 1, 1}},
\r
132 new QuestCount {Id = 428, NowArray = new[] {1, 1, 1}},
\r
133 new QuestCount {Id = 873, NowArray = new[] {1, 1, 1}},
\r
134 new QuestCount {Id = 888, NowArray = new[] {1, 1, 1}},
\r
135 new QuestCount {Id = 688, NowArray = new[] {2, 1, 2, 1}},
\r
136 new QuestCount {Id = 893, NowArray = new[] {1, 1, 1, 1}},
\r
137 new QuestCount {Id = 894, NowArray = new[] {1, 1, 1, 1, 1}},
\r
138 new QuestCount {Id = 280, NowArray = new[] {1, 1, 1, 1}},
\r
139 new QuestCount {Id = 872, NowArray = new[] {1, 1, 1, 1}},
\r
140 new QuestCount {Id = 284, NowArray = new[] {1, 1, 1, 1}}
\r
143 new QuestInfo().LoadState(status);
\r
144 Assert.IsTrue(status.QuestCountList[0].ToString() == "2/3");
\r
145 Assert.IsTrue(status.QuestCountList[1].ToString() == "20/36 7/6 10/24 8/12");
\r
146 var z = status.QuestCountList[2];
\r
147 Assert.IsTrue(z.ToString() == "4/4");
\r
148 Assert.IsTrue(z.ToToolTip() == "2-4 6-1 6-3 6-4");
\r
149 z.NowArray = new[] {0, 0, 0, 0};
\r
150 Assert.IsTrue(z.ToToolTip() == "");
\r
151 var q426 = status.QuestCountList[3];
\r
152 Assert.IsTrue(q426.ToString() == "4/4");
\r
153 Assert.IsTrue(q426.ToToolTip() == "警備任務 対潜警戒任務 海上護衛任務 強硬偵察任務");
\r
154 var q428 = status.QuestCountList[4];
\r
155 Assert.IsTrue(q428.ToToolTip() == "対潜警戒任務1 海峡警備行動1 長時間対潜警戒1");
\r
156 q428.NowArray = new[] {0, 1, 0};
\r
157 Assert.IsTrue(q428.ToToolTip() == "海峡警備行動1");
\r
158 var q873 = status.QuestCountList[5];
\r
159 Assert.IsTrue(q873.ToString() == "3/3");
\r
160 Assert.IsTrue(q873.ToToolTip() == "3-1 3-2 3-3");
\r
161 var q888 = status.QuestCountList[6];
\r
162 Assert.IsTrue(q888.ToString() == "3/3");
\r
163 Assert.IsTrue(q888.ToToolTip() == "5-1 5-3 5-4");
\r
164 var q688 = status.QuestCountList[7];
\r
165 Assert.IsTrue(q688.ToToolTip() == "艦戦2 艦爆1 艦攻2 水偵1");
\r
166 var q893 = status.QuestCountList[8];
\r
167 Assert.IsTrue(q893.ToToolTip() == "1-5:1 7-1:1 7-2G:1 7-2M:1");
\r
168 var q894 = status.QuestCountList[9];
\r
169 Assert.IsTrue(q894.ToString() == "5/5");
\r
170 Assert.IsTrue(q894.ToToolTip() == "1-3 1-4 2-1 2-2 2-3");
\r
171 var q280 = status.QuestCountList[10];
\r
172 Assert.IsTrue(q280.ToString() == "4/4");
\r
173 Assert.IsTrue(q280.ToToolTip() == "1-2 1-3 1-4 2-1");
\r
174 var q872 = status.QuestCountList.First(q => q.Id == 872);
\r
175 Assert.IsTrue(q872.ToString() == "4/4");
\r
176 Assert.IsTrue(q872.ToToolTip() == "7-2M 5-5 6-2 6-5");
\r
177 var q284 = status.QuestCountList.First(q => q.Id == 284);
\r
178 Assert.IsTrue(q284.ToString() == "4/4");
\r
179 Assert.IsTrue(q284.ToToolTip() == "1-4 2-1 2-2 2-3");
\r
184 public class QuestCounterTest
\r
186 private JsonObject Js(object obj) => JsonObject.CreateJsonObject(obj);
\r
188 private object CreateQuestList(int[] ids) => Js(new
\r
191 ids.Select(id => new
\r
194 api_category = id / 100,
\r
199 api_get_material = new int[0],
\r
200 api_progress_flag = 0
\r
204 private QuestStatus InjectQuest(int id)
\r
206 _questInfo.InspectQuestList(CreateQuestList(new[] {id}));
\r
207 return _questInfo.Quests[0];
\r
210 private void InjectMapStart(int map, int eventId)
\r
212 _questCounter.InspectMapStart(CreateMap(map, eventId));
\r
215 private void InjectMapNext(int map, int eventId)
\r
217 _questCounter.InspectMapNext(CreateMap(map, eventId));
\r
220 private object CreateMap(int map, int eventId)
\r
224 api_maparea_id = map / 10,
\r
225 api_mapinfo_no = map % 10,
\r
226 api_event_id = eventId
\r
230 private void InjectBattleResult(string result)
\r
232 _questCounter.InspectBattleResult(Js(new {api_win_rank = result}));
\r
235 private void InjectPracticeResult(string result)
\r
237 _questCounter.InspectPracticeResult(Js(new {api_win_rank = result}));
\r
240 private bool CheckCount(QuestStatus quest, int number)
\r
242 return quest.Count.Now == number;
\r
245 private bool CheckCount(QuestStatus quest, int[] array)
\r
247 return quest.Count.NowArray.SequenceEqual(array);
\r
250 private ShipStatus[] ShipStatusList(params int[] shipTypes)
\r
252 return shipTypes.Select(sType => ShipStatus(sType)).ToArray();
\r
255 private ShipStatus ShipStatus(int shipType, int specId = 0)
\r
257 return new ShipStatus {NowHp = 1, Spec = new ShipSpec {Id = specId, ShipType = shipType}};
\r
260 private BattleInfo _battleInfo;
\r
261 private ItemInfo _itemInfo;
\r
262 private QuestInfo _questInfo;
\r
263 private QuestCounter _questCounter;
\r
266 public void Initialize()
\r
268 _battleInfo = new BattleInfo(null, null, null);
\r
269 _itemInfo = new ItemInfo(new ItemMaster(), new ItemInventory());
\r
270 _questInfo = new QuestInfo(() => new DateTime(2015, 1, 1)) {AcceptMax = 10};
\r
271 _questCounter = new QuestCounter(_questInfo, _itemInfo, _battleInfo);
\r
276 /// 210: 敵艦隊を10回邀撃せよ!
\r
278 /// 216: 敵艦隊主力を撃滅せよ!
\r
281 public void BattleResult_201_216_210_214()
\r
283 _questInfo.InspectQuestList(CreateQuestList(new[] {201, 216, 210, 214}));
\r
285 InjectMapStart(11, 4);
\r
286 var quests = _questInfo.Quests;
\r
288 PAssert.That(() => quests[2].Id == 214 && quests[2].Count.NowArray[0] == 1);
\r
289 InjectBattleResult("S");
\r
291 PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]
\r
293 new {Id = 201, Now = 1}, new {Id = 210, Now = 1},
\r
294 new {Id = 214, Now = 0}, new {Id = 216, Now = 1}
\r
296 PAssert.That(() => quests[2].Id == 214 && CheckCount(quests[2], new[] {1, 1, 0, 0}));
\r
298 InjectMapNext(11, 5);
\r
300 InjectBattleResult("B");
\r
301 PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]
\r
303 new {Id = 201, Now = 2}, new {Id = 210, Now = 2},
\r
304 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}
\r
307 PAssert.That(() => quests[2].Id == 214 && CheckCount(quests[2], new[] {1, 1, 1, 1}));
\r
308 InjectBattleResult("C");
\r
309 PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]
\r
311 new {Id = 201, Now = 2}, new {Id = 210, Now = 3},
\r
312 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}
\r
314 PAssert.That(() => quests[2].Id == 214 && CheckCount(quests[2], new[] {1, 1, 2, 1}));
\r
318 /// 211: 敵空母を3隻撃沈せよ!
\r
321 /// 218: 敵補給艦を3隻撃沈せよ!
\r
324 public void BattleResult_211_212_213_218_220_221()
\r
326 _questInfo.InspectQuestList(CreateQuestList(new[] {211, 212, 213, 218, 220, 221}));
\r
328 _battleInfo.InjectResultStatus(new ShipStatus[0], new ShipStatus[0], new[]
\r
330 new ShipStatus {NowHp = 0, MaxHp = 130, Spec = new ShipSpec {Id = 1558, ShipType = 15}},
\r
331 new ShipStatus {NowHp = 0, MaxHp = 90, Spec = new ShipSpec {Id = 1543, ShipType = 8}},
\r
332 new ShipStatus {NowHp = 0, MaxHp = 90, Spec = new ShipSpec {Id = 1543, ShipType = 8}},
\r
333 new ShipStatus {NowHp = 0, MaxHp = 96, Spec = new ShipSpec {Id = 1528, ShipType = 11}},
\r
334 new ShipStatus {NowHp = 0, MaxHp = 70, Spec = new ShipSpec {Id = 1523, ShipType = 7}},
\r
335 new ShipStatus {NowHp = 1, MaxHp = 70, Spec = new ShipSpec {Id = 1523, ShipType = 7}}
\r
336 }, new ShipStatus[0]);
\r
337 InjectBattleResult("A");
\r
339 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
340 .SequenceEqual(new[]
\r
342 new {Id = 211, Now = 2}, new {Id = 212, Now = 1}, new {Id = 213, Now = 1},
\r
343 new {Id = 218, Now = 1}, new {Id = 220, Now = 2}, new {Id = 221, Now = 1}
\r
349 /// 230: 敵潜水艦を制圧せよ!
\r
352 public void BattleResult_228_230()
\r
354 _questInfo.InspectQuestList(CreateQuestList(new[] {228, 230}));
\r
356 _battleInfo.InjectResultStatus(new ShipStatus[0], new ShipStatus[0], new[]
\r
358 new ShipStatus {NowHp = 0, MaxHp = 27, Spec = new ShipSpec {Id = 1532, ShipType = 13}},
\r
359 new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}},
\r
360 new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}}
\r
361 }, new ShipStatus[0]);
\r
362 InjectBattleResult("S");
\r
364 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
365 .SequenceEqual(new[]
\r
367 new {Id = 228, Now = 3}, new {Id = 230, Now = 3}
\r
372 /// 226: 南西諸島海域の制海権を握れ!
\r
375 public void BattleResult_226()
\r
377 var quest = InjectQuest(226);
\r
379 InjectMapStart(21, 4);
\r
380 InjectBattleResult("S");
\r
381 Assert.IsTrue(CheckCount(quest, 0));
\r
383 InjectMapNext(21, 5);
\r
384 InjectBattleResult("S");
\r
385 Assert.IsTrue(CheckCount(quest, 1));
\r
386 InjectBattleResult("B");
\r
387 Assert.IsTrue(CheckCount(quest, 2));
\r
391 /// // 243: 南方海域珊瑚諸島沖の制空権を握れ!
\r
394 public void BattleResult_243()
\r
396 var quest = InjectQuest(243);
\r
398 InjectMapNext(52, 4);
\r
399 InjectBattleResult("S");
\r
400 Assert.IsTrue(CheckCount(quest, 0));
\r
402 InjectMapNext(52, 5);
\r
403 InjectBattleResult("A");
\r
404 Assert.IsTrue(CheckCount(quest, 0));
\r
405 InjectBattleResult("S");
\r
406 Assert.IsTrue(CheckCount(quest, 1));
\r
410 /// 249: 「第五戦隊」出撃せよ!
\r
413 public void BattleResult_249()
\r
415 var quest = InjectQuest(249);
\r
417 _battleInfo.InjectResultStatus(new[]
\r
419 ShipStatus(5, 319), ShipStatus(5, 192), ShipStatus(5, 194),
\r
420 ShipStatus(5, 193), ShipStatus(6, 189), ShipStatus(6, 188)
\r
421 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
423 InjectMapNext(25, 4);
\r
424 InjectBattleResult("S");
\r
425 Assert.IsTrue(CheckCount(quest, 0));
\r
427 InjectMapNext(25, 5);
\r
428 InjectBattleResult("A");
\r
429 Assert.IsTrue(CheckCount(quest, 0));
\r
430 InjectBattleResult("S");
\r
431 Assert.IsTrue(CheckCount(quest, 1));
\r
432 _questInfo.Quests[0].Count.Now = 0;
\r
434 _battleInfo.Result.Friend.Main[1].NowHp = 0;
\r
435 InjectBattleResult("S");
\r
436 Assert.IsTrue(CheckCount(quest, 0), "那智改二轟沈");
\r
440 /// 257: 「水雷戦隊」南西へ!
\r
443 public void BattleResult_257()
\r
445 var quest = InjectQuest(257);
\r
447 _battleInfo.InjectResultStatus(
\r
448 ShipStatusList(3, 2, 2, 2, 2, 2), new ShipStatus[0],
\r
449 new ShipStatus[0], new ShipStatus[0]);
\r
451 InjectMapNext(14, 4);
\r
452 InjectBattleResult("S");
\r
453 Assert.IsTrue(CheckCount(quest, 0));
\r
455 InjectMapNext(14, 5);
\r
456 InjectBattleResult("A");
\r
457 Assert.IsTrue(CheckCount(quest, 0));
\r
458 InjectBattleResult("S");
\r
459 Assert.IsTrue(CheckCount(quest, 1));
\r
460 _questInfo.Quests[0].Count.Now = 0;
\r
462 _battleInfo.Result.Friend.Main[0].NowHp = 0;
\r
463 InjectBattleResult("S");
\r
464 Assert.IsTrue(CheckCount(quest, 0), "軽巡轟沈");
\r
465 _battleInfo.Result.Friend.Main[0].NowHp = 1;
\r
467 _battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;
\r
468 _battleInfo.Result.Friend.Main[1].Spec.ShipType = 3;
\r
469 InjectBattleResult("S");
\r
470 Assert.IsTrue(CheckCount(quest, 0), "旗艦が駆逐");
\r
471 _battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;
\r
473 _battleInfo.Result.Friend.Main[2].Spec.ShipType = 3;
\r
474 _battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;
\r
475 InjectBattleResult("S");
\r
476 Assert.IsTrue(CheckCount(quest, 0), "軽巡が4隻");
\r
478 _battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;
\r
479 _battleInfo.Result.Friend.Main[3].Spec.ShipType = 4;
\r
480 InjectBattleResult("S");
\r
481 Assert.IsTrue(CheckCount(quest, 0), "駆逐軽巡以外");
\r
484 private ShipStatus ShipStatus(int shipType, int shipClass, int specId) =>
\r
485 new ShipStatus {NowHp = 1, Spec = new ShipSpec {Id = specId, ShipType = shipType, ShipClass = shipClass}};
\r
488 /// 257: 「水上打撃部隊」南方へ!
\r
491 public void BattleResult_259()
\r
493 var quest = InjectQuest(259);
\r
497 ShipStatus(3, 52, 321), ShipStatus(9, 19, 276), ShipStatus(10, 26, 411),
\r
498 ShipStatus(10, 26, 412), ShipStatus(5, 29, 193), ShipStatus(5, 29, 194)
\r
500 _battleInfo.InjectResultStatus(
\r
501 org.ToArray(), new ShipStatus[0],
\r
502 new ShipStatus[0], new ShipStatus[0]);
\r
504 InjectMapNext(51, 4);
\r
505 InjectBattleResult("S");
\r
506 Assert.IsTrue(CheckCount(quest, 0));
\r
508 InjectMapNext(51, 5);
\r
509 InjectBattleResult("A");
\r
510 Assert.IsTrue(CheckCount(quest, 0));
\r
511 InjectBattleResult("S");
\r
512 Assert.IsTrue(CheckCount(quest, 1));
\r
513 _questInfo.Quests[0].Count.Now = 0;
\r
515 _battleInfo.Result.Friend.Main[0].NowHp = 0;
\r
516 InjectBattleResult("S");
\r
517 Assert.IsTrue(CheckCount(quest, 0), "軽巡轟沈");
\r
518 _battleInfo.Result.Friend.Main[0].NowHp = 1;
\r
520 _battleInfo.Result.Friend.Main[4] = ShipStatus(9, 37, 136);
\r
521 InjectBattleResult("S");
\r
522 Assert.IsTrue(CheckCount(quest, 0), "戦艦4隻");
\r
523 _battleInfo.Result.Friend.Main[4] = org[4];
\r
525 _battleInfo.Result.Friend.Main[0] = ShipStatus(4, 4, 58);
\r
526 InjectBattleResult("S");
\r
527 Assert.IsTrue(CheckCount(quest, 0), "軽巡なし");
\r
528 _battleInfo.Result.Friend.Main[0] = org[0];
\r
530 _battleInfo.Result.Friend.Main[2] = ShipStatus(10, 2, 553);
\r
531 InjectBattleResult("S");
\r
532 Assert.IsTrue(CheckCount(quest, 1), "伊勢改二");
\r
536 /// 264: 「空母機動部隊」西へ!
\r
539 public void BattleResult_264()
\r
541 var quest = InjectQuest(264);
\r
543 _battleInfo.InjectResultStatus(
\r
544 ShipStatusList(7, 11, 3, 3, 2, 2), new ShipStatus[0],
\r
545 new ShipStatus[0], new ShipStatus[0]);
\r
547 InjectMapNext(42, 4);
\r
548 InjectBattleResult("S");
\r
549 Assert.IsTrue(CheckCount(quest, 0));
\r
551 InjectMapNext(42, 5);
\r
552 InjectBattleResult("A");
\r
553 Assert.IsTrue(CheckCount(quest, 0));
\r
554 InjectBattleResult("S");
\r
555 Assert.IsTrue(CheckCount(quest, 1));
\r
557 _battleInfo.Result.Friend.Main[0].NowHp = 0;
\r
558 InjectBattleResult("S");
\r
559 Assert.IsTrue(CheckCount(quest, 1), "轟沈あり");
\r
563 /// 266: 「水上反撃部隊」突入せよ!
\r
566 public void BattleResult_266()
\r
568 var quest = InjectQuest(266);
\r
570 _battleInfo.InjectResultStatus(
\r
571 ShipStatusList(2, 5, 3, 2, 2, 2), new ShipStatus[0],
\r
572 new ShipStatus[0], new ShipStatus[0]);
\r
574 InjectMapNext(25, 4);
\r
575 InjectBattleResult("S");
\r
576 Assert.IsTrue(CheckCount(quest, 0));
\r
578 InjectMapNext(25, 5);
\r
579 InjectBattleResult("A");
\r
580 Assert.IsTrue(CheckCount(quest, 0));
\r
581 InjectBattleResult("S");
\r
582 Assert.IsTrue(CheckCount(quest, 1));
\r
584 _battleInfo.Result.Friend.Main[1].NowHp = 0;
\r
585 InjectBattleResult("S");
\r
586 Assert.IsTrue(CheckCount(quest, 1), "轟沈あり");
\r
587 _battleInfo.Result.Friend.Main[1].NowHp = 1;
\r
589 _battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;
\r
590 _battleInfo.Result.Friend.Main[2].Spec.ShipType = 2;
\r
591 InjectBattleResult("S");
\r
592 Assert.IsTrue(CheckCount(quest, 1), "旗艦が軽巡");
\r
593 _battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;
\r
594 _battleInfo.Result.Friend.Main[2].Spec.ShipType = 3;
\r
596 _battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;
\r
597 InjectBattleResult("S");
\r
598 Assert.IsTrue(CheckCount(quest, 1), "軽巡が2隻");
\r
602 /// 280: 兵站線確保!海上警備を強化実施せよ!
\r
605 public void BattleResult_280()
\r
607 var quest = InjectQuest(280);
\r
609 _battleInfo.InjectResultStatus(
\r
610 ShipStatusList(7, 2, 1, 1, 8, 8), new ShipStatus[0],
\r
611 new ShipStatus[0], new ShipStatus[0]);
\r
613 InjectMapNext(12, 4);
\r
614 InjectBattleResult("S");
\r
615 InjectMapNext(12, 5);
\r
616 InjectBattleResult("A");
\r
617 Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0}));
\r
619 InjectBattleResult("S");
\r
620 InjectMapNext(13, 5);
\r
621 InjectBattleResult("S");
\r
622 InjectMapNext(14, 5);
\r
623 InjectBattleResult("S");
\r
624 InjectMapNext(21, 5);
\r
625 InjectBattleResult("S");
\r
626 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1}));
\r
628 _battleInfo.Result.Friend.Main = ShipStatusList(7, 1, 1, 8, 8, 8);
\r
629 InjectBattleResult("S");
\r
630 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1}));
\r
632 _battleInfo.Result.Friend.Main = ShipStatusList(8, 1, 1, 1, 8, 8);
\r
633 InjectBattleResult("S");
\r
634 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1}));
\r
636 _battleInfo.Result.Friend.Main = ShipStatusList(3, 2, 1, 1, 8, 8);
\r
637 InjectBattleResult("S");
\r
638 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 2}));
\r
640 _battleInfo.Result.Friend.Main = ShipStatusList(2, 4, 2, 1, 8, 8);
\r
641 InjectBattleResult("S");
\r
642 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 3}));
\r
644 _battleInfo.Result.Friend.Main = ShipStatusList(2, 2, 21, 2, 8, 8);
\r
645 InjectBattleResult("S");
\r
646 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 4}));
\r
650 /// // 284: 南西諸島方面「海上警備行動」発令!
\r
653 public void BattleResult_284()
\r
655 var quest = InjectQuest(284);
\r
657 _battleInfo.InjectResultStatus(
\r
658 ShipStatusList(7, 2, 1, 1, 8, 8), new ShipStatus[0],
\r
659 new ShipStatus[0], new ShipStatus[0]);
\r
661 InjectMapNext(14, 4);
\r
662 InjectBattleResult("S");
\r
663 InjectMapNext(14, 5);
\r
664 InjectBattleResult("A");
\r
665 Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0}));
\r
667 InjectBattleResult("S");
\r
668 InjectMapNext(21, 5);
\r
669 InjectBattleResult("S");
\r
670 InjectMapNext(22, 5);
\r
671 InjectBattleResult("S");
\r
672 InjectMapNext(23, 5);
\r
673 InjectBattleResult("S");
\r
674 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1}));
\r
681 /// 854: 戦果拡張任務!「Z作戦」前段作戦
\r
684 public void BattleResult_822_854()
\r
686 _questInfo.InspectQuestList(CreateQuestList(new[] {822, 854}));
\r
687 var q822 = _questInfo.Quests[0];
\r
688 var q854 = _questInfo.Quests[1];
\r
690 InjectMapNext(24, 4);
\r
691 InjectBattleResult("S");
\r
692 Assert.IsTrue(CheckCount(q854, new[] {0, 0, 0, 0}));
\r
693 Assert.IsTrue(CheckCount(q822, 0));
\r
695 InjectMapNext(24, 5);
\r
696 InjectBattleResult("A");
\r
697 InjectMapNext(61, 5);
\r
698 InjectBattleResult("A");
\r
699 InjectMapNext(63, 5);
\r
700 InjectBattleResult("A");
\r
701 InjectMapNext(64, 5);
\r
702 InjectBattleResult("S");
\r
703 Assert.IsTrue(CheckCount(q854, new[] {1, 1, 1, 1}));
\r
704 Assert.IsTrue(CheckCount(q822, 0));
\r
705 InjectMapNext(24, 5);
\r
706 InjectBattleResult("S");
\r
707 Assert.IsTrue(CheckCount(q854, new[] {2, 1, 1, 1}));
\r
708 Assert.IsTrue(CheckCount(q822, 1));
\r
712 /// 845: 発令!「西方海域作戦」
\r
715 public void BattleResult_845()
\r
717 var quest = InjectQuest(845);
\r
719 InjectMapNext(41, 4);
\r
720 InjectBattleResult("S");
\r
721 InjectMapNext(41, 5);
\r
722 InjectBattleResult("A");
\r
723 Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0, 0}));
\r
725 InjectMapNext(41, 5);
\r
726 InjectBattleResult("S");
\r
727 InjectMapNext(42, 5);
\r
728 InjectBattleResult("S");
\r
729 InjectMapNext(43, 5);
\r
730 InjectBattleResult("S");
\r
731 InjectMapNext(44, 5);
\r
732 InjectBattleResult("S");
\r
733 InjectMapNext(45, 5);
\r
734 InjectBattleResult("S");
\r
735 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1, 1}));
\r
739 /// 861: 強行輸送艦隊、抜錨!
\r
742 public void MapNext_861()
\r
744 _questInfo.InspectQuestList(CreateQuestList(new[] {861}));
\r
745 var quest = _questInfo.Quests[0];
\r
747 _battleInfo.InjectResultStatus(
\r
748 ShipStatusList(10, 22, 2, 2, 2, 2), new ShipStatus[0],
\r
749 new ShipStatus[0], new ShipStatus[0]);
\r
751 InjectMapNext(16, 4);
\r
752 Assert.IsTrue(CheckCount(quest, 0));
\r
754 InjectMapNext(16, 8);
\r
755 Assert.IsTrue(CheckCount(quest, 1));
\r
757 _battleInfo.Result.Friend.Main[1].NowHp = 0;
\r
758 InjectMapNext(16, 8);
\r
759 Assert.IsTrue(CheckCount(quest, 1), "轟沈あり");
\r
760 _battleInfo.Result.Friend.Main[1].NowHp = 1;
\r
762 _battleInfo.Result.Friend.Main[2].Spec.ShipType = 10;
\r
763 InjectMapNext(16, 8);
\r
764 Assert.IsTrue(CheckCount(quest, 1), "補給・航戦が3隻");
\r
768 /// 862: 前線の航空偵察を実施せよ!
\r
771 public void BattleResult_862()
\r
773 _questInfo.InspectQuestList(CreateQuestList(new[] {862}));
\r
774 var quest = _questInfo.Quests[0];
\r
776 _battleInfo.InjectResultStatus(
\r
777 ShipStatusList(2, 3, 3, 2, 2, 16), new ShipStatus[0],
\r
778 new ShipStatus[0], new ShipStatus[0]);
\r
780 InjectMapNext(63, 4);
\r
781 InjectBattleResult("A");
\r
782 Assert.IsTrue(CheckCount(quest, 0));
\r
784 InjectMapNext(63, 5);
\r
785 InjectBattleResult("B");
\r
786 Assert.IsTrue(CheckCount(quest, 0));
\r
787 InjectBattleResult("A");
\r
788 Assert.IsTrue(CheckCount(quest, 1));
\r
790 _battleInfo.Result.Friend.Main[1].NowHp = 0;
\r
791 InjectBattleResult("A");
\r
792 Assert.IsTrue(CheckCount(quest, 1), "轟沈あり");
\r
793 _battleInfo.Result.Friend.Main[1].NowHp = 1;
\r
795 _battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;
\r
796 _battleInfo.Result.Friend.Main[4].Spec.ShipType = 16;
\r
797 InjectBattleResult("A");
\r
798 Assert.IsTrue(CheckCount(quest, 2), "軽巡3隻水母2隻");
\r
802 /// 872: 戦果拡張任務!「Z作戦」後段作戦
\r
805 public void BattleResult_872()
\r
807 var quest = InjectQuest(872);
\r
809 InjectMapNext(55, 4);
\r
810 InjectBattleResult("A");
\r
811 Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0}));
\r
812 InjectBattleResult("S");
\r
813 Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0}));
\r
814 InjectMapNext(55, 5);
\r
815 InjectBattleResult("S");
\r
816 Assert.IsTrue(CheckCount(quest, new[] {0, 1, 0, 0}));
\r
818 InjectMapNext(62, 5);
\r
819 InjectBattleResult("S");
\r
820 Assert.IsTrue(CheckCount(quest, new[] {0, 1, 1, 0}));
\r
821 InjectMapNext(65, 5);
\r
822 InjectBattleResult("S");
\r
823 Assert.IsTrue(CheckCount(quest, new[] {0, 1, 1, 1}));
\r
824 _questCounter.InspectMapNext(Js(new
\r
826 api_maparea_id = 7,
\r
827 api_mapinfo_no = 2,
\r
831 InjectBattleResult("S");
\r
832 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1}), "7-2M");
\r
836 /// 873: 北方海域警備を実施せよ!
\r
839 public void BattleResult_873()
\r
841 var quest = InjectQuest(873);
\r
843 _battleInfo.InjectResultStatus(
\r
844 ShipStatusList(3, 2, 2, 2, 2, 2), new ShipStatus[0],
\r
845 new ShipStatus[0], new ShipStatus[0]);
\r
847 InjectMapNext(31, 4);
\r
848 InjectBattleResult("A");
\r
849 Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0}));
\r
851 InjectMapNext(31, 5);
\r
852 InjectBattleResult("B");
\r
853 Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0}));
\r
854 InjectBattleResult("A");
\r
855 Assert.IsTrue(CheckCount(quest, new[] {1, 0, 0}));
\r
857 _battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;
\r
858 InjectBattleResult("A");
\r
859 Assert.IsTrue(_questInfo.Quests[0].Count.NowArray[0] == 1, "軽巡なし");
\r
860 _battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;
\r
862 InjectMapNext(32, 5);
\r
863 InjectBattleResult("A");
\r
864 InjectMapNext(33, 5);
\r
865 InjectBattleResult("A");
\r
866 Assert.IsTrue(_questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1}));
\r
870 /// 875: 精鋭「三一駆」、鉄底海域に突入せよ!
\r
873 public void BattleResult_875()
\r
875 var quest = InjectQuest(875);
\r
877 _battleInfo.InjectResultStatus(new[]
\r
879 ShipStatus(2, 543), ShipStatus(8, 360), ShipStatus(11, 545),
\r
880 ShipStatus(18, 467), ShipStatus(11, 261), ShipStatus(2, 344)
\r
881 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
883 InjectMapNext(54, 4);
\r
884 InjectBattleResult("S");
\r
885 Assert.IsTrue(CheckCount(quest, 0));
\r
887 InjectMapNext(54, 5);
\r
888 InjectBattleResult("A");
\r
889 Assert.IsTrue(CheckCount(quest, 0));
\r
890 InjectBattleResult("S");
\r
891 Assert.IsTrue(CheckCount(quest, 1));
\r
893 _battleInfo.Result.Friend.Main[5].NowHp = 0;
\r
894 InjectBattleResult("S");
\r
895 Assert.IsTrue(CheckCount(quest, 1), "朝霜改轟沈");
\r
896 _battleInfo.Result.Friend.Main[5].NowHp = 1;
\r
898 _battleInfo.Result.Friend.Main[0].Spec.Id = 345;
\r
899 InjectBattleResult("S");
\r
900 Assert.IsTrue(CheckCount(quest, 1), "長波改二なし");
\r
901 _battleInfo.Result.Friend.Main[0].Spec.Id = 543;
\r
903 _battleInfo.Result.Friend.Main[5].Spec.Id = 345;
\r
904 InjectBattleResult("S");
\r
905 Assert.IsTrue(CheckCount(quest, 2), "高波改");
\r
906 _battleInfo.Result.Friend.Main[5].Spec.Id = 359;
\r
907 InjectBattleResult("S");
\r
908 Assert.IsTrue(CheckCount(quest, 3), "沖波改");
\r
909 _battleInfo.Result.Friend.Main[5].Spec.Id = 578;
\r
910 InjectBattleResult("S");
\r
911 Assert.IsTrue(CheckCount(quest, 4), "朝霜改二");
\r
915 /// 888: 新編成「三川艦隊」、鉄底海峡に突入せよ!
\r
918 public void BattleResult_888()
\r
920 var quest = InjectQuest(888);
\r
922 _battleInfo.InjectResultStatus(new[]
\r
924 ShipStatus(5, 427), ShipStatus(5, 264), ShipStatus(5, 142),
\r
925 ShipStatus(5, 417), ShipStatus(2, 144), ShipStatus(2, 195)
\r
926 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
928 InjectMapNext(51, 4);
\r
929 InjectBattleResult("S");
\r
930 Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0}));
\r
932 InjectMapNext(51, 5);
\r
933 InjectBattleResult("A");
\r
934 Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0}));
\r
935 InjectBattleResult("S");
\r
936 Assert.IsTrue(CheckCount(quest, new[] {1, 0, 0}));
\r
937 _battleInfo.Result.Friend.Main[0].NowHp = 0;
\r
938 InjectBattleResult("S");
\r
939 Assert.IsTrue(CheckCount(quest, new[] {1, 0, 0}), "轟沈あり");
\r
940 _battleInfo.Result.Friend.Main[0].NowHp = 1;
\r
942 _battleInfo.Result.Friend.Main[0].Spec.Id = 319;
\r
943 InjectBattleResult("S");
\r
944 Assert.IsTrue(CheckCount(quest, new[] {1, 0, 0}), "三川艦隊3隻");
\r
945 _battleInfo.Result.Friend.Main[0].Spec.Id = 427;
\r
947 InjectMapNext(53, 5);
\r
948 InjectBattleResult("S");
\r
949 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 0}));
\r
951 InjectMapNext(54, 5);
\r
952 InjectBattleResult("S");
\r
953 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1}));
\r
957 /// 893: 泊地周辺海域の安全確保を徹底せよ!
\r
960 public void BattleResult_893()
\r
962 var quest = InjectQuest(893);
\r
964 InjectMapNext(15, 4);
\r
965 InjectBattleResult("S");
\r
966 Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0}));
\r
968 InjectMapNext(15, 5);
\r
969 InjectBattleResult("A");
\r
970 Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0}), "A勝利はカウントしない");
\r
971 InjectBattleResult("S");
\r
972 Assert.IsTrue(CheckCount(quest, new[] {1, 0, 0, 0}), "1-5");
\r
974 InjectMapNext(71, 5);
\r
975 InjectBattleResult("S");
\r
976 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 0, 0}), "7-1");
\r
978 _questCounter.InspectMapNext(Js(new
\r
980 api_maparea_id = 7,
\r
981 api_mapinfo_no = 2,
\r
985 InjectBattleResult("S");
\r
986 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 0}), "7-2G");
\r
988 _questCounter.InspectMapNext(Js(new
\r
990 api_maparea_id = 7,
\r
991 api_mapinfo_no = 2,
\r
995 InjectBattleResult("S");
\r
996 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1}), "7-2M");
\r
1000 /// 894: 空母戦力の投入による兵站線戦闘哨戒
\r
1003 public void BattleResult_894()
\r
1005 var quest = InjectQuest(894);
\r
1006 _battleInfo.InjectResultStatus(
\r
1007 ShipStatusList(2, 2, 2, 2, 2, 2),
\r
1008 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
1010 InjectMapNext(13, 5);
\r
1011 InjectBattleResult("S");
\r
1012 Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0, 0}), "空母なしはカウントしない");
\r
1014 _battleInfo.Result.Friend.Main[0].Spec.ShipType = 7;
\r
1015 InjectBattleResult("A");
\r
1016 Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0, 0}), "A勝利はカウントしない");
\r
1018 InjectBattleResult("S");
\r
1019 Assert.IsTrue(CheckCount(quest, new[] {1, 0, 0, 0, 0}), "1-3");
\r
1021 InjectMapNext(14, 4);
\r
1022 InjectBattleResult("S");
\r
1023 Assert.IsTrue(CheckCount(quest, new[] {1, 0, 0, 0, 0}), "1-4");
\r
1025 InjectMapNext(14, 5);
\r
1026 InjectBattleResult("S");
\r
1027 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 0, 0, 0}), "1-4");
\r
1029 InjectMapNext(21, 5);
\r
1030 InjectBattleResult("S");
\r
1031 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 0, 0}), "2-1");
\r
1033 InjectMapNext(22, 5);
\r
1034 InjectBattleResult("S");
\r
1035 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1, 0}), "2-2");
\r
1037 InjectMapNext(23, 5);
\r
1038 InjectBattleResult("S");
\r
1039 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1, 1}), "2-3");
\r
1043 /// 280と854以降を同時に遂行していると854以降がカウントされないことがある
\r
1046 public void BattleResult_280_854()
\r
1048 _questInfo.InspectQuestList(CreateQuestList(new[] {280, 854}));
\r
1050 _battleInfo.InjectResultStatus(
\r
1051 ShipStatusList(1, 1, 1, 1, 1, 1), new ShipStatus[0],
\r
1052 new ShipStatus[0], new ShipStatus[0]);
\r
1054 InjectMapNext(24, 5);
\r
1055 InjectBattleResult("S");
\r
1056 Assert.IsTrue(_questInfo.Quests[1].Count.NowArray[0] == 1);
\r
1060 /// 888と893以降を同時に遂行していると893以降がカウントされないことがある
\r
1063 public void BattleResult_888_893()
\r
1065 _questInfo.InspectQuestList(CreateQuestList(new[] {888, 893}));
\r
1067 _battleInfo.InjectResultStatus(
\r
1068 ShipStatusList(1, 1, 1, 1, 1, 1), new ShipStatus[0],
\r
1069 new ShipStatus[0], new ShipStatus[0]);
\r
1071 InjectMapNext(71, 5);
\r
1072 InjectBattleResult("S");
\r
1073 Assert.IsTrue(_questInfo.Quests[1].Count.NowArray[1] == 1);
\r
1078 /// 303: 「演習」で練度向上!
\r
1079 /// 304: 「演習」で他提督を圧倒せよ!
\r
1084 public void PracticeResult_303_304_302_311_315()
\r
1086 _questInfo.InspectQuestList(CreateQuestList(new[] {302, 303, 304, 311, 315}));
\r
1088 _battleInfo.InjectResultStatus(new[]
\r
1090 ShipStatus(2, 543), ShipStatus(3, 488)
\r
1091 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
1092 InjectPracticeResult("C");
\r
1093 InjectPracticeResult("A");
\r
1094 PAssert.That(() =>
\r
1095 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
1096 .SequenceEqual(new[]
\r
1098 new {Id = 302, Now = 1}, new {Id = 303, Now = 2}, new {Id = 304, Now = 1},
\r
1099 new {Id = 311, Now = 1}, new {Id = 315, Now = 1}
\r
1104 /// 318: 給糧艦「伊良湖」の支援
\r
1107 public void PracticeResult_318()
\r
1109 _questInfo.InspectQuestList(CreateQuestList(new[] {318}));
\r
1110 var q318 = _questInfo.Quests[0];
\r
1112 _battleInfo.InjectResultStatus(new[]
\r
1114 ShipStatus(2, 543), ShipStatus(3, 488)
\r
1115 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
1117 InjectPracticeResult("B");
\r
1118 Assert.IsTrue(q318.Count.Now == 0, "軽巡1隻");
\r
1119 _battleInfo.Result.Friend.Main[0] = ShipStatus(3, 200);
\r
1120 _questCounter.StartPractice("api%5Fdeck%5Fid=2");
\r
1121 InjectPracticeResult("B");
\r
1122 Assert.IsTrue(q318.Count.Now == 0, "第2艦隊");
\r
1123 _questCounter.StartPractice("api%5Fdeck%5Fid=1"); // 第一艦隊
\r
1124 InjectPracticeResult("C");
\r
1125 Assert.IsTrue(q318.Count.Now == 0, "敗北");
\r
1126 InjectPracticeResult("B");
\r
1127 Assert.IsTrue(q318.Count.Now == 1);
\r
1129 q318.Count.Now = 2;
\r
1130 _questInfo.InspectQuestList(CreateQuestList(new[] {318}));
\r
1131 Assert.IsTrue(q318.Count.Now == 2, "進捗調節しない");
\r
1135 /// 330: 空母機動部隊、演習始め!
\r
1138 public void PracticeResult_330()
\r
1140 _questInfo.InspectQuestList(CreateQuestList(new[] {330}));
\r
1141 var q330 = _questInfo.Quests[0];
\r
1143 _battleInfo.InjectResultStatus(
\r
1144 ShipStatusList(18, 7, 2, 2),
\r
1145 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
1146 InjectPracticeResult("B");
\r
1147 Assert.AreEqual(1, q330.Count.Now, "装甲空母、軽空母");
\r
1149 _battleInfo.Result.Friend.Main = ShipStatusList(11, 7, 2, 2);
\r
1150 InjectPracticeResult("B");
\r
1151 Assert.AreEqual(2, q330.Count.Now, "正規空母、軽空母");
\r
1153 q330.Count.Now = 0;
\r
1154 InjectPracticeResult("C");
\r
1155 Assert.AreEqual(0, q330.Count.Now, "敗北");
\r
1157 _battleInfo.Result.Friend.Main = ShipStatusList(2, 7, 11, 2);
\r
1158 InjectPracticeResult("B");
\r
1159 Assert.AreEqual(0, q330.Count.Now, "旗艦空母以外");
\r
1161 _battleInfo.Result.Friend.Main = ShipStatusList(11, 2, 2, 2);
\r
1162 InjectPracticeResult("B");
\r
1163 Assert.AreEqual(0, q330.Count.Now, "空母一隻");
\r
1165 _battleInfo.Result.Friend.Main = ShipStatusList(11, 7, 3, 2);
\r
1166 InjectPracticeResult("B");
\r
1167 Assert.AreEqual(0, q330.Count.Now, "駆逐一隻");
\r
1171 /// 402: 「遠征」を3回成功させよう!
\r
1172 /// 403: 「遠征」を10回成功させよう!
\r
1173 /// 404: 大規模遠征作戦、発令!
\r
1174 /// 410: 南方への輸送作戦を成功させよ!
\r
1175 /// 411: 南方への鼠輸送を継続実施せよ!
\r
1178 public void MissionResult_402_403_404_410_411()
\r
1180 _questInfo.InspectQuestList(CreateQuestList(new[] {402, 403, 404, 410, 411}));
\r
1182 _questCounter.InspectDeck(Js(
\r
1185 new {api_id = 2, api_mission = new[] {2, 6}},
\r
1186 new {api_id = 3, api_mission = new[] {2, 37}},
\r
1187 new {api_id = 4, api_mission = new[] {2, 2}}
\r
1189 _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));
\r
1190 _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 2}));
\r
1191 _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 0}));
\r
1192 PAssert.That(() =>
\r
1193 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
1194 .SequenceEqual(new[]
\r
1196 new {Id = 402, Now = 2}, new {Id = 403, Now = 2}, new {Id = 404, Now = 2},
\r
1197 new {Id = 410, Now = 1}, new {Id = 411, Now = 1}
\r
1202 /// 426: 海上通商航路の警戒を厳とせよ!
\r
1205 public void MissionResult_426()
\r
1207 var quest = InjectQuest(426);
\r
1209 _questCounter.InspectDeck(Js(
\r
1212 new {api_id = 2, api_mission = new[] {2, 3}},
\r
1213 new {api_id = 3, api_mission = new[] {2, 4}},
\r
1214 new {api_id = 4, api_mission = new[] {2, 5}}
\r
1216 _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));
\r
1217 _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));
\r
1218 _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));
\r
1219 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 0}));
\r
1220 _questCounter.InspectDeck(Js(
\r
1223 new {api_id = 2, api_mission = new[] {2, 10}}
\r
1225 _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));
\r
1226 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1}));
\r
1230 /// 428: 近海に侵入する敵潜を制圧せよ!
\r
1233 public void MissionResult_428()
\r
1235 var quest = InjectQuest(428);
\r
1237 _questCounter.InspectDeck(Js(
\r
1240 new {api_id = 2, api_mission = new[] {2, 4}},
\r
1241 new {api_id = 3, api_mission = new[] {2, 101}},
\r
1242 new {api_id = 4, api_mission = new[] {2, 102}}
\r
1244 _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));
\r
1245 _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));
\r
1246 _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));
\r
1247 Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1}));
\r
1255 public void PowerUp_503_504()
\r
1257 _questInfo.InspectQuestList(CreateQuestList(new[] {503, 504}));
\r
1259 _questCounter.CountNyukyo();
\r
1260 _questCounter.CountCharge();
\r
1261 PAssert.That(() =>
\r
1262 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
1263 .SequenceEqual(new[] {new {Id = 503, Now = 1}, new {Id = 504, Now = 1}}));
\r
1267 /// 605: 新装備「開発」指令
\r
1268 /// 606: 新造艦「建造」指令
\r
1269 /// 607: 装備「開発」集中強化!
\r
1270 /// 608: 艦娘「建造」艦隊強化!
\r
1275 public void Kousyou_605_606_607_608_609_619()
\r
1277 _questInfo.InspectQuestList(CreateQuestList(new[] {605, 606, 607, 608, 609, 619}));
\r
1279 _questCounter.InspectCreateItem(
\r
1280 "api_verno=1&api_item1=10&api_item2=10&api_item3=30&api_item4=10&api_multiple_flag=0");
\r
1281 _questCounter.InspectCreateItem(
\r
1282 "api_verno=1&api_item1=10&api_item2=10&api_item3=30&api_item4=10&api_multiple_flag=1");
\r
1283 _questCounter.CountCreateShip();
\r
1284 _questCounter.InspectDestroyShip("api%5Fship%5Fid=98159%2C98166%2C98168&api%5Fverno=1");
\r
1285 _questCounter.CountRemodelSlot();
\r
1286 PAssert.That(() =>
\r
1287 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
1288 .SequenceEqual(new[]
\r
1290 new {Id = 605, Now = 4}, new {Id = 606, Now = 1}, new {Id = 607, Now = 4},
\r
1291 new {Id = 608, Now = 1}, new {Id = 609, Now = 3}, new {Id = 619, Now = 1}
\r
1298 /// 643: 主力「陸攻」の調達
\r
1299 /// 645: 「洋上補給」物資の調達
\r
1300 /// 663: 新型艤装の継続研究
\r
1303 /// 675: 運用装備の統合整備
\r
1304 /// 676: 装備開発力の集中整備
\r
1305 /// 677: 継戦支援能力の整備
\r
1306 /// 678: 主力艦上戦闘機の更新
\r
1307 /// 680: 対空兵装の整備拡充
\r
1311 public void DestroyItem_613_638_643_645_663_673_674_675_676_677_678_680_686_688()
\r
1313 _itemInfo.InjectItemSpec(new[]
\r
1315 new ItemSpec {Id = 1, Name = "12cm単装砲", Type = 1},
\r
1316 new ItemSpec {Id = 37, Name = "7.7mm機銃", Type = 21},
\r
1317 new ItemSpec {Id = 19, Name = "九六式艦戦", Type = 6},
\r
1318 new ItemSpec {Id = 4, Name = "14cm単装砲", Type = 2},
\r
1319 new ItemSpec {Id = 11, Name = "15.2cm単装砲", Type = 4},
\r
1320 new ItemSpec {Id = 75, Name = "ドラム缶(輸送用)", Type = 30},
\r
1321 new ItemSpec {Id = 7, Name = "35.6cm連装砲", Type = 3},
\r
1322 new ItemSpec {Id = 25, Name = "零式水上偵察機", Type = 10},
\r
1323 new ItemSpec {Id = 13, Name = "61cm三連装魚雷", Type = 5},
\r
1324 new ItemSpec {Id = 20, Name = "零式艦戦21型", Type = 6},
\r
1325 new ItemSpec {Id = 28, Name = "22号水上電探", Type = 12},
\r
1326 new ItemSpec {Id = 31, Name = "32号水上電探", Type = 13},
\r
1327 new ItemSpec {Id = 35, Name = "三式弾", Type = 18},
\r
1328 new ItemSpec {Id = 23, Name = "九九式艦爆", Type = 7},
\r
1329 new ItemSpec {Id = 16, Name = "九七式艦攻", Type = 8},
\r
1330 new ItemSpec {Id = 3, Name = "10cm連装高角砲", Type = 1},
\r
1331 new ItemSpec {Id = 121, Name = "94式高射装置", Type = 36}
\r
1333 var items = new[] {1, 37, 19, 4, 11, 75, 7, 25, 13, 20, 28, 31, 35, 23, 16, 3, 121};
\r
1334 _itemInfo.InjectItems(items);
\r
1335 var questList = new[] {613, 638, 643, 645, 663, 673, 674, 675, 676, 677, 678, 680, 686, 688};
\r
1336 _questInfo.AcceptMax = questList.Length;
\r
1337 _questInfo.InspectQuestList(CreateQuestList(questList));
\r
1338 _questCounter.InspectDestroyItem(
\r
1339 $"api%5Fslotitem%5Fids={string.Join("%2C", Enumerable.Range(1, items.Length))}&api%5Fverno=1", null);
\r
1340 var scalar = new[]
\r
1342 new {Id = 613, Now = 1}, new {Id = 638, Now = 1}, new {Id = 643, Now = 1}, new {Id = 645, Now = 1},
\r
1343 new {Id = 663, Now = 1}, new {Id = 673, Now = 2}, new {Id = 674, Now = 1}
\r
1345 foreach (var e in scalar)
\r
1347 var c = Array.Find(_questInfo.Quests, q => q.Id == e.Id).Count;
\r
1348 Assert.IsTrue(c.Id == e.Id && c.Now == e.Now, $"{c.Id}");
\r
1352 new {Id = 675, NowArray = new[] {2, 1}}, new {Id = 676, NowArray = new[] {1, 1, 1}},
\r
1353 new {Id = 677, NowArray = new[] {1, 1, 1}}, new {Id = 678, NowArray = new[] {1, 1}},
\r
1354 new {Id = 680, NowArray = new[] {1, 2}}, new {Id = 686, NowArray = new[] {1, 1}},
\r
1355 new {Id = 688, NowArray = new[] {2, 1, 1, 1}}
\r
1357 foreach (var e in array)
\r
1359 var c = Array.Find(_questInfo.Quests, q => q.Id == e.Id).Count;
\r
1360 Assert.IsTrue(c.Id == e.Id && c.NowArray.SequenceEqual(e.NowArray), $"{c.Id}");
\r
1365 /// 702: 艦の「近代化改修」を実施せよ!
\r
1366 /// 703: 「近代化改修」を進め、戦備を整えよ!
\r
1369 public void PowerUp_702_703()
\r
1371 _questInfo.InspectQuestList(CreateQuestList(new[] {702, 703}));
\r
1372 _questCounter.InspectPowerUp(Js(new {api_powerup_flag = 1}));
\r
1373 PAssert.That(() =>
\r
1374 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
1375 .SequenceEqual(new[] {new {Id = 702, Now = 1}, new {Id = 703, Now = 1}}));
\r