OSDN Git Service

42a4f2456b366a7cf438ea8100a6da4c408ccff2
[yubeshi/yubeshi.git] / YubeshiTest / ParserTest.cs
1 /*\r
2  *      Yubeshi GPS Parser\r
3  *\r
4  *      This software is distributed under a zlib-style license.\r
5  *      See license.txt for more information.\r
6  */\r
7 \r
8 using System;\r
9 using System.Collections.Generic;\r
10 using System.Text;\r
11 using Yubeshi;\r
12 using NUnit.Framework;\r
13 \r
14 namespace YubeshiTest\r
15 {\r
16     public class ParserTest\r
17     {\r
18         private static OctetString noise;\r
19         \r
20         static ParserTest()\r
21         {\r
22             noise = new OctetString(100);\r
23             for (int i = 0; i < noise.Length; ++i)\r
24             {\r
25                 noise[i] = (byte)(i & 0x7F | 0x80);\r
26             }\r
27             noise[52, -1] = Nmea.SamplePackets.Dummy;\r
28             noise[79, -1] = Ubx.SamplePackets.Dummy;\r
29         }\r
30 \r
31         [Test]\r
32         public void Noise()\r
33         {\r
34             Parser parser = new Parser();\r
35             UnknownPacket p;\r
36 \r
37             parser.Push(noise);\r
38 \r
39             p = parser.Peek();\r
40             Assert.IsNull(p);\r
41         }\r
42 \r
43         [Test]\r
44         public void NoisePacketsNoise()\r
45         {\r
46             Parser parser = new Parser();\r
47             UnknownPacket p;\r
48 \r
49             OctetString data = noise;\r
50             data += Nmea.SamplePackets.GpDtm;\r
51             data += Ubx.SamplePackets.NavClock;\r
52             data += noise;\r
53 \r
54             parser.Push(data);\r
55 \r
56             int length = 0;\r
57             while (null != (p = parser.Peek()))\r
58             {\r
59                 if (p is Yubeshi.Nmea.GpDtm)\r
60                 {\r
61                     break;\r
62                 }\r
63                 Assert.IsTrue(p is UnknownPacket);\r
64                 length += p.Raw.Length;\r
65             }\r
66             Assert.AreEqual(noise.Length, length);\r
67 \r
68             Assert.IsTrue(p is Yubeshi.Nmea.GpDtm);\r
69 \r
70             p = parser.Peek();\r
71             Assert.IsTrue(p is Yubeshi.Ubx.NavClock);\r
72 \r
73             p = parser.Peek();\r
74             Assert.IsNull(p);\r
75         }\r
76     }\r
77 }\r