using System.IO;\r
using System.IO.Compression;\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
using static System.Math;\r
\r
} while (!line.StartsWith(s));\r
triple.Add(line.Substring(s.Length));\r
}\r
- var json = JsonParser.Parse(triple[2]);\r
+ var json = JsonObject.Parse(triple[2]);\r
sniffer.Sniff(triple[0], triple[1], json);\r
action?.Invoke(sniffer);\r
}\r
}\r
\r
/// <summary>\r
+ /// 一つもアイテムがない場合のrequire_info\r
+ /// </summary>\r
+ [TestMethod]\r
+ public void NoUseItemRequireInfo()\r
+ {\r
+ var sniffer = new Sniffer(true);\r
+ SniffLogFile(sniffer, "require_info_001");\r
+ Assert.IsTrue(true);\r
+ }\r
+\r
+ /// <summary>\r
+ /// 一つもアイテムがない場合のuseitem\r
+ /// </summary>\r
+ [TestMethod]\r
+ public void NoUseItem()\r
+ {\r
+ var sniffer = new Sniffer(true);\r
+ SniffLogFile(sniffer, "useitem_001");\r
+ Assert.IsTrue(true);\r
+ }\r
+\r
+ /// <summary>\r
/// 熟練度込みの制空値を正しく計算する\r
/// </summary>\r
[TestMethod]\r
}\r
\r
/// <summary>\r
+ /// 補強増設スロットに見張り員を装備した場合の判定式(33)\r
+ /// </summary>\r
+ [TestMethod]\r
+ public void LineOfSightWithExSlot()\r
+ {\r
+ var sniffer = new Sniffer();\r
+ SniffLogFile(sniffer, "lineofsight_003");\r
+ var fleet = sniffer.Fleets[0];\r
+ PAssert.That(() => Abs(fleet.GetLineOfSights(1) - -28.8) < 0.01);\r
+ }\r
+\r
+ /// <summary>\r
/// 触接開始率を正しく計算する\r
/// </summary>\r
[TestMethod]\r
}\r
\r
/// <summary>\r
+ /// 夜戦発動率を計算する\r
+ /// </summary>\r
+ [TestMethod]\r
+ public void NightContactTriggerRate()\r
+ {\r
+ var sniffer = new Sniffer();\r
+ SniffLogFile(sniffer, "nightrecon_001");\r
+ PAssert.That(() => Abs(sniffer.Fleets[0].NightContactTriggerRate - 84.64) < 0.01);\r
+ var ship = sniffer.Fleets[0].Ships[0];\r
+ var empty = Enumerable.Repeat(new ItemStatus(), 5).ToArray();\r
+ var orig = ship.Slot;\r
+ ship.Slot = empty;\r
+ PAssert.That(() => Abs(sniffer.Fleets[0].NightContactTriggerRate - 52) < 0.01);\r
+ ship.Slot = orig;\r
+ sniffer.Fleets[0].Ships[1].Slot = empty;\r
+ PAssert.That(() => Abs(sniffer.Fleets[0].NightContactTriggerRate - 68) < 0.01);\r
+ }\r
+\r
+ /// <summary>\r
+ /// 航空偵察スコアを計算する\r
+ /// </summary>\r
+ [TestMethod]\r
+ public void AirReconScore()\r
+ {\r
+ var sniffer = new Sniffer();\r
+ SniffLogFile(sniffer, "airrecon_score_001");\r
+ PAssert.That(() => Abs(sniffer.Fleets[0].AirReconScore - 26.88) < 0.01);\r
+ }\r
+\r
+ /// <summary>\r
/// 編成で空き番号を使ったローテートを正しく反映する\r
/// </summary>\r
[TestMethod]\r
}\r
\r
/// <summary>\r
+ /// 近代化改修による艦娘数と装備数の変化\r
+ /// </summary>\r
+ [TestMethod]\r
+ public void PowerUpCount()\r
+ {\r
+ var sniffer = new Sniffer();\r
+ SniffLogFile(sniffer, "powerup_001");\r
+ PAssert.That(() => sniffer.ShipCounter.Now == 204);\r
+ PAssert.That(() => sniffer.ItemCounter.Now == 932);\r
+ }\r
+\r
+ /// <summary>\r
/// 近代化改修が二重に行われた場合に対応する\r
/// </summary>\r
[TestMethod]\r
}\r
\r
/// <summary>\r
+ /// 装備解除後の近代化改修\r
+ /// </summary>\r
+ [TestMethod]\r
+ public void PowerUpDetachItem()\r
+ {\r
+ var sniffer = new Sniffer();\r
+ SniffLogFile(sniffer, "powerup_003");\r
+ PAssert.That(() => sniffer.ShipCounter.Now == 317);\r
+ PAssert.That(() => sniffer.ItemCounter.Now == 1390);\r
+ }\r
+\r
+ /// <summary>\r
/// ship2を待たずにケッコンの結果を反映する\r
/// </summary>\r
[TestMethod]\r
{\r
var sniffer = new Sniffer(true);\r
SniffLogFile(sniffer, "twofleets_001");\r
- PAssert.That(() => new[]{5, 5, 5, 5}.SequenceEqual(sniffer.Fleets.Select(f => f.ChargeStatus.Fuel)));\r
+ PAssert.That(() => new[]{5, 5, 0, 0}.SequenceEqual(sniffer.Fleets.Select(f => f.ChargeStatus.Fuel)));\r
}\r
\r
/// <summary>\r
var miscTextInfo = new MiscTextInfo(null, null);\r
using (var stream = OpenLogFile("mapgauge_003"))\r
{\r
- miscTextInfo.InspectMapInfo(JsonParser.Parse(stream.ReadToEnd()));\r
+ miscTextInfo.InspectMapInfo(JsonObject.Parse(stream.ReadToEnd()));\r
}\r
PAssert.That(() =>\r
miscTextInfo.Text ==\r