OSDN Git Service

索敵に航空偵察スコアを表示する
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer.Test / SnifferTest.cs
index ddc6f0f..ec3c5ef 100644 (file)
@@ -17,9 +17,9 @@ using System.Collections.Generic;
 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
@@ -73,7 +73,7 @@ namespace KancolleSniffer.Test
                         } 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
@@ -81,6 +81,28 @@ namespace KancolleSniffer.Test
         }\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
@@ -199,6 +221,18 @@ namespace KancolleSniffer.Test
         }\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
@@ -310,6 +344,36 @@ namespace KancolleSniffer.Test
         }\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
@@ -417,6 +481,18 @@ namespace KancolleSniffer.Test
         }\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
@@ -428,6 +504,18 @@ namespace KancolleSniffer.Test
         }\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
@@ -657,7 +745,7 @@ namespace KancolleSniffer.Test
         {\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
@@ -778,7 +866,7 @@ namespace KancolleSniffer.Test
             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