OSDN Git Service

海戦ログを加工する処理をクラスに分離してテストを追加する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Fri, 15 Sep 2017 10:36:18 +0000 (19:36 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Mon, 18 Sep 2017 08:34:19 +0000 (17:34 +0900)
KancolleSniffer.Test/BattleLogProcessorTest.cs [new file with mode: 0644]
KancolleSniffer.Test/KancolleSniffer.Test.csproj
KancolleSniffer/LogServer.cs

diff --git a/KancolleSniffer.Test/BattleLogProcessorTest.cs b/KancolleSniffer.Test/BattleLogProcessorTest.cs
new file mode 100644 (file)
index 0000000..d2cfd55
--- /dev/null
@@ -0,0 +1,44 @@
+using System.Linq;\r
+using ExpressionToCodeLib;\r
+using Microsoft.VisualStudio.TestTools.UnitTesting;\r
+\r
+namespace KancolleSniffer.Test\r
+{\r
+    [TestClass]\r
+    public class BattleLogProcessorTest\r
+    {\r
+        [TestMethod]\r
+        public void NormalLog()\r
+        {\r
+            var input = Enumerable.Repeat("", 38).ToArray();\r
+            input[5] = "T字戦(有利)";\r
+            input[11] = "龍鳳改(Lv97)";\r
+            input[12] = "3/48";\r
+            input[13] = "夕立改(Lv148)";\r
+            input[14] = "5/36";\r
+            input[15] = "綾波改二(Lv148)";\r
+            input[16] = "20/37";\r
+            input[37] = "制空権確保";\r
+            var result = BattleLogProcessor.Process(input).ToArray();\r
+            PAssert.That(() => result[5] == "T字有利");\r
+            PAssert.That(() => result[23] == "龍鳳改(Lv97)・夕立改(Lv148)");\r
+            PAssert.That(() => result[38] == "確保");\r
+        }\r
+\r
+        [TestMethod]\r
+        public void CombinedLog()\r
+        {\r
+            var input = Enumerable.Repeat("", 38).ToArray();\r
+            input[6] = "第四警戒航行序列";\r
+            input[11] = "龍鳳改(Lv97)・夕立改(Lv148)";\r
+            input[12] = "3/48・5/36";\r
+            input[37] = "航空劣勢";\r
+            var result = BattleLogProcessor.Process(input).ToArray();\r
+            PAssert.That(() => result[6] == "第四警戒");\r
+            PAssert.That(() => result[23] == "龍鳳改(Lv97)・夕立改(Lv148)");\r
+            PAssert.That(() => result[38] == "劣勢");\r
+        }\r
+    }\r
+\r
+\r
+}
\ No newline at end of file
index 49062de..e52c290 100644 (file)
@@ -61,6 +61,7 @@
     </Otherwise>\r
   </Choose>\r
   <ItemGroup>\r
+    <Compile Include="BattleLogProcessorTest.cs" />\r
     <Compile Include="JsonTest.cs" />\r
     <Compile Include="ShipLabelTest.cs" />\r
     <Compile Include="SnifferTest.cs" />\r
index 8916e0d..c7071dd 100644 (file)
@@ -196,7 +196,7 @@ namespace KancolleSniffer
                     if (material)\r
                         entries = data.Take(9);\r
                     if (battle)\r
-                        entries = ProcessBattleLog(data);\r
+                        entries = BattleLogProcessor.Process(data);\r
                     if (entries.Count() != records)\r
                         continue;\r
                     if (number)\r
@@ -232,7 +232,70 @@ namespace KancolleSniffer
                 Concat(MaterialHistory.Select(c => c.Now.ToString()));\r
         }\r
 \r
-        private static IEnumerable<string> ProcessBattleLog(string[] data)\r
+        private static void SendFile(Socket client, string path, string mime)\r
+        {\r
+            using (var header = new StreamWriter(new MemoryStream(), Encoding.ASCII))\r
+            {\r
+                header.Write("HTTP/1.1 200 OK\r\n");\r
+                header.Write("Server: KancolleSniffer\r\n");\r
+                header.Write("Date: {0:R}\r\n", DateTime.Now);\r
+                header.Write("Content-Length: {0}\r\n", new FileInfo(path).Length);\r
+                header.Write("Content-Type: {0}\r\n", mime);\r
+                header.Write("Connection: close\r\n\r\n");\r
+                header.Flush();\r
+                client.SendFile(path, ((MemoryStream)header.BaseStream).ToArray(), null,\r
+                    TransmitFileOptions.UseDefaultWorkerThread);\r
+            }\r
+        }\r
+\r
+        private static void SendProxyPac(Socket client, int port)\r
+        {\r
+            using (var header = new StreamWriter(new MemoryStream(), Encoding.ASCII))\r
+            {\r
+                header.Write("HTTP/1.1 200 OK\r\n");\r
+                header.Write("Server: KancolleSniffer\r\n");\r
+                header.Write("Date: {0:R}\r\n", DateTime.Now);\r
+                header.Write("Content-Type: application/x-ns-proxy-autoconfig\r\n");\r
+                header.Write("Connection: close\r\n\r\n");\r
+                header.Flush();\r
+                client.Send(((MemoryStream)header.BaseStream).ToArray());\r
+            }\r
+            var pacFile = @"\r
+function FindProxyForURL(url, host) {\r
+  if(isInNet(host, ""203.104.209.71"", ""255.255.255.255"") ||\r
+     isInNet(host, ""125.6.184.15"", ""255.255.255.255"") ||\r
+     isInNet(host, ""125.6.184.16"", ""255.255.255.255"") ||\r
+     isInNet(host, ""125.6.187.205"", ""255.255.255.255"") ||\r
+     isInNet(host, ""125.6.187.229"", ""255.255.255.255"") ||\r
+     isInNet(host, ""125.6.187.253"", ""255.255.255.255"") ||\r
+     isInNet(host, ""125.6.188.25"", ""255.255.255.255"") ||\r
+     isInNet(host, ""203.104.248.135"", ""255.255.255.255"") ||\r
+     isInNet(host, ""125.6.189.7"", ""255.255.255.255"") ||\r
+     isInNet(host, ""125.6.189.39"", ""255.255.255.255"") ||\r
+     isInNet(host, ""125.6.189.71"", ""255.255.255.255"") ||\r
+     isInNet(host, ""125.6.189.103"", ""255.255.255.255"") ||\r
+     isInNet(host, ""125.6.189.135"", ""255.255.255.255"") ||\r
+     isInNet(host, ""125.6.189.167"", ""255.255.255.255"") ||\r
+     isInNet(host, ""125.6.189.215"", ""255.255.255.255"") ||\r
+     isInNet(host, ""125.6.189.247"", ""255.255.255.255"") ||\r
+     isInNet(host, ""203.104.209.23"", ""255.255.255.255"") ||\r
+     isInNet(host, ""203.104.209.39"", ""255.255.255.255"") ||\r
+     isInNet(host, ""203.104.209.55"", ""255.255.255.255"") ||\r
+     isInNet(host, ""203.104.209.102"", ""255.255.255.255"") ||\r
+     isInNet(host, ""203.104.209.87"", ""255.255.255.255"")) {\r
+       return ""PROXY 127.0.0.1:8080"";\r
+    }\r
+  else {\r
+    return ""DIRECT"";\r
+  }\r
+}".Replace("8080", port.ToString());\r
+            client.Send(Encoding.ASCII.GetBytes(pacFile));\r
+        }\r
+    }\r
+\r
+    public static class BattleLogProcessor\r
+    {\r
+        public static IEnumerable<string> Process(string[] data)\r
         {\r
             if (data.Length == 35)\r
                 data = data.Concat(Enumerable.Repeat("", 3)).ToArray();\r
@@ -303,67 +366,7 @@ namespace KancolleSniffer
                     return data;\r
                 }\r
             }\r
-            return data.Take(23).Concat(new[] {string.Join("・", damaged)}).Concat(data.Skip(23));\r
-        }\r
-\r
-        private static void SendFile(Socket client, string path, string mime)\r
-        {\r
-            using (var header = new StreamWriter(new MemoryStream(), Encoding.ASCII))\r
-            {\r
-                header.Write("HTTP/1.1 200 OK\r\n");\r
-                header.Write("Server: KancolleSniffer\r\n");\r
-                header.Write("Date: {0:R}\r\n", DateTime.Now);\r
-                header.Write("Content-Length: {0}\r\n", new FileInfo(path).Length);\r
-                header.Write("Content-Type: {0}\r\n", mime);\r
-                header.Write("Connection: close\r\n\r\n");\r
-                header.Flush();\r
-                client.SendFile(path, ((MemoryStream)header.BaseStream).ToArray(), null,\r
-                    TransmitFileOptions.UseDefaultWorkerThread);\r
-            }\r
-        }\r
-\r
-        private static void SendProxyPac(Socket client, int port)\r
-        {\r
-            using (var header = new StreamWriter(new MemoryStream(), Encoding.ASCII))\r
-            {\r
-                header.Write("HTTP/1.1 200 OK\r\n");\r
-                header.Write("Server: KancolleSniffer\r\n");\r
-                header.Write("Date: {0:R}\r\n", DateTime.Now);\r
-                header.Write("Content-Type: application/x-ns-proxy-autoconfig\r\n");\r
-                header.Write("Connection: close\r\n\r\n");\r
-                header.Flush();\r
-                client.Send(((MemoryStream)header.BaseStream).ToArray());\r
-            }\r
-            var pacFile = @"\r
-function FindProxyForURL(url, host) {\r
-  if(isInNet(host, ""203.104.209.71"", ""255.255.255.255"") ||\r
-     isInNet(host, ""125.6.184.15"", ""255.255.255.255"") ||\r
-     isInNet(host, ""125.6.184.16"", ""255.255.255.255"") ||\r
-     isInNet(host, ""125.6.187.205"", ""255.255.255.255"") ||\r
-     isInNet(host, ""125.6.187.229"", ""255.255.255.255"") ||\r
-     isInNet(host, ""125.6.187.253"", ""255.255.255.255"") ||\r
-     isInNet(host, ""125.6.188.25"", ""255.255.255.255"") ||\r
-     isInNet(host, ""203.104.248.135"", ""255.255.255.255"") ||\r
-     isInNet(host, ""125.6.189.7"", ""255.255.255.255"") ||\r
-     isInNet(host, ""125.6.189.39"", ""255.255.255.255"") ||\r
-     isInNet(host, ""125.6.189.71"", ""255.255.255.255"") ||\r
-     isInNet(host, ""125.6.189.103"", ""255.255.255.255"") ||\r
-     isInNet(host, ""125.6.189.135"", ""255.255.255.255"") ||\r
-     isInNet(host, ""125.6.189.167"", ""255.255.255.255"") ||\r
-     isInNet(host, ""125.6.189.215"", ""255.255.255.255"") ||\r
-     isInNet(host, ""125.6.189.247"", ""255.255.255.255"") ||\r
-     isInNet(host, ""203.104.209.23"", ""255.255.255.255"") ||\r
-     isInNet(host, ""203.104.209.39"", ""255.255.255.255"") ||\r
-     isInNet(host, ""203.104.209.55"", ""255.255.255.255"") ||\r
-     isInNet(host, ""203.104.209.102"", ""255.255.255.255"") ||\r
-     isInNet(host, ""203.104.209.87"", ""255.255.255.255"")) {\r
-       return ""PROXY 127.0.0.1:8080"";\r
-    }\r
-  else {\r
-    return ""DIRECT"";\r
-  }\r
-}".Replace("8080", port.ToString());\r
-            client.Send(Encoding.ASCII.GetBytes(pacFile));\r
+            return data.Take(23).Concat(new[] { string.Join("・", damaged) }).Concat(data.Skip(23));\r
         }\r
     }\r
 }
\ No newline at end of file