OSDN Git Service

「海防艦」、海を護る!のカウンターを実装する
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer.Test / LoggerTest.cs
index bcbebca..cfd1640 100644 (file)
@@ -1,32 +1,40 @@
-// Copyright (C) 2014 Kazuhiro Fujieda <fujieda@users.sourceforge.jp>\r
+// Copyright (C) 2014, 2015 Kazuhiro Fujieda <fujieda@users.osdn.me>\r
 // \r
-// This program is part of KancolleSniffer.\r
+// Licensed under the Apache License, Version 2.0 (the "License");\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
 //\r
-// KancolleSniffer is free software: you can redistribute it and/or modify\r
-// it under the terms of the GNU General Public License as published by\r
-// the Free Software Foundation, either version 3 of the License, or\r
-// (at your option) any later version.\r
+//    http://www.apache.org/licenses/LICENSE-2.0\r
 //\r
-// This program is distributed in the hope that it will be useful,\r
-// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-// GNU General Public License for more details.\r
-//\r
-// You should have received a copy of the GNU General Public License\r
-// along with this program; if not, see <http://www.gnu.org/licenses/>.\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an "AS IS" BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
 \r
 using System;\r
 using System.Collections.Generic;\r
 using System.IO;\r
 using ExpressionToCodeLib;\r
+using KancolleSniffer.Log;\r
+using KancolleSniffer.Util;\r
 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
 using Moq;\r
 \r
 namespace KancolleSniffer.Test\r
 {\r
+    using Sniffer = SnifferTest.TestingSniffer;\r
+\r
     [TestClass]\r
     public class LoggerTest\r
     {\r
+        [TestInitialize]\r
+        public void Initialize()\r
+        {\r
+            ExpressionToCodeConfiguration.GlobalAssertionConfiguration = ExpressionToCodeConfiguration\r
+                .GlobalAssertionConfiguration.WithPrintedListLengthLimit(200).WithMaximumValueLength(1000);\r
+        }\r
+\r
         [TestMethod]\r
         public void InspectMissionResult()\r
         {\r
@@ -41,11 +49,30 @@ namespace KancolleSniffer.Test
             sniffer.SkipMaster();\r
             sniffer.EnableLog(LogType.Mission);\r
             SnifferTest.SniffLogFile(sniffer, "mission_result_001");\r
-            PAssert.That(() => "日付,結果,遠征,燃料,弾薬,鋼材,ボーキ,開発資材,高速修復材,高速建造材" == header);\r
-            PAssert.That(() => "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,0,0|" +\r
-                               "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,1,0|" +\r
-                               "2015-01-01 00:00:00,大成功,MO作戦,0,0,360,420,1,0,0|" +\r
-                               "2015-01-01 00:00:00,失敗,東京急行(弐),0,0,0,0,0,0,0|"\r
+            PAssert.That(() => "日付,結果,遠征,燃料,弾薬,鋼材,ボーキ,開発資材,高速修復材,高速建造材,改修資材" == header);\r
+            PAssert.That(() => "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,0,0,0|" +\r
+                               "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,1,0,0|" +\r
+                               "2015-01-01 00:00:00,大成功,MO作戦,0,0,360,420,1,0,0,0|" +\r
+                               "2015-01-01 00:00:00,失敗,東京急行(弐),0,0,0,0,0,0,0,0|"\r
+                               == result);\r
+        }\r
+\r
+        [TestMethod]\r
+        public void MissionResultGetScrew()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            var result = "";\r
+            var header = "";\r
+            sniffer.SetLogWriter((path, s, h) =>\r
+            {\r
+                result += s + "|";\r
+                header = h;\r
+            }, () => new DateTime(2019, 1, 1));\r
+            sniffer.SkipMaster();\r
+            sniffer.EnableLog(LogType.Mission);\r
+            SnifferTest.SniffLogFile(sniffer, "mission_result_002");\r
+            PAssert.That(() => "日付,結果,遠征,燃料,弾薬,鋼材,ボーキ,開発資材,高速修復材,高速建造材,改修資材" == header);\r
+            PAssert.That(() => "2019-01-01 00:00:00,大成功,南西諸島離島防衛作戦,0,0,1800,975,0,0,0,1|"\r
                                == result);\r
         }\r
 \r
@@ -56,7 +83,7 @@ namespace KancolleSniffer.Test
         public void WriteTmpFileWhenCantWriteTarget()\r
         {\r
             var mock = new Mock<LogWriter.IFile>();\r
-            var writer = new LogWriter(mock.Object);\r
+            var writer = new LogWriter(null, mock.Object);\r
 \r
             const string str = "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,0,0";\r
             var tmp = "";\r
@@ -80,7 +107,7 @@ namespace KancolleSniffer.Test
         }\r
 \r
         [TestMethod]\r
-        public void FaileToMergeTmpFile()\r
+        public void FailToMergeTmpFile()\r
         {\r
             MergeTmpFileMain(true);\r
         }\r
@@ -88,7 +115,7 @@ namespace KancolleSniffer.Test
         private void MergeTmpFileMain(bool failToMerge)\r
         {\r
             var mock = new Mock<LogWriter.IFile>();\r
-            var writer = new LogWriter(mock.Object);\r
+            var writer = new LogWriter(null, mock.Object);\r
 \r
             var tmp = "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,0,0\r\n";\r
             var csv = "";\r
@@ -120,39 +147,83 @@ namespace KancolleSniffer.Test
         {\r
             var sniffer = new Sniffer();\r
             var result = "";\r
-            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2017, 1, 1));\r
             sniffer.EnableLog(LogType.Battle);\r
-            SnifferTest.SniffLogFile(sniffer, "battle_004");\r
-            PAssert.That(() => "2015-01-01 00:00:00,珊瑚諸島沖,1,,S,同航戦,単縦陣,単縦陣,敵前衛艦隊,重巡洋艦,青葉," +\r
-                               "武蔵改(Lv133),86/106,扶桑改二(Lv87),77/77,北上改二(Lv113),49/49,飛龍改二(Lv133),63/74,蒼龍改二(Lv133),74/74,龍鳳改(Lv97),48/48," +\r
-                               "軽巡ヘ級(flagship),57/57,重巡リ級(flagship),76/76,重巡リ級(flagship),76/76,雷巡チ級(elite),50/50,駆逐ニ級(elite),45/45,駆逐ニ級(elite),45/45|" +\r
-                               "2015-01-01 00:00:00,珊瑚諸島沖,2,,B,反航戦,単横陣,単横陣,敵潜水艦隊,,," +\r
-                               "武蔵改(Lv133),86/106,扶桑改二(Lv87),77/77,北上改二(Lv113),46/49,飛龍改二(Lv133),63/74,蒼龍改二(Lv133),74/74,龍鳳改(Lv97),48/48," +\r
-                               "潜水ヨ級(flagship),44/44,潜水カ級(elite),27/27,潜水カ級(elite),27/27,潜水カ級(elite),27/27,潜水カ級,19/19,潜水カ級,19/19|" +\r
-                               "2015-01-01 00:00:00,珊瑚諸島沖,4,,S,反航戦,単縦陣,単縦陣,敵水上打撃部隊,戦艦,扶桑," +\r
-                               "武蔵改(Lv133),86/106,扶桑改二(Lv87),77/77,北上改二(Lv113),46/49,飛龍改二(Lv133),63/74,蒼龍改二(Lv133),45/74,龍鳳改(Lv97),48/48," +\r
-                               "戦艦タ級(flagship),90/90,重巡リ級(flagship),76/76,重巡リ級(flagship),76/76,雷巡チ級(elite),50/50,駆逐ロ級(flagship),43/43,駆逐ニ級(elite),45/45|" +\r
-                               "2015-01-01 00:00:00,珊瑚諸島沖,10,ボス,S,反航戦,単縦陣,単縦陣,敵機動部隊本隊,戦艦,山城," +\r
-                               "武蔵改(Lv133),86/106,扶桑改二(Lv87),77/77,北上改二(Lv113),46/49,飛龍改二(Lv133),63/74,蒼龍改二(Lv133),39/74,龍鳳改(Lv97),48/48," +\r
-                               "装甲空母姫,270/270,空母ヲ級(elite),88/88,戦艦タ級(flagship),90/90,重巡リ級(elite),60/60,軽巡ホ級(flagship),53/53,駆逐ハ級(flagship),47/47|"\r
-                               == result);\r
+            SnifferTest.SniffLogFile(sniffer, "battle_001");\r
+            PAssert.That(() =>\r
+                "2017-01-01 00:00:00,カレー洋制圧戦,1,出撃,A,T字戦(有利),警戒陣,梯形陣,敵潜水教導艦隊,,," +\r
+                "隼鷹改二(Lv157),57/62,利根改二(Lv151),66/66,千代田航改二(Lv159),50/65,千歳航改二(Lv159),65/65,大井改二(Lv57),40/43,秋月改(Lv142),42/42," +\r
+                "潜水ヨ級(elite),34/34,潜水ヨ級,5/24,潜水ヨ級,0/24,潜水カ級(elite),0/27,潜水カ級,0/19,潜水カ級,0/19,248~249,0,制空権確保,4-2|"\r
+                == result);\r
         }\r
 \r
+        /// <summary>\r
+        /// 7隻編成の場合は7隻目を6隻目に重ねる\r
+        /// </summary>\r
         [TestMethod]\r
-        public void InspectCombinedBattleResult()\r
+        public void InspectShip7BattleResult()\r
         {\r
             var sniffer = new Sniffer();\r
             var result = "";\r
-            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2017, 1, 1));\r
             sniffer.EnableLog(LogType.Battle);\r
-            SnifferTest.SniffLogFile(sniffer, "combined_surface_001");\r
-            PAssert.That(() => "2015-01-01 00:00:00,南西方面海域,3,,S,同航戦,第四警戒航行序列,単縦陣,ピケット水雷戦隊 A群,,," +\r
-                               "あきつ丸改(Lv68),40/40,山城改二(Lv85),77/77,扶桑改二(Lv85),77/77,利根改二(Lv117),59/66,筑摩改二(Lv117),51/65,神通改二(Lv97),47/50," +\r
-                               "軽巡ツ級(elite),66/66,軽巡ト級(elite),55/55,駆逐イ級後期型,35/35,駆逐イ級後期型,35/35,駆逐イ級後期型,35/35,駆逐イ級後期型,35/35|" +\r
-                               "2015-01-01 00:00:00,南西方面海域,7,,S,同航戦,第四警戒航行序列,複縦陣,任務部隊 D群,駆逐艦,満潮," +\r
-                               "あきつ丸改(Lv68),40/40,山城改二(Lv85),77/77,扶桑改二(Lv85),77/77,利根改二(Lv117),33/66,筑摩改二(Lv117),51/65,神通改二(Lv97),47/50," +\r
-                               "戦艦タ級(flagship),90/90,軽母ヌ級(flagship),84/84,軽巡ト級(elite),55/55,軽巡ト級(elite),55/55,駆逐ロ級後期型,37/37,駆逐ロ級後期型,37/37|"\r
-                               == result);\r
+            SnifferTest.SniffLogFile(sniffer, "ship7battle_001");\r
+            PAssert.That(() =>\r
+                "2017-01-01 00:00:00,台湾沖/ルソン島沖,5,出撃,S,同航戦,単縦陣,単縦陣,深海通商破部隊 前衛水雷戦隊,,," +\r
+                "あきつ丸改(Lv81),40/40,那智改二(Lv151),63/63,Roma改(Lv99),83/92,阿武隈改二(Lv98),40/45,霞改二(Lv96),13/31,潮改二(Lv94)・不知火改(Lv85),31/33・32/32," +\r
+                "軽巡ホ級(flagship),0/53,駆逐ロ級後期型,0/37,駆逐ロ級後期型,0/37,駆逐ロ級後期型,0/37,駆逐イ級,0/20,駆逐イ級,0/20,317~318,0,制空権確保,40-2|"\r
+                == result);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 6隻未満の場合\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void InspectShip2BattleResult()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            var result = "";\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2019, 1, 1));\r
+            sniffer.EnableLog(LogType.Battle);\r
+            SnifferTest.SniffLogFile(sniffer, "battle_003");\r
+            Assert.IsFalse(sniffer.IsBattleResultError);\r
+            Assert.AreEqual("2019-01-01 00:00:00,鎮守府正面海域,1,出撃,S,反航戦,単縦陣,単縦陣,敵偵察艦,駆逐艦,睦月," +\r
+                            "早波改(Lv54),32/32,五月雨(Lv20),16/16,,,,,,,,,駆逐ハ級,0/24,,,,,,,,,,,0,0,,1-1|",\r
+                result);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 基地空襲戦\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void InspectAirRaidBattle()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            var result = "";\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2019, 1, 1));\r
+            sniffer.EnableLog(LogType.Battle);\r
+            SnifferTest.SniffLogFile(sniffer, "airraid_battle_001");\r
+            Assert.AreEqual("2019-01-01 00:00:00,アリューシャン列島沖,12,出撃,S,同航戦,単縦陣,輪形陣,,,," +\r
+                            "基地航空隊1(Lv0),200/200,基地航空隊2(Lv0),200/200,基地航空隊3(Lv0),200/200,,,,,,," +\r
+                            "北方棲妹,790/790,砲台小鬼,130/130,砲台小鬼,130/130,飛行場姫,500/500,飛行場姫,500/500,集積地棲姫,600/600,425~426,231,航空優勢,44-3|",\r
+                result);\r
+        }\r
+\r
+        /// <summary>\r
+        /// ボス前の基地空襲戦\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void InspectAirRaidBattleBeforeBoss()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            var result = "";\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2019, 1, 1));\r
+            sniffer.EnableLog(LogType.Battle);\r
+            SnifferTest.SniffLogFile(sniffer, "airraid_battle_003");\r
+            Assert.AreEqual("2019-01-01 00:00:00,北太平洋ハワイ諸島戦域,22,出撃,A,T字戦(不利),単縦陣,輪形陣,,,," +\r
+                            "基地航空隊1(Lv0),200/200,基地航空隊2(Lv0),188/200,基地航空隊3(Lv0),200/200,,,,,,," +\r
+                            "中枢棲姫,900/900,飛行場姫,500/500,飛行場姫,500/500,飛行場姫,500/500,砲台小鬼,130/130,集積地棲姫,600/600,471~473,212,航空優勢,44-4|",\r
+                result);\r
         }\r
 \r
         [TestMethod]\r
@@ -166,13 +237,9 @@ namespace KancolleSniffer.Test
             sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, queue.Dequeue);\r
             sniffer.EnableLog(LogType.Material);\r
             SnifferTest.SniffLogFile(sniffer, "material_001");\r
-            PAssert.That(() => "2015-01-01 00:00:00,26178,26742,21196,33750,1426,1574,2185,10,|" +\r
-                               "2015-01-01 00:10:00,24595,25353,18900,32025,1427,1576,2187,10,|"\r
-                               == result);\r
-            SnifferTest.SniffLogFile(sniffer, "material_001");\r
-            PAssert.That(() => "2015-01-01 00:00:00,26178,26742,21196,33750,1426,1574,2185,10,|" +\r
-                               "2015-01-01 00:10:00,24595,25353,18900,32025,1427,1576,2187,10,|" +\r
-                               "2015-01-01 00:20:00,24595,25353,18900,32025,1427,1576,2187,10,|"\r
+            PAssert.That(() => "2015-01-01 00:00:00,26178,26742,21196,33750,1426,1574,2185,10|" +\r
+                               "2015-01-01 00:10:00,24595,25353,18900,32025,1427,1576,2187,10|" +\r
+                               "2015-01-01 00:20:00,23463,25064,17314,31765,1427,1572,2187,10|"\r
                                == result);\r
         }\r
 \r
@@ -184,12 +251,26 @@ namespace KancolleSniffer.Test
             sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));\r
             sniffer.EnableLog(LogType.CreateItem);\r
             SnifferTest.SniffLogFile(sniffer, "createitem_001");\r
-            PAssert.That(() => "2015-01-01 00:00:00,7.7mm機銃,対空機銃,10,20,20,10,天津風改(127),114|" +\r
-                               "2015-01-01 00:00:00,失敗,,10,20,20,10,天津風改(127),114|"\r
+            PAssert.That(() => "2015-01-01 00:00:00,12cm単装砲,小口径主砲,10,10,30,10,綾波改二(145),120|" +\r
+                               "2015-01-01 00:00:00,失敗,,10,10,30,10,綾波改二(145),120|"\r
                                == result);\r
         }\r
 \r
         [TestMethod]\r
+        public void InspectCreateItemMulti()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            var result = "";\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2019, 1, 1));\r
+            sniffer.EnableLog(LogType.CreateItem);\r
+            SnifferTest.SniffLogFile(sniffer, "createitem_002");\r
+            Assert.AreEqual("2019-01-01 00:00:00,失敗,,10,10,30,10,大淀改(167),120|" +\r
+                               "2019-01-01 00:00:00,61cm三連装魚雷,魚雷,10,10,30,10,大淀改(167),120|" +\r
+                               "2019-01-01 00:00:00,失敗,,10,10,30,10,大淀改(167),120|",\r
+                result);\r
+        }\r
+\r
+        [TestMethod]\r
         public void InspectGetShip()\r
         {\r
             var sniffer = new Sniffer();\r
@@ -197,9 +278,91 @@ namespace KancolleSniffer.Test
             sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));\r
             sniffer.EnableLog(LogType.CreateShip);\r
             SnifferTest.SniffLogFile(sniffer, "createship_001");\r
-            PAssert.That(() => "2015-01-01 00:00:00,通常艦建造,球磨,軽巡洋艦,30,30,30,30,1,1,明石改(50),116|" +\r
-                               "2015-01-01 00:00:00,大型艦建造,筑摩,重巡洋艦,1500,1500,2000,1000,1,0,明石改(50),116|"\r
+            PAssert.That(() => "2015-01-01 00:00:00,通常艦建造,雷,駆逐艦,30,30,30,30,1,1,綾波改二(145),120|" +\r
+                               "2015-01-01 00:00:00,大型艦建造,霧島,巡洋戦艦,1500,1500,2000,1000,1,0,綾波改二(145),120|"\r
+                               == result);\r
+        }\r
+\r
+        [TestMethod]\r
+        public void InspectRemodelSlot()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            var result = "";\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));\r
+            sniffer.EnableLog(LogType.RemodelSlot);\r
+            SnifferTest.SniffLogFile(sniffer, "remodel_slot_001");\r
+            PAssert.That(() => "2015-01-01 00:00:00,12.7cm連装砲,4,○,,,,10,30,60,0,1,1,明石改(50),島風改(131)|" +\r
+                               "2015-01-01 00:00:00,12.7cm連装砲,5,×,,,,10,30,60,0,1,1,明石改(50),|" +\r
+                               "2015-01-01 00:00:00,12.7cm連装砲,7,○,,12.7cm連装砲,1,10,30,60,0,1,1,明石改(50),島風改(131)|" +\r
+                               "2015-01-01 00:00:00,91式高射装置,10,○,○,10cm連装高角砲,2,0,0,60,40,9,7,明石改(50),摩耶改(98)|"\r
                                == result);\r
         }\r
+\r
+        private JsonObject Js(object obj) => JsonObject.CreateJsonObject(obj);\r
+\r
+        [TestMethod]\r
+        public void Achievement()\r
+        {\r
+            var logger = new Logger(null, null, null);\r
+            logger.EnableLog(LogType.Achievement);\r
+            var result = "";\r
+            var dateEnum = new[]\r
+            {\r
+                new DateTime(2017, 3, 31, 21, 0, 0),\r
+                new DateTime(2017, 3, 31, 22, 0, 0),\r
+                new DateTime(2017, 4, 1, 1, 0, 0),\r
+                new DateTime(2017, 4, 1, 2, 0, 0),\r
+                new DateTime(2017, 4, 1, 3, 0, 0),\r
+                new DateTime(2017, 4, 2, 2, 0, 0),\r
+                new DateTime(2017, 4, 2, 3, 0, 0),\r
+                new DateTime(2017, 4, 2, 4, 0, 0)\r
+            }.GetEnumerator();\r
+            logger.SetWriter((path, s, h) => { result += s + "|"; }, () =>\r
+            {\r
+                dateEnum.MoveNext();\r
+                // ReSharper disable once PossibleNullReferenceException\r
+                return (DateTime)dateEnum.Current;\r
+            });\r
+            for (var i = 0; i < 6; i++)\r
+                logger.InspectBasic(Js(new{api_experience = i * 1000}));\r
+            logger.InspectBattleResult(Js(new {api_get_exmap_rate = "100"}));\r
+            logger.InspectMapNext(Js(new {api_maparea_id = 0, api_mapinfo_no = 0, api_no = 0, api_event_id = 0, api_get_eo_rate = 75}));\r
+            PAssert.That(() =>\r
+                "2017-03-31 21:00:00,0,0|2017-03-31 21:00:00,0,0|2017-03-31 22:00:00,1000,0|" +\r
+                "2017-04-01 03:00:00,4000,0|2017-04-02 02:00:00,5000,0|" +\r
+                "2017-04-02 03:00:00,5000,100|2017-04-02 04:00:00,5000,75|"\r
+                == result);\r
+        }\r
+\r
+        [TestMethod]\r
+        public void InspectClearItemGet()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            var result = "";\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2017, 5, 1));\r
+            sniffer.EnableLog(LogType.Achievement);\r
+            SnifferTest.SniffLogFile(sniffer, "clearitemget_001");\r
+            PAssert.That(() =>\r
+                "2017-05-01 00:00:00,45417045,0|2017-05-01 00:00:00,45417045,350|" == result);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 晴嵐(六三一空)任務の場合はapi_bounus_countがない\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void InspectClearItemGetSeiran631Ku()\r
+        {\r
+            var sniffer = new Sniffer(true);\r
+            sniffer.SetLogWriter((path, s, h) => { }, () => new DateTime(2017, 5, 1));\r
+            sniffer.EnableLog(LogType.Achievement);\r
+            sniffer.Sniff("/kcsapi/api_req_quest/clearitemget",\r
+                "api%5Fquest%5Fid=656&api%5Fverno=1",\r
+                JsonParser.Parse(\r
+                    @"{""api_result"":1,""api_result_msg"":""成功"",""api_data"":\r
+                    {""api_material"":[0,0,0,0],""api_bounus"":[\r
+                    {""api_type"":15,""api_count"":1,""api_item"":{""api_id_from"":9999,""api_id_to"":9999,\r
+                    ""api_message"":""第一潜水隊運用航空隊:「晴嵐(六三一空)」の新編成を<br>完了しました!""}}\r
+                    ]}}"));\r
+        }\r
     }\r
 }
\ No newline at end of file