OSDN Git Service

JSONが想定と違うときのエラーメッセージを変更する
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer.Test / LoggerTest.cs
index d5fd92d..55ca718 100644 (file)
@@ -1,21 +1,19 @@
-// 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 Microsoft.VisualStudio.TestTools.UnitTesting;\r
@@ -55,7 +53,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
@@ -87,7 +85,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
@@ -117,40 +115,152 @@ namespace KancolleSniffer.Test
         [TestMethod]\r
         public void InspectBattleResult()\r
         {\r
-            var sniffer = new Sniffer();\r
+            var sniffer = new Sniffer {UseOldEnemyId = true};\r
             var result = "";\r
             sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 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
+            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
+                               "軽巡ヘ級(flagship),0/57,重巡リ級(flagship),0/76,重巡リ級(flagship),0/76,雷巡チ級(elite),0/50,駆逐ニ級(elite),0/45,駆逐ニ級(elite),0/45," +\r
+                               "306~314,0,制空権確保|" +\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
+                               "潜水ヨ級(flagship),44/44,潜水カ級(elite),27/27,潜水カ級(elite),5/27,潜水カ級(elite),9/27,潜水カ級,0/19,潜水カ級,0/19," +\r
+                               "302~311,0,制空権確保|" +\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
+                               "戦艦タ級(flagship),0/90,重巡リ級(flagship),0/76,重巡リ級(flagship),0/76,雷巡チ級(elite),0/50,駆逐ロ級(flagship),0/43,駆逐ニ級(elite),0/45," +\r
+                               "301~310,0,制空権確保|" +\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
+                               "装甲空母姫,0/270,空母ヲ級(elite),0/88,戦艦タ級(flagship),0/90,重巡リ級(elite),0/60,軽巡ホ級(flagship),0/53,駆逐ハ級(flagship),0/47," +\r
+                               "294~304,75,制空権確保|"\r
+                               == result);\r
+        }\r
+\r
+        [TestMethod]\r
+        public void InspectBattleResultOfSpMidnight()\r
+        {\r
+            var sniffer = new Sniffer {UseOldEnemyId = true};\r
+            var result = "";\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));\r
+            sniffer.EnableLog(LogType.Battle);\r
+            SnifferTest.SniffLogFile(sniffer, "sp_midnight_001");\r
+            PAssert.That(() => "2015-01-01 00:00:00,サブ島沖海域,3,出撃,D,反航戦,単縦陣,単縦陣,敵前衛警戒艦隊,,," +\r
+                               "Prinz Eugen改(Lv52),1/63,,,,,,,,,,," +\r
+                               "軽巡ヘ級(flagship),57/57,重巡リ級(flagship),76/76,重巡リ級(flagship),76/76,雷巡チ級(elite),50/50,雷巡チ級(elite),50/50,駆逐ロ級(flagship),0/43," +\r
+                               "0,0,|"\r
                                == result);\r
         }\r
 \r
         [TestMethod]\r
         public void InspectCombinedBattleResult()\r
         {\r
-            var sniffer = new Sniffer();\r
+            var sniffer = new Sniffer {UseOldEnemyId = true};\r
             var result = "";\r
             sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 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
+            PAssert.That(() =>\r
+                "2015-01-01 00:00:00,南西方面海域,3,出撃,S,同航戦,第四警戒航行序列,単縦陣,ピケット水雷戦隊 A群,,," +\r
+                "あきつ丸改(Lv68)・大淀改(Lv95),40/40・47/47,山城改二(Lv85)・Z1 zwei(Lv84),77/77・35/35,扶桑改二(Lv85)・Z3 zwei(Lv84),77/77・11/35,利根改二(Lv117)・島風改(Lv130),59/66・39/41,筑摩改二(Lv117)・雪風改(Lv130),51/65・37/37,神通改二(Lv97)・北上改二(Lv99),47/50・40/43," +\r
+                "軽巡ツ級(elite),0/66,軽巡ト級(elite),0/55,駆逐イ級後期型,0/35,駆逐イ級後期型,0/35,駆逐イ級後期型,0/35,駆逐イ級後期型,0/35," +\r
+                "144~149,0,制空権確保|" +\r
+                "2015-01-01 00:00:00,南西方面海域,7,,S,同航戦,第四警戒航行序列,複縦陣,任務部隊 D群,駆逐艦,満潮," +\r
+                "あきつ丸改(Lv68)・大淀改(Lv95),40/40・39/47,山城改二(Lv85)・Z1 zwei(Lv84),77/77・35/35,扶桑改二(Lv85)・Z3 zwei(Lv84),77/77・11/35,利根改二(Lv117)・島風改(Lv130),33/66・39/41,筑摩改二(Lv117)・雪風改(Lv130),51/65・37/37,神通改二(Lv97)・北上改二(Lv99),47/50・40/43," +\r
+                "戦艦タ級(flagship),0/90,軽母ヌ級(flagship),0/84,軽巡ト級(elite),0/55,軽巡ト級(elite),0/55,駆逐ロ級後期型,0/37,駆逐ロ級後期型,0/37," +\r
+                "123~131,23,制空権確保|"\r
+                == result);\r
+        }\r
+\r
+        [TestMethod]\r
+        public void InspectBothCombinedBattleResult()\r
+        {\r
+            var sniffer = new Sniffer {UseOldEnemyId = true};\r
+            var result = "";\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2017, 1, 1));\r
+            sniffer.EnableLog(LogType.Battle);\r
+            SnifferTest.SniffLogFile(sniffer, "both_combined_001");\r
+            PAssert.That(() =>\r
+                "2017-01-01 00:00:00,本土沖太平洋上,27,出撃&ボス,S,同航戦,第四警戒航行序列,第三警戒航行序列,16th任務部隊 主力機動部隊群,駆逐艦,天津風," +\r
+                "愛宕改(Lv98)・暁改二(Lv84),55/57・28/31,金剛改二(Lv99)・初月改(Lv98),69/82・33/37,飛龍改二(Lv99)・高雄改(Lv98),16/67・57/57,蒼龍改二(Lv99)・神通改二(Lv99),40/67・11/50,龍驤改二(Lv99)・木曾改二(Lv99),50/50・40/44,祥鳳改(Lv76)・北上改二(Lv97),26/45・43/43," +\r
+                "水母水姫・軽巡ヘ級(flagship),0/390・0/57,空母ヲ級改(flagship)・重巡リ級(flagship),0/160・0/76,空母ヲ級改(flagship)・重巡リ級(flagship),0/160・0/76,戦艦タ級(elite)・軽巡ツ級(elite),0/88・0/66,重巡ネ級(elite)・駆逐イ級後期型,0/88・0/35,重巡ネ級(elite)・駆逐イ級後期型,0/88・0/35," +\r
+                "750~751,389,航空優勢|"\r
+                == result);\r
+        }\r
+\r
+        [TestMethod]\r
+        public void InspectBattleResultStartAndBoss()\r
+        {\r
+            var sniffer = new Sniffer {UseOldEnemyId = true};\r
+            var result = "";\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));\r
+            sniffer.EnableLog(LogType.Battle);\r
+            SnifferTest.SniffLogFile(sniffer, "battle_005");\r
+            PAssert.That(() => "2015-01-01 00:00:00,バシー島沖,7,出撃&ボス,S,同航戦,単縦陣,単縦陣,敵通商破壊艦隊,軽空母,龍驤," +\r
+                               "那珂改二(Lv97),48/48,隼鷹改二(Lv129),62/62,北上改二(Lv129),49/49,大井改二(Lv115),40/49,呂500(Lv62),13/13,伊168改(Lv97),15/15," +\r
+                               "重巡リ級(elite),0/60,重巡リ級,0/58,雷巡チ級(elite),0/50,軽巡ヘ級,0/36,駆逐ニ級,0/28,駆逐ニ級,0/28," +\r
+                               "108~111,0,制空権確保|"\r
+                               == result);\r
+        }\r
+\r
+        [TestMethod]\r
+        public void InspectBattleResultDropItem()\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.Battle);\r
+            SnifferTest.SniffLogFile(sniffer, "dropitem_001");\r
+            PAssert.That(() =>\r
+                "2015-01-01 00:00:00,南西諸島防衛線,2,出撃,S,T字戦(有利),単縦陣,単縦陣,敵偵察艦隊,駆逐艦,白雪," +\r
+                "呂500(Lv56),13/13,伊168改(Lv97),15/15,伊58改(Lv97),18/18,伊8改(Lv97),19/19,伊19改(Lv97),18/18,伊401改(Lv99),24/24," +\r
+                "重巡リ級,0/58,軽巡ヘ級,0/36,駆逐イ級,0/20,駆逐イ級,0/20,駆逐イ級,0/20,,," +\r
+                "15,0,制空権確保|" +\r
+                "2015-01-01 00:00:00,南西諸島防衛線,10,ボス,S,反航戦,単縦陣,輪形陣,敵機動部隊,アイテム,菱餅," +\r
+                "呂500(Lv56),13/13,伊168改(Lv97),15/15,伊58改(Lv97),18/18,伊8改(Lv97),19/19,伊19改(Lv97),18/18,伊401改(Lv99),24/24," +\r
+                "空母ヲ級,0/85,空母ヲ級,0/85,重巡リ級,0/58,軽巡ヘ級,0/36,駆逐ハ級,0/24,駆逐ハ級,0/24," +\r
+                "15,20,航空均衡|"\r
+                == result);\r
+        }\r
+\r
+        [TestMethod]\r
+        public void InspectBattleResultDropItemAndShip()\r
+        {\r
+            var sniffer = new Sniffer {UseOldEnemyId = true};\r
+            var result = "";\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));\r
+            sniffer.EnableLog(LogType.Battle);\r
+            SnifferTest.SniffLogFile(sniffer, "dropitem_002");\r
+            PAssert.That(() =>\r
+                "2015-01-01 00:00:00,アルフォンシーノ方面,1,出撃,S,同航戦,単縦陣,単縦陣,敵前衛艦隊,,," +\r
+                "飛龍改(Lv79),65/65,翔鶴改二(Lv112),85/85,隼鷹改二(Lv139),62/62,足柄改二(Lv139),63/63,大井改二(Lv133),49/49,北上改二(Lv133),49/49," +\r
+                "軽巡ヘ級(flagship),0/57,重巡リ級(elite),0/60,軽巡ト級(elite),0/55,雷巡チ級(elite),0/50,駆逐ロ級(elite),0/35,駆逐ロ級(elite),0/35," +\r
+                "257~258,0,制空権確保|" +\r
+                "2015-01-01 00:00:00,アルフォンシーノ方面,3,,S,同航戦,複縦陣,梯形陣,敵護衛空母群,重巡洋艦,筑摩," +\r
+                "飛龍改(Lv79),65/65,翔鶴改二(Lv112),85/85,隼鷹改二(Lv139),54/62,足柄改二(Lv139),63/63,大井改二(Lv133),46/49,北上改二(Lv133),49/49," +\r
+                "軽母ヌ級(elite),0/70,軽母ヌ級(elite),0/70,軽母ヌ級(elite),0/70,軽巡ホ級(flagship),0/53,駆逐ニ級(elite),0/45,駆逐ニ級(elite),0/45," +\r
+                "255~257,72,制空権確保|" +\r
+                "2015-01-01 00:00:00,アルフォンシーノ方面,11,ボス,S,T字戦(有利),単縦陣,単縦陣,深海棲艦泊地艦隊,駆逐艦+アイテム,舞風+秋刀魚," +\r
+                "飛龍改(Lv79),65/65,翔鶴改二(Lv112),44/85,隼鷹改二(Lv139),54/62,足柄改二(Lv139),50/63,大井改二(Lv133),46/49,北上改二(Lv133),49/49," +\r
+                "空母ヲ級(flagship),0/96,空母ヲ級(elite),0/88,戦艦ル級(flagship),0/98,軽巡ヘ級(flagship),0/57,軽巡ト級(elite),0/55,駆逐ニ級(elite),0/45," +\r
+                "255~256,55,制空権確保|"\r
+                == result);\r
+        }\r
+\r
+        [TestMethod]\r
+        public void ReloadBeforeBattleResult()\r
+        {\r
+            var sniffer = new Sniffer {UseOldEnemyId = true};\r
+            var result = "";\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));\r
+            sniffer.EnableLog(LogType.Battle);\r
+            SnifferTest.SniffLogFile(sniffer, "reload_002");\r
+            PAssert.That(() => "2015-01-01 00:00:00,鎮守府正面海域,1,出撃,S,同航戦,単縦陣,単縦陣,敵偵察艦,駆逐艦,深雪," +\r
+                               "天龍改(Lv79),40/40,大潮(Lv1),16/16,初霜(Lv1),16/16,,,,,,,駆逐イ級,0/20,,,,,,,,,,,0,0,|" +\r
+                               "2015-01-01 00:00:00,鎮守府正面海域,1,出撃,S,同航戦,単縦陣,単縦陣,敵偵察艦,,," +\r
+                               "天龍改(Lv79),40/40,大潮(Lv1),6/16,初霜(Lv1),16/16,,,,,,,駆逐イ級,0/20,,,,,,,,,,,0,0,|"\r
                                == result);\r
         }\r
 \r
@@ -159,12 +269,134 @@ namespace KancolleSniffer.Test
         {\r
             var sniffer = new Sniffer();\r
             var result = "";\r
+            var first = new DateTime(2015, 1, 1, 0, 0, 0);\r
+            var queue =\r
+                new Queue<DateTime>(new[] {first, first.AddMinutes(10), first.AddMinutes(15), first.AddMinutes(20)});\r
+            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
+                               "2015-01-01 00:20:00,23463,25064,17314,31765,1427,1572,2187,10|"\r
+                               == result);\r
+        }\r
+\r
+        [TestMethod]\r
+        public void WriteMaterialLogOnSortie()\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.Material);\r
-            SnifferTest.SniffLogFile(sniffer, "misc_001");\r
-            PAssert.That(() => "2015-01-01 00:00:00,25305,24843,25187,40657,1406,1522,2140,9|" +\r
-                               "2015-01-01 00:00:00,24811,24479,24914,40557,1407,1521,2141,9|"\r
+            SnifferTest.SniffLogFile(sniffer, "battle_001");\r
+            PAssert.That(() => "2015-01-01 00:00:00,39636,36912,43064,47519,1329,1424,2030,19|" +\r
+                               "2015-01-01 00:00:00,39636,36912,43064,47519,1329,1424,2030,19|"\r
+                               == result);\r
+        }\r
+\r
+        [TestMethod]\r
+        public void InspectCreateItem()\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.CreateItem);\r
+            SnifferTest.SniffLogFile(sniffer, "createitem_001");\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 InspectGetShip()\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.CreateShip);\r
+            SnifferTest.SniffLogFile(sniffer, "createship_001");\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
+        [TestMethod]\r
+        public void Achievement()\r
+        {\r
+            var logger = new Logger(null, null, null);\r
+            logger.EnableLog(LogType.Achivement);\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(JsonParser.Parse($"{{\"api_experience\": {i * 1000}}}"));\r
+            logger.InspectBattleResult(JsonParser.Parse("{\"api_get_exmap_rate\": \"100\"}"));\r
+            logger.InspectMapNext(JsonParser.Parse("{\"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.Achivement);\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
+        /// 敵艦のIDの振り直しに対応する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void NewId()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            var result = "";\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2017, 1, 1));\r
+            sniffer.EnableLog(LogType.Battle);\r
+            SnifferTest.SniffLogFile(sniffer, "newid_001");\r
+            PAssert.That(() =>\r
+                "2017-01-01 00:00:00,サーモン海域,1,出撃,S,反航戦,単縦陣,輪形陣,敵ピケット艦隊,重巡洋艦,古鷹," +\r
+                "Iowa改(Lv131),101/101,赤城改(Lv155),85/85,加賀改(Lv155),87/87,千歳航改二(Lv143),65/65,鈴谷改二(Lv99),61/61,大淀改(Lv155),53/53," +\r
+                "軽母ヌ級(elite),0/70,軽巡ヘ級(flagship),0/57,駆逐ロ級(flagship),0/43,駆逐ロ級(flagship),0/43,駆逐イ級(elite),0/30,駆逐イ級(elite),0/30," +\r
+                "371~373,24,制空権確保|" == result);\r
+        }\r
     }\r
 }
\ No newline at end of file