return new StreamReader(new GZipStream(File.Open(path, FileMode.Open), CompressionMode.Decompress));\r
}\r
\r
- public static void SniffLogFile(Sniffer sniffer, string name)\r
+ public static void SniffLogFile(Sniffer sniffer, string name, Action<Sniffer> action = null)\r
{\r
var ln = 0;\r
using (var stream = OpenLogFile(name))\r
}\r
var json = DynamicJson.Parse(triple[2]);\r
sniffer.Sniff(triple[0], triple[1], json);\r
+ action?.Invoke(sniffer);\r
}\r
}\r
}\r
}\r
\r
/// <summary>\r
+ /// 資材の変動を正しく反映する\r
+ /// </summary>\r
+ [TestMethod]\r
+ public void MaterialVariation()\r
+ {\r
+ var sniffer1 = new Sniffer();\r
+ var result1 = new List<int[]>();\r
+ SniffLogFile(sniffer1, "material_001", sn =>\r
+ {\r
+ var cur = sn.Item.MaterialHistory.Select(h => h.Now).ToArray();\r
+ if (result1.Count == 0)\r
+ {\r
+ result1.Add(cur);\r
+ }\r
+ else\r
+ {\r
+ if (!result1.Last().SequenceEqual(cur))\r
+ result1.Add(cur);\r
+ }\r
+ });\r
+ var expected1 = new List<int[]>\r
+ {\r
+ new[] {0, 0, 0, 0, 0, 0, 0, 0},\r
+ new[] {26178, 26742, 21196, 33750, 1426, 1574, 2185, 10},\r
+ new[] {26178, 26842, 21226, 33750, 1426, 1574, 2185, 10},\r
+ new[] {28951, 29493, 24945, 35580, 1426, 1574, 2185, 10},\r
+ new[] {26074, 26616, 21068, 33700, 1426, 1572, 2183, 10},\r
+ new[] {26171, 26721, 21175, 33750, 1426, 1574, 2185, 10},\r
+ new[] {27023, 27829, 28136, 42404, 1404, 1521, 2142, 15},\r
+ new[] {31208, 29819, 29714, 42345, 1407, 1530, 2155, 13},\r
+ new[] {24595, 25353, 18900, 32025, 1427, 1576, 2187, 10},\r
+ new[] {24515, 25353, 18749, 32025, 1427, 1575, 2187, 10},\r
+ new[] {23463, 24964, 17284, 31765, 1427, 1572, 2187, 10},\r
+ new[] {23463, 25064, 17314, 31765, 1427, 1572, 2187, 10}\r
+ };\r
+ PAssert.That(() => SequenceOfSequenceEqual(expected1, result1));\r
+\r
+ var sniffer2 = new Sniffer();\r
+ var result2 = new List<int[]>();\r
+ SniffLogFile(sniffer2, "material_002", sn =>\r
+ {\r
+ var cur = sn.Item.MaterialHistory.Select(h => h.Now).ToArray();\r
+ if (result2.Count == 0)\r
+ {\r
+ result2.Add(cur);\r
+ }\r
+ else\r
+ {\r
+ if (!result2.Last().SequenceEqual(cur))\r
+ result2.Add(cur);\r
+ }\r
+ });\r
+ var expected2 = new List<int[]>\r
+ {\r
+ new[] {0, 0, 0, 0, 0, 0, 0, 0},\r
+ new[] {201649, 189713, 261490, 123227, 2743, 2828, 3000, 44},\r
+ new[] {201649, 189714, 261491, 123227, 2743, 2828, 3000, 44},\r
+ new[] {201650, 189718, 261500, 123227, 2743, 2828, 3000, 44}\r
+ };\r
+ PAssert.That(() => SequenceOfSequenceEqual(expected2, result2));\r
+ }\r
+\r
+ private bool SequenceOfSequenceEqual<T>(IEnumerable<IEnumerable<T>> a, IEnumerable<IEnumerable<T>> b)\r
+ {\r
+ var aa = a.ToArray();\r
+ var bb = b.ToArray();\r
+ if (aa.Count() != bb.Count())\r
+ return false;\r
+ return aa.Zip(bb, (x, y) => x.SequenceEqual(y)).All(x => x);\r
+ }\r
+\r
+ /// <summary>\r
/// 海域ゲージ情報を作成する\r
/// </summary>\r
[TestMethod]\r