diff Implab.Test/Implab.Format.Test/JsonTests.cs @ 182:76e8f2ba12b8 ref20160224

pretty print DFA, the minimization is still buggy
author cin
date Thu, 24 Mar 2016 18:52:10 +0300
parents 130781364799
children 4f82e0f161c3
line wrap: on
line diff
--- a/Implab.Test/Implab.Format.Test/JsonTests.cs	Thu Mar 24 03:54:46 2016 +0300
+++ b/Implab.Test/Implab.Format.Test/JsonTests.cs	Thu Mar 24 18:52:10 2016 +0300
@@ -1,11 +1,49 @@
 using NUnit.Framework;
 using System;
+using Implab.Formats.JSON;
 
 namespace Implab.Format.Test {
-    [TestFixture()]
+    [TestFixture]
     public class JsonTests {
-        [Test()]
-        public void TestCase() {
+        [Test]
+        public void TestScannerValidTokens() {
+            var scanner = new JSONScanner(@"9123, -123, 0, 0.1, -0.2, -0.1e3, 1.3E-3, ""some \t\n\u0020 text"", literal []{}:");
+
+            Tuple<JsonTokenType,object>[] expexted =  new [] {
+                new Tuple<JsonTokenType,object>(JsonTokenType.Number, 9123d),
+                new Tuple<JsonTokenType,object>(JsonTokenType.ValueSeparator, ", " ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.Number, -123d ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.ValueSeparator, ", " ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.Number, 0d ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.ValueSeparator, ", " ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.Number, 0.1d ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.ValueSeparator, ", " ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.Number, -0.2d ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.ValueSeparator, ", " ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.Number, -0.1e3d ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.ValueSeparator, ", " ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.Number, 1.3E-3d ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.ValueSeparator, ", " ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.String, "some \t\n  text" ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.ValueSeparator, ", " ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.Literal, "literal" ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.BeginArray, " [" ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.EndArray, "]" ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.BeginObject, "{" ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.EndObject, "}" ),
+                new Tuple<JsonTokenType,object>(JsonTokenType.NameSeparator, ":" )
+            };
+
+            object value;
+            JsonTokenType tokenType;
+            for (var i = 0; i < expexted.Length; i++) {
+                
+                Assert.IsTrue(scanner.ReadToken(out value, out tokenType));
+                Assert.AreEqual(expexted[i].Item1, tokenType);
+                Assert.AreEqual(expexted[i].Item2, value);
+            }
+
+            Assert.IsFalse(scanner.ReadToken(out value, out tokenType));
         }
     }
 }