1 // Copyright (C) 2014, 2015 Kazuhiro Fujieda <fujieda@users.osdn.me>
\r
3 // This program is part of KancolleSniffer.
\r
5 // KancolleSniffer is free software: you can redistribute it and/or modify
\r
6 // it under the terms of the GNU General Public License as published by
\r
7 // the Free Software Foundation, either version 3 of the License, or
\r
8 // (at your option) any later version.
\r
10 // This program is distributed in the hope that it will be useful,
\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
13 // GNU General Public License for more details.
\r
15 // You should have received a copy of the GNU General Public License
\r
16 // along with this program; if not, see <http://www.gnu.org/licenses/>.
\r
19 using System.Collections.Generic;
\r
21 using ExpressionToCodeLib;
\r
22 using Microsoft.VisualStudio.TestTools.UnitTesting;
\r
25 namespace KancolleSniffer.Test
\r
28 public class LoggerTest
\r
31 public void InspectMissionResult()
\r
33 var sniffer = new Sniffer();
\r
36 sniffer.SetLogWriter((path, s, h) =>
\r
40 }, () => new DateTime(2015, 1, 1));
\r
41 sniffer.SkipMaster();
\r
42 sniffer.EnableLog(LogType.Mission);
\r
43 SnifferTest.SniffLogFile(sniffer, "mission_result_001");
\r
44 PAssert.That(() => "日付,結果,遠征,燃料,弾薬,鋼材,ボーキ,開発資材,高速修復材,高速建造材" == header);
\r
45 PAssert.That(() => "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,0,0|" +
\r
46 "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,1,0|" +
\r
47 "2015-01-01 00:00:00,大成功,MO作戦,0,0,360,420,1,0,0|" +
\r
48 "2015-01-01 00:00:00,失敗,東京急行(弐),0,0,0,0,0,0,0|"
\r
53 /// 出力先に書けないときは一時ファイルに書き込む
\r
56 public void WriteTmpFileWhenCantWriteTarget()
\r
58 var mock = new Mock<LogWriter.IFile>();
\r
59 var writer = new LogWriter(null, mock.Object);
\r
61 const string str = "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,0,0";
\r
63 mock.Setup(l => l.AppendAllText(It.IsAny<string>(), It.IsAny<string>()))
\r
64 .Callback<string, string>((file, s) =>
\r
66 if (file.EndsWith(".csv"))
\r
67 throw new IOException();
\r
68 if (file.EndsWith(".tmp"))
\r
71 mock.SetupSequence(l => l.Exists(It.IsAny<string>())).Returns(false).Returns(true);
\r
72 writer.Write("遠征報告書", str, "");
\r
73 PAssert.That(() => "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,0,0\r\n" == tmp);
\r
77 public void MergeTmpFile()
\r
79 MergeTmpFileMain(false);
\r
83 public void FaileToMergeTmpFile()
\r
85 MergeTmpFileMain(true);
\r
88 private void MergeTmpFileMain(bool failToMerge)
\r
90 var mock = new Mock<LogWriter.IFile>();
\r
91 var writer = new LogWriter(null, mock.Object);
\r
93 var tmp = "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,0,0\r\n";
\r
95 mock.Setup(l => l.Exists(It.IsAny<string>())).Returns(true);
\r
96 mock.Setup(l => l.ReadAllText(It.IsAny<string>()))
\r
97 .Returns((string path) => path.EndsWith(".tmp") ? tmp : "");
\r
98 mock.Setup(l => l.AppendAllText(It.IsAny<string>(), It.IsAny<string>()))
\r
99 .Callback<string, string>((file, s) =>
\r
101 if (file.EndsWith(".tmp"))
\r
103 if (file.EndsWith(".csv"))
\r
106 throw new IOException();
\r
110 const string str = "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,1,0";
\r
111 writer.Write("遠征報告書", str, "");
\r
112 var result = failToMerge ? tmp : csv;
\r
114 "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,0,0\r\n" +
\r
115 "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,1,0\r\n" == result);
\r
119 public void InspectBattleResult()
\r
121 var sniffer = new Sniffer();
\r
123 sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));
\r
124 sniffer.EnableLog(LogType.Battle);
\r
125 SnifferTest.SniffLogFile(sniffer, "battle_004");
\r
126 PAssert.That(() => "2015-01-01 00:00:00,珊瑚諸島沖,1,出撃,S,同航戦,単縦陣,単縦陣,敵前衛艦隊,重巡洋艦,青葉," +
\r
127 "武蔵改(Lv133),86/106,扶桑改二(Lv87),77/77,北上改二(Lv113),49/49,飛龍改二(Lv133),63/74,蒼龍改二(Lv133),74/74,龍鳳改(Lv97),48/48," +
\r
128 "軽巡ヘ級(flagship),0/57,重巡リ級(flagship),0/76,重巡リ級(flagship),0/76,雷巡チ級(elite),0/50,駆逐ニ級(elite),0/45,駆逐ニ級(elite),0/45|" +
\r
129 "2015-01-01 00:00:00,珊瑚諸島沖,2,,B,反航戦,単横陣,単横陣,敵潜水艦隊,,," +
\r
130 "武蔵改(Lv133),86/106,扶桑改二(Lv87),77/77,北上改二(Lv113),46/49,飛龍改二(Lv133),63/74,蒼龍改二(Lv133),74/74,龍鳳改(Lv97),48/48," +
\r
131 "潜水ヨ級(flagship),44/44,潜水カ級(elite),27/27,潜水カ級(elite),5/27,潜水カ級(elite),9/27,潜水カ級,0/19,潜水カ級,0/19|" +
\r
132 "2015-01-01 00:00:00,珊瑚諸島沖,4,,S,反航戦,単縦陣,単縦陣,敵水上打撃部隊,戦艦,扶桑," +
\r
133 "武蔵改(Lv133),86/106,扶桑改二(Lv87),77/77,北上改二(Lv113),46/49,飛龍改二(Lv133),63/74,蒼龍改二(Lv133),45/74,龍鳳改(Lv97),48/48," +
\r
134 "戦艦タ級(flagship),0/90,重巡リ級(flagship),0/76,重巡リ級(flagship),0/76,雷巡チ級(elite),0/50,駆逐ロ級(flagship),0/43,駆逐ニ級(elite),0/45|" +
\r
135 "2015-01-01 00:00:00,珊瑚諸島沖,10,ボス,S,反航戦,単縦陣,単縦陣,敵機動部隊本隊,戦艦,山城," +
\r
136 "武蔵改(Lv133),86/106,扶桑改二(Lv87),77/77,北上改二(Lv113),46/49,飛龍改二(Lv133),63/74,蒼龍改二(Lv133),39/74,龍鳳改(Lv97),48/48," +
\r
137 "装甲空母姫,0/270,空母ヲ級(elite),0/88,戦艦タ級(flagship),0/90,重巡リ級(elite),0/60,軽巡ホ級(flagship),0/53,駆逐ハ級(flagship),0/47|"
\r
142 public void InspectBattleResultOfSpMidnight()
\r
144 var sniffer = new Sniffer();
\r
146 sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));
\r
147 sniffer.EnableLog(LogType.Battle);
\r
148 SnifferTest.SniffLogFile(sniffer, "sp_midnight_001");
\r
149 PAssert.That(() => "2015-01-01 00:00:00,サブ島沖海域,3,出撃,D,反航戦,単縦陣,単縦陣,敵前衛警戒艦隊,,," +
\r
150 "Prinz Eugen改(Lv52),1/63,,,,,,,,,,," +
\r
151 "軽巡ヘ級(flagship),57/57,重巡リ級(flagship),76/76,重巡リ級(flagship),76/76,雷巡チ級(elite),50/50,雷巡チ級(elite),50/50,駆逐ロ級(flagship),0/43|"
\r
156 public void InspectCombinedBattleResult()
\r
158 var sniffer = new Sniffer();
\r
160 sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));
\r
161 sniffer.EnableLog(LogType.Battle);
\r
162 SnifferTest.SniffLogFile(sniffer, "combined_surface_001");
\r
163 PAssert.That(() => "2015-01-01 00:00:00,南西方面海域,3,出撃,S,同航戦,第四警戒航行序列,単縦陣,ピケット水雷戦隊 A群,,," +
\r
164 "あきつ丸改(Lv68),40/40,山城改二(Lv85),77/77,扶桑改二(Lv85),77/77,利根改二(Lv117),59/66,筑摩改二(Lv117),51/65,神通改二(Lv97),47/50," +
\r
165 "軽巡ツ級(elite),0/66,軽巡ト級(elite),0/55,駆逐イ級後期型,0/35,駆逐イ級後期型,0/35,駆逐イ級後期型,0/35,駆逐イ級後期型,0/35|" +
\r
166 "2015-01-01 00:00:00,南西方面海域,7,,S,同航戦,第四警戒航行序列,複縦陣,任務部隊 D群,駆逐艦,満潮," +
\r
167 "あきつ丸改(Lv68),40/40,山城改二(Lv85),77/77,扶桑改二(Lv85),77/77,利根改二(Lv117),33/66,筑摩改二(Lv117),51/65,神通改二(Lv97),47/50," +
\r
168 "戦艦タ級(flagship),0/90,軽母ヌ級(flagship),0/84,軽巡ト級(elite),0/55,軽巡ト級(elite),0/55,駆逐ロ級後期型,0/37,駆逐ロ級後期型,0/37|"
\r
173 public void InspectBattleResultStartAndBoss()
\r
175 var sniffer = new Sniffer();
\r
177 sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));
\r
178 sniffer.EnableLog(LogType.Battle);
\r
179 SnifferTest.SniffLogFile(sniffer, "battle_005");
\r
180 PAssert.That(() => "2015-01-01 00:00:00,バシー島沖,7,出撃&ボス,S,同航戦,単縦陣,単縦陣,敵通商破壊艦隊,軽空母,龍驤," +
\r
181 "那珂改二(Lv97),48/48,隼鷹改二(Lv129),62/62,北上改二(Lv129),49/49,大井改二(Lv115),40/49,呂500(Lv62),13/13,伊168改(Lv97),15/15," +
\r
182 "重巡リ級(elite),0/60,重巡リ級,0/58,雷巡チ級(elite),0/50,軽巡ヘ級,0/36,駆逐ニ級,0/28,駆逐ニ級,0/28|"
\r
187 public void InspectBattleResultDropItem()
\r
189 var sniffer = new Sniffer();
\r
191 sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));
\r
192 sniffer.EnableLog(LogType.Battle);
\r
193 SnifferTest.SniffLogFile(sniffer, "dropitem_001");
\r
195 "2015-01-01 00:00:00,南西諸島防衛線,2,出撃,S,T字戦(有利),単縦陣,単縦陣,敵偵察艦隊,駆逐艦,白雪," +
\r
196 "呂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
197 "重巡リ級,0/58,軽巡ヘ級,0/36,駆逐イ級,0/20,駆逐イ級,0/20,駆逐イ級,0/20,,|" +
\r
198 "2015-01-01 00:00:00,南西諸島防衛線,10,ボス,S,反航戦,単縦陣,輪形陣,敵機動部隊,アイテム,菱餅," +
\r
199 "呂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
200 "空母ヲ級,0/85,空母ヲ級,0/85,重巡リ級,0/58,軽巡ヘ級,0/36,駆逐ハ級,0/24,駆逐ハ級,0/24|"
\r
205 public void InspectBattleResultDropItemAndShip()
\r
207 var sniffer = new Sniffer();
\r
209 sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));
\r
210 sniffer.EnableLog(LogType.Battle);
\r
211 SnifferTest.SniffLogFile(sniffer, "dropitem_002");
\r
213 "2015-01-01 00:00:00,アルフォンシーノ方面,1,出撃,S,同航戦,単縦陣,単縦陣,敵前衛艦隊,,," +
\r
214 "飛龍改(Lv79),65/65,翔鶴改二(Lv112),85/85,隼鷹改二(Lv139),62/62,足柄改二(Lv139),63/63,大井改二(Lv133),49/49,北上改二(Lv133),49/49," +
\r
215 "軽巡ヘ級(flagship),0/57,重巡リ級(elite),0/60,軽巡ト級(elite),0/55,雷巡チ級(elite),0/50,駆逐ロ級(elite),0/35,駆逐ロ級(elite),0/35|" +
\r
216 "2015-01-01 00:00:00,アルフォンシーノ方面,3,,S,同航戦,複縦陣,梯形陣,敵護衛空母群,重巡洋艦,筑摩," +
\r
217 "飛龍改(Lv79),65/65,翔鶴改二(Lv112),85/85,隼鷹改二(Lv139),54/62,足柄改二(Lv139),63/63,大井改二(Lv133),46/49,北上改二(Lv133),49/49," +
\r
218 "軽母ヌ級(elite),0/70,軽母ヌ級(elite),0/70,軽母ヌ級(elite),0/70,軽巡ホ級(flagship),0/53,駆逐ニ級(elite),0/45,駆逐ニ級(elite),0/45|" +
\r
219 "2015-01-01 00:00:00,アルフォンシーノ方面,11,ボス,S,T字戦(有利),単縦陣,単縦陣,深海棲艦泊地艦隊,駆逐艦+アイテム,舞風+秋刀魚," +
\r
220 "飛龍改(Lv79),65/65,翔鶴改二(Lv112),44/85,隼鷹改二(Lv139),54/62,足柄改二(Lv139),50/63,大井改二(Lv133),46/49,北上改二(Lv133),49/49," +
\r
221 "空母ヲ級(flagship),0/96,空母ヲ級(elite),0/88,戦艦ル級(flagship),0/98,軽巡ヘ級(flagship),0/57,軽巡ト級(elite),0/55,駆逐ニ級(elite),0/45|"
\r
226 public void InspectMaterial()
\r
228 var sniffer = new Sniffer();
\r
230 var first = new DateTime(2015, 1, 1, 0, 0, 0);
\r
232 new Queue<DateTime>(new[] {first, first.AddMinutes(10), first.AddMinutes(15), first.AddMinutes(20)});
\r
233 sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, queue.Dequeue);
\r
234 sniffer.EnableLog(LogType.Material);
\r
235 SnifferTest.SniffLogFile(sniffer, "material_001");
\r
236 PAssert.That(() => "2015-01-01 00:00:00,26178,26742,21196,33750,1426,1574,2185,10|" +
\r
237 "2015-01-01 00:10:00,24595,25353,18900,32025,1427,1576,2187,10|" +
\r
238 "2015-01-01 00:20:00,23463,25064,17314,31765,1427,1572,2187,10|"
\r
243 public void InspectCreateItem()
\r
245 var sniffer = new Sniffer();
\r
247 sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));
\r
248 sniffer.EnableLog(LogType.CreateItem);
\r
249 SnifferTest.SniffLogFile(sniffer, "createitem_001");
\r
250 PAssert.That(() => "2015-01-01 00:00:00,7.7mm機銃,対空機銃,10,20,20,10,天津風改(127),114|" +
\r
251 "2015-01-01 00:00:00,失敗,,10,20,20,10,天津風改(127),114|"
\r
256 public void InspectGetShip()
\r
258 var sniffer = new Sniffer();
\r
260 sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));
\r
261 sniffer.EnableLog(LogType.CreateShip);
\r
262 SnifferTest.SniffLogFile(sniffer, "createship_001");
\r
263 PAssert.That(() => "2015-01-01 00:00:00,通常艦建造,球磨,軽巡洋艦,30,30,30,30,1,1,明石改(50),116|" +
\r
264 "2015-01-01 00:00:00,大型艦建造,筑摩,重巡洋艦,1500,1500,2000,1000,1,0,明石改(50),116|"
\r
269 public void InspectRemodelSlot()
\r
271 var sniffer = new Sniffer();
\r
273 sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));
\r
274 sniffer.EnableLog(LogType.RemodelSlot);
\r
275 SnifferTest.SniffLogFile(sniffer, "remodel_slot_001");
\r
276 PAssert.That(() => "2015-01-01 00:00:00,12.7cm連装砲,4,○,,,,10,30,60,0,1,1,明石改(50),島風改(131)|" +
\r
277 "2015-01-01 00:00:00,12.7cm連装砲,5,×,,,,10,30,60,0,1,1,明石改(50),|" +
\r
278 "2015-01-01 00:00:00,12.7cm連装砲,7,○,,12.7cm連装砲,1,10,30,60,0,1,1,明石改(50),島風改(131)|" +
\r
279 "2015-01-01 00:00:00,91式高射装置,10,○,○,10cm連装高角砲,2,0,0,60,40,9,7,明石改(50),摩耶改(98)|"
\r