OSDN Git Service

兵站強化遠征任務【拡張作戦】でブルネイ泊地沖哨戒がカウントされないのを直す
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer.Test / QuestCounterTest.cs
index 8ed94f2..7033628 100644 (file)
@@ -14,9 +14,9 @@
 \r
 using System;\r
 using System.Linq;\r
+using DynaJson;\r
 using ExpressionToCodeLib;\r
 using KancolleSniffer.Model;\r
-using KancolleSniffer.Util;\r
 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
 \r
 namespace KancolleSniffer.Test\r
@@ -167,9 +167,36 @@ namespace KancolleSniffer.Test
                     new QuestCount {Id = 284, NowArray = new[] {1, 1, 1, 1}},\r
                     new QuestCount {Id = 226, Now = 2},\r
                     new QuestCount {Id = 436, NowArray = new[] {1, 0, 1, 1, 1}},\r
+                    new QuestCount {Id = 437, NowArray = new[] {1, 0, 1, 1}},\r
+                    new QuestCount {Id = 438, NowArray = new[] {1, 0, 1, 1}},\r
+                    new QuestCount {Id = 439, NowArray = new[] {1, 0, 1, 1}},\r
+                    new QuestCount {Id = 440, NowArray = new[] {1, 0, 1, 1, 1}}\r
                 }\r
             };\r
-            new QuestInfo().LoadState(status);\r
+            var countList = new QuestCountList();\r
+            countList.SetMissionNames(new JsonObject(new[]\r
+            {\r
+                new {api_id = 1, api_name = "練習航海"},\r
+                new {api_id = 2, api_name = "長距離練習航海"},\r
+                new {api_id = 3, api_name = "警備任務"},\r
+                new {api_id = 4, api_name = "対潜警戒任務"},\r
+                new {api_id = 5, api_name = "海上護衛任務"},\r
+                new {api_id = 9, api_name = "タンカー護衛任務"},\r
+                new {api_id = 10, api_name = "強行偵察任務"},\r
+                new {api_id = 11, api_name = "ボーキサイト輸送任務"},\r
+                new {api_id = 40, api_name = "水上機前線輸送"},\r
+                new {api_id = 41, api_name = "ブルネイ泊地沖哨戒"},\r
+                new {api_id = 46, api_name = "南西海域戦闘哨戒"},\r
+                new {api_id = 100, api_name = "兵站強化任務"},\r
+                new {api_id = 101, api_name = "海峡警備行動"},\r
+                new {api_id = 102, api_name = "長時間対潜警戒"},\r
+                new {api_id = 104, api_name = "小笠原沖哨戒線"},\r
+                new {api_id = 105, api_name = "小笠原沖戦闘哨戒"},\r
+                new {api_id = 110, api_name = "南西方面航空偵察作戦"},\r
+                new {api_id = 114, api_name = "南西諸島捜索撃滅戦"},\r
+                new {api_id = 142, api_name = "強行鼠輸送作戦"}\r
+            }));\r
+            new QuestInfo(countList).LoadState(status);\r
             Assert.AreEqual("2/3", status.QuestCountList[0].ToString());\r
             Assert.AreEqual("20/36 7/6 10/24 8/12", status.QuestCountList[1].ToString());\r
             var z = status.QuestCountList[2];\r
@@ -179,7 +206,7 @@ namespace KancolleSniffer.Test
             Assert.AreEqual("2-4:0 6-1:0 6-3:0 6-4:0", z.ToToolTip());\r
             var q426 = status.QuestCountList[3];\r
             Assert.AreEqual("1\u200a1\u200a1\u200a1", q426.ToString());\r
-            Assert.AreEqual("警備任務1 対潜警戒任務1 海上護衛任務1 強偵察任務1", q426.ToToolTip());\r
+            Assert.AreEqual("警備任務1 対潜警戒任務1 海上護衛任務1 強偵察任務1", q426.ToToolTip());\r
             var q428 = status.QuestCountList[4];\r
             Assert.AreEqual("対潜警戒任務1 海峡警備行動1 長時間対潜警戒1", q428.ToToolTip());\r
             q428.NowArray = new[] {0, 1, 0};\r
@@ -212,13 +239,25 @@ namespace KancolleSniffer.Test
             var q436 = status.QuestCountList.First(q => q.Id == 436);\r
             Assert.AreEqual("1\u200a0\u200a1\u200a1\u200a1", q436.ToString());\r
             Assert.AreEqual("練習航海1 長距離練習航海0 警備任務1 対潜警戒任務1 強行偵察任務1", q436.ToToolTip());\r
+            var q437 = status.QuestCountList.First(q => q.Id == 437);\r
+            Assert.AreEqual("1\u200a0\u200a1\u200a1", q437.ToString());\r
+            Assert.AreEqual("対潜警戒任務1 小笠原沖哨戒線0 小笠原沖戦闘哨戒1 南西方面航空偵察作戦1", q437.ToToolTip());\r
+            var q438 = status.QuestCountList.First(q => q.Id == 438);\r
+            Assert.AreEqual("1\u200a0\u200a1\u200a1", q438.ToString());\r
+            Assert.AreEqual("対潜警戒任務1 兵站強化任務0 タンカー護衛任務1 南西諸島捜索撃滅戦1", q438.ToToolTip());\r
+            var q439 = status.QuestCountList.First(q => q.Id == 439);\r
+            Assert.AreEqual("1\u200a0\u200a1\u200a1", q439.ToString());\r
+            Assert.AreEqual("海上護衛任務1 兵站強化任務0 ボーキサイト輸送任務1 南西方面航空偵察作戦1", q439.ToToolTip());\r
+            var q440 = status.QuestCountList.First(q => q.Id == 440);\r
+            Assert.AreEqual("1\u200a0\u200a1\u200a1\u200a1", q440.ToString());\r
+            Assert.AreEqual("海上護衛任務1 ブルネイ泊地沖哨戒0 南西海域戦闘哨戒1 水上機前線輸送1 強行鼠輸送作戦1", q440.ToToolTip());\r
         }\r
     }\r
 \r
     [TestClass]\r
     public class QuestCounterTest\r
     {\r
-        private JsonObject Js(object obj) => JsonObject.CreateJsonObject(obj);\r
+        private JsonObject Js(object obj) => new JsonObject(obj);\r
 \r
         private object CreateQuestList(int[] ids) => Js(new\r
         {\r
@@ -238,10 +277,15 @@ namespace KancolleSniffer.Test
 \r
         private QuestCount InjectQuest(int id)\r
         {\r
-            _questInfo.InspectQuestList(CreateQuestList(new[] {id}));\r
+            InjectQuestList(new[] {id});\r
             return _questInfo.Quests[0].Count;\r
         }\r
 \r
+        private void InjectQuestList(int[] ids)\r
+        {\r
+            _questInfo.InspectQuestList("api_tab_id=0", CreateQuestList(ids));\r
+        }\r
+\r
         private void InjectMapStart(int map, int eventId)\r
         {\r
             _questCounter.InspectMapStart(CreateMap(map, eventId));\r
@@ -304,7 +348,7 @@ namespace KancolleSniffer.Test
         {\r
             _battleInfo = new BattleInfo(null, null, null);\r
             _itemInfo = new ItemInfo(new ItemMaster(), new ItemInventory());\r
-            _questInfo = new QuestInfo(() => new DateTime(2015, 1, 1)) {AcceptMax = 10};\r
+            _questInfo = new QuestInfo(new QuestCountList(), () => new DateTime(2015, 1, 1));\r
             _questCounter = new QuestCounter(_questInfo, _itemInfo, _battleInfo);\r
         }\r
 \r
@@ -317,7 +361,7 @@ namespace KancolleSniffer.Test
         [TestMethod]\r
         public void BattleResult_201_216_210_214()\r
         {\r
-            _questInfo.InspectQuestList(CreateQuestList(new[] {201, 216, 210, 214}));\r
+            InjectQuestList(new[] {201, 216, 210, 214});\r
 \r
             InjectMapStart(11, 4);\r
             var counts = _questInfo.Quests.Select(q => q.Count).ToArray();\r
@@ -350,6 +394,10 @@ namespace KancolleSniffer.Test
                 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}\r
             }));\r
             PAssert.That(() => counts[2].NowArray.SequenceEqual(new[] {1, 1, 2, 1}));\r
+\r
+            // 1-6 ゴール\r
+            InjectMapNext(16,8);\r
+            Assert.AreEqual(2, counts[0].Now);\r
         }\r
 \r
         /// <summary>\r
@@ -361,7 +409,7 @@ namespace KancolleSniffer.Test
         [TestMethod]\r
         public void BattleResult_211_212_213_218_220_221()\r
         {\r
-            _questInfo.InspectQuestList(CreateQuestList(new[] {211, 212, 213, 218, 220, 221}));\r
+            InjectQuestList(new[] {211, 212, 213, 218, 220, 221});\r
             // 補給艦1隻と空母2隻\r
             _battleInfo.InjectResultStatus(new ShipStatus[0], new ShipStatus[0], new[]\r
             {\r
@@ -389,7 +437,7 @@ namespace KancolleSniffer.Test
         [TestMethod]\r
         public void BattleResult_228_230()\r
         {\r
-            _questInfo.InspectQuestList(CreateQuestList(new[] {228, 230}));\r
+            InjectQuestList(new[] {228, 230});\r
             // 潜水艦3\r
             _battleInfo.InjectResultStatus(new ShipStatus[0], new ShipStatus[0], new[]\r
             {\r
@@ -721,7 +769,7 @@ namespace KancolleSniffer.Test
         [TestMethod]\r
         public void BattleResult_822_854()\r
         {\r
-            _questInfo.InspectQuestList(CreateQuestList(new[] {822, 854}));\r
+            InjectQuestList(new[] {822, 854});\r
             var c822 = _questInfo.Quests[0].Count;\r
             var c854 = _questInfo.Quests[1].Count;\r
 \r
@@ -1103,6 +1151,10 @@ namespace KancolleSniffer.Test
             InjectBattleResult("S");\r
             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "ボス以外はカウントしない");\r
 \r
+            _battleInfo.Result.Friend.Main[0] = ShipStatus("夕張改");\r
+            InjectBattleResult("S");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "旗艦が夕張改");\r
+\r
             _battleInfo.Result.Friend.Main = new[] {ShipStatus("睦月"), ShipStatus("如月"), ShipStatus("夕張改二")};\r
             InjectMapNext(54, 5);\r
             InjectBattleResult("S");\r
@@ -1121,6 +1173,14 @@ namespace KancolleSniffer.Test
             InjectMapNext(65, 5);\r
             InjectBattleResult("S");\r
             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "6-5");\r
+\r
+            _battleInfo.Result.Friend.Main = new[] {ShipStatus("夕張改二"), ShipStatus("由良改")};\r
+            InjectBattleResult("S");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "由良改");\r
+\r
+            _battleInfo.Result.Friend.Main = new[] {ShipStatus("夕張改二"), ShipStatus("由良改二")};\r
+            InjectBattleResult("S");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 2}), "由良改二");\r
         }\r
 \r
         /// <summary>\r
@@ -1131,7 +1191,7 @@ namespace KancolleSniffer.Test
         {\r
             var count = InjectQuest(904);\r
             _battleInfo.InjectResultStatus(\r
-                new []{ShipStatus("綾波改二"), ShipStatus("敷波")},\r
+                new[] {ShipStatus("綾波改二"), ShipStatus("敷波")},\r
                 new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
 \r
             InjectMapNext(25, 5);\r
@@ -1210,12 +1270,105 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 912: 工作艦「明石」護衛任務\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void BattleResult_912()\r
+        {\r
+            var count = InjectQuest(912);\r
+            _battleInfo.InjectResultStatus(\r
+                new[] {ShipStatus("明石"), ShipStatus(2), ShipStatus(2), ShipStatus(1)},\r
+                new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
+\r
+            InjectMapNext(13, 5);\r
+            InjectBattleResult("A");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}), "駆逐艦2隻はカウントしない");\r
+\r
+            _battleInfo.Result.Friend.Main[3] = ShipStatus(2);\r
+            InjectBattleResult("B");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0, 0}), "B勝利はカウントしない");\r
+\r
+            InjectBattleResult("A");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "1-3");\r
+\r
+            InjectMapNext(21, 4);\r
+            InjectBattleResult("A");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "ボス以外はカウントしない");\r
+\r
+            _battleInfo.Result.Friend.Main[0] = ShipStatus(2);\r
+            _battleInfo.Result.Friend.Main[1] = ShipStatus("明石");\r
+            InjectMapNext(21, 5);\r
+            InjectBattleResult("A");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0, 0}), "旗艦明石以外はカウントしない");\r
+\r
+            _battleInfo.Result.Friend.Main[0] = ShipStatus("明石");\r
+            _battleInfo.Result.Friend.Main[1] = ShipStatus(2);\r
+            InjectBattleResult("A");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0, 0}), "2-1");\r
+\r
+            InjectMapNext(22, 5);\r
+            InjectBattleResult("A");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0, 0}), "2-2");\r
+\r
+            InjectMapNext(23, 5);\r
+            InjectBattleResult("A");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 0}), "2-3");\r
+\r
+            InjectMapNext(16, 8);\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}), "1-6");\r
+        }\r
+\r
+        /// <summary>\r
+        /// 912: 重巡戦隊、西へ!\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void BattleResult_914()\r
+        {\r
+            var count = InjectQuest(914);\r
+            _battleInfo.InjectResultStatus(\r
+                new[] {ShipStatus(5), ShipStatus(5), ShipStatus(5), ShipStatus(1)},\r
+                new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
+\r
+            InjectMapNext(41, 5);\r
+            InjectBattleResult("A");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "駆逐艦なしはカウントしない");\r
+\r
+            _battleInfo.Result.Friend.Main[3] = ShipStatus(2);\r
+            InjectBattleResult("B");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}), "B勝利はカウントしない");\r
+\r
+            InjectBattleResult("A");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "4-1");\r
+\r
+            InjectMapNext(42, 4);\r
+            InjectBattleResult("A");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "ボス以外はカウントしない");\r
+\r
+            InjectMapNext(42, 5);\r
+            _battleInfo.Result.Friend.Main[0] = ShipStatus(6);\r
+            InjectBattleResult("A");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 0, 0, 0}), "重巡2隻はカウントしない");\r
+\r
+            _battleInfo.Result.Friend.Main[0] = ShipStatus(5);\r
+            InjectBattleResult("A");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 0}), "4-2");\r
+\r
+            InjectMapNext(43, 5);\r
+            InjectBattleResult("A");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}), "4-3");\r
+\r
+            InjectMapNext(44, 5);\r
+            InjectBattleResult("A");\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}), "4-3");\r
+        }\r
+\r
+        /// <summary>\r
         /// 280と854以降を同時に遂行していると854以降がカウントされないことがある\r
         /// </summary>\r
         [TestMethod]\r
         public void BattleResult_280_854()\r
         {\r
-            _questInfo.InspectQuestList(CreateQuestList(new[] {280, 854}));\r
+            InjectQuestList(new[] {280, 854});\r
 \r
             _battleInfo.InjectResultStatus(\r
                 ShipStatusList(1, 1, 1, 1, 1, 1), new ShipStatus[0],\r
@@ -1232,7 +1385,7 @@ namespace KancolleSniffer.Test
         [TestMethod]\r
         public void BattleResult_888_893()\r
         {\r
-            _questInfo.InspectQuestList(CreateQuestList(new[] {888, 893}));\r
+            InjectQuestList(new[] {888, 893});\r
 \r
             _battleInfo.InjectResultStatus(\r
                 ShipStatusList(1, 1, 1, 1, 1, 1), new ShipStatus[0],\r
@@ -1253,7 +1406,7 @@ namespace KancolleSniffer.Test
         [TestMethod]\r
         public void PracticeResult_303_304_302_311_315()\r
         {\r
-            _questInfo.InspectQuestList(CreateQuestList(new[] {302, 303, 304, 311, 315}));\r
+            InjectQuestList(new[] {302, 303, 304, 311, 315});\r
 \r
             _battleInfo.InjectResultStatus(new[]\r
             {\r
@@ -1296,7 +1449,7 @@ namespace KancolleSniffer.Test
             Assert.AreEqual(1, count.Now);\r
 \r
             count.Now = 2;\r
-            _questInfo.InspectQuestList(CreateQuestList(new[] {318}));\r
+            InjectQuestList(new[] {318});\r
             Assert.AreEqual(2, count.Now, "進捗調節しない");\r
         }\r
 \r
@@ -1346,7 +1499,7 @@ namespace KancolleSniffer.Test
         {\r
             var count = InjectQuest(337);\r
 \r
-            _battleInfo.InjectResultStatus(new []\r
+            _battleInfo.InjectResultStatus(new[]\r
             {\r
                 ShipStatus("霰"), ShipStatus("霰"),\r
                 ShipStatus("陽炎"), ShipStatus("不知火"),\r
@@ -1372,7 +1525,7 @@ namespace KancolleSniffer.Test
         {\r
             var count = InjectQuest(339);\r
 \r
-            _battleInfo.InjectResultStatus(new []\r
+            _battleInfo.InjectResultStatus(new[]\r
             {\r
                 ShipStatus("磯波"), ShipStatus("浦波"),\r
                 ShipStatus("綾波"), ShipStatus("敷波"),\r
@@ -1388,6 +1541,39 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 342: 小艦艇群演習強化任務\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void PracticeResult_342()\r
+        {\r
+            var count = InjectQuest(342);\r
+\r
+            _battleInfo.InjectResultStatus(new[] {ShipStatus(1), ShipStatus(1), ShipStatus(2), ShipStatus(5)},\r
+                new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
+            InjectPracticeResult("A");\r
+            Assert.AreEqual(0, count.Now);\r
+\r
+            InjectPracticeResult("B");\r
+            Assert.AreEqual(0, count.Now);\r
+\r
+            _battleInfo.Result.Friend.Main[3] = ShipStatus(2);\r
+            InjectPracticeResult("A");\r
+            Assert.AreEqual(1, count.Now);\r
+\r
+            _battleInfo.Result.Friend.Main[3] = ShipStatus(3);\r
+            InjectPracticeResult("A");\r
+            Assert.AreEqual(2, count.Now);\r
+\r
+            _battleInfo.Result.Friend.Main[3] = ShipStatus(4);\r
+            InjectPracticeResult("A");\r
+            Assert.AreEqual(3, count.Now);\r
+\r
+            _battleInfo.Result.Friend.Main[3] = ShipStatus(21);\r
+            InjectPracticeResult("A");\r
+            Assert.AreEqual(4, count.Now);\r
+        }\r
+\r
+        /// <summary>\r
         /// 402: 「遠征」を3回成功させよう!\r
         /// 403: 「遠征」を10回成功させよう!\r
         /// 404: 大規模遠征作戦、発令!\r
@@ -1397,7 +1583,7 @@ namespace KancolleSniffer.Test
         [TestMethod]\r
         public void MissionResult_402_403_404_410_411()\r
         {\r
-            _questInfo.InspectQuestList(CreateQuestList(new[] {402, 403, 404, 410, 411}));\r
+            InjectQuestList(new[] {402, 403, 404, 410, 411});\r
 \r
             _questCounter.InspectDeck(Js(\r
                 new[]\r
@@ -1499,13 +1685,131 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 437: 小笠原沖哨戒線の強化を実施せよ!\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void MissionResult_437()\r
+        {\r
+            var count = InjectQuest(437);\r
+\r
+            _questCounter.InspectDeck(Js(\r
+                new[]\r
+                {\r
+                    new {api_id = 2, api_mission = new[] {2, 4}},\r
+                    new {api_id = 3, api_mission = new[] {2, 104}},\r
+                    new {api_id = 4, api_mission = new[] {2, 105}}\r
+                }));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}));\r
+\r
+            _questCounter.InspectDeck(Js(\r
+                new[]\r
+                {\r
+                    new {api_id = 2, api_mission = new[] {2, 110}}\r
+                }));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
+        }\r
+\r
+        /// <summary>\r
+        /// 438: 南西諸島方面の海上護衛を強化せよ!\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void MissionResult_438()\r
+        {\r
+            var count = InjectQuest(438);\r
+\r
+            _questCounter.InspectDeck(Js(\r
+                new[]\r
+                {\r
+                    new {api_id = 2, api_mission = new[] {2, 4}},\r
+                    new {api_id = 3, api_mission = new[] {2, 100}},\r
+                    new {api_id = 4, api_mission = new[] {2, 9}}\r
+                }));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new { api_clear_result = 1 }));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new { api_clear_result = 1 }));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new { api_clear_result = 1 }));\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] { 1, 1, 1, 0 }));\r
+\r
+            _questCounter.InspectDeck(Js(\r
+                new[]\r
+                {\r
+                    new {api_id = 2, api_mission = new[] {2, 114}}\r
+                }));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new { api_clear_result = 1 }));\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] { 1, 1, 1, 1 }));\r
+        }\r
+\r
+        /// <summary>\r
+        /// 439: 兵站強化遠征任務【基本作戦】\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void MissionResult_439()\r
+        {\r
+            var count = InjectQuest(439);\r
+\r
+            _questCounter.InspectDeck(Js(\r
+                new[]\r
+                {\r
+                    new {api_id = 2, api_mission = new[] {2, 5}},\r
+                    new {api_id = 3, api_mission = new[] {2, 100}},\r
+                    new {api_id = 4, api_mission = new[] {2, 11}}\r
+                }));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}));\r
+\r
+            _questCounter.InspectDeck(Js(\r
+                new[]\r
+                {\r
+                    new {api_id = 2, api_mission = new[] {2, 110}}\r
+                }));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
+        }\r
+\r
+        /// <summary>\r
+        /// 440: 兵站強化遠征任務【拡張作戦】\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void MissionResult_440()\r
+        {\r
+            var count = InjectQuest(440);\r
+\r
+            _questCounter.InspectDeck(Js(\r
+                new[]\r
+                {\r
+                    new {api_id = 2, api_mission = new[] {2, 41}},\r
+                    new {api_id = 3, api_mission = new[] {2, 5}},\r
+                    new {api_id = 4, api_mission = new[] {2, 40}}\r
+                }));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0, 1, 0}));\r
+\r
+            _questCounter.InspectDeck(Js(\r
+                new[]\r
+                {\r
+                    new {api_id = 2, api_mission = new[] {2, 142}},\r
+                    new {api_id = 3, api_mission = new[] {2, 46}}\r
+                }));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new { api_clear_result = 1 }));\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}));\r
+        }\r
+\r
+        /// <summary>\r
         /// 503: 艦隊大整備!\r
         /// 504: 艦隊酒保祭り!\r
         /// </summary>\r
         [TestMethod]\r
         public void PowerUp_503_504()\r
         {\r
-            _questInfo.InspectQuestList(CreateQuestList(new[] {503, 504}));\r
+            InjectQuestList(new[] {503, 504});\r
 \r
             _questCounter.CountNyukyo();\r
             _questCounter.CountCharge();\r
@@ -1525,7 +1829,7 @@ namespace KancolleSniffer.Test
         [TestMethod]\r
         public void Kousyou_605_606_607_608_609_619()\r
         {\r
-            _questInfo.InspectQuestList(CreateQuestList(new[] {605, 606, 607, 608, 609, 619}));\r
+            InjectQuestList(new[] {605, 606, 607, 608, 609, 619});\r
 \r
             _questCounter.InspectCreateItem(\r
                 "api_verno=1&api_item1=10&api_item2=10&api_item3=30&api_item4=10&api_multiple_flag=0");\r
@@ -1585,10 +1889,9 @@ namespace KancolleSniffer.Test
             var items = new[] {1, 37, 19, 4, 11, 75, 7, 25, 13, 20, 28, 31, 35, 23, 16, 3, 121};\r
             _itemInfo.InjectItems(items);\r
             var questList = new[] {613, 638, 643, 645, 653, 663, 673, 674, 675, 676, 677, 678, 680, 686, 688};\r
-            _questInfo.AcceptMax = questList.Length;\r
-            _questInfo.InspectQuestList(CreateQuestList(questList));\r
+            InjectQuestList(questList);\r
             _questCounter.InspectDestroyItem(\r
-                $"api%5Fslotitem%5Fids={string.Join("%2C", Enumerable.Range(1, items.Length))}&api%5Fverno=1", null);\r
+                $"api%5Fslotitem%5Fids={string.Join("%2C", Enumerable.Range(1, items.Length))}&api%5Fverno=1");\r
             var scalar = new[]\r
             {\r
                 new {Id = 613, Now = 1}, new {Id = 638, Now = 1}, new {Id = 643, Now = 1}, new {Id = 645, Now = 1},\r
@@ -1622,7 +1925,7 @@ namespace KancolleSniffer.Test
         [TestMethod]\r
         public void PowerUp_702_703()\r
         {\r
-            _questInfo.InspectQuestList(CreateQuestList(new[] {702, 703}));\r
+            InjectQuestList(new[] {702, 703});\r
             _questCounter.InspectPowerUp(Js(new {api_powerup_flag = 1}));\r
             PAssert.That(() =>\r
                 _questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r