-// 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
[TestClass]\r
public class LoggerTest\r
{\r
+ [TestInitialize]\r
+ public void Intialize()\r
+ {\r
+ ExpressionToCodeConfiguration.GlobalAssertionConfiguration = ExpressionToCodeConfiguration\r
+ .GlobalAssertionConfiguration.WithPrintedListLengthLimit(200).WithMaximumValueLength(1000);\r
+ }\r
+\r
[TestMethod]\r
public void InspectMissionResult()\r
{\r
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
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
{\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_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,制空権確保|"\r
+ == result);\r
+ }\r
+\r
+ /// <summary>\r
+ /// 7隻編成の場合は7隻目を6隻目に重ねる\r
+ /// </summary>\r
+ [TestMethod]\r
+ public void InspectShip7BattleResult()\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, "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
+ 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,制空権確保|"\r
+ == result);\r
+ }\r
+\r
+ [TestMethod]\r
+ public void InspectMaterial()\r
+ {\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 InspectCombinedBattleResult()\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.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
+ 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 InspectMaterial()\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.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
+ 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
+ /// 晴嵐(六三一空)任務の場合は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.Achivement);\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