diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -18,3 +18,6 @@ MonoPlay/obj/
Implab.Test/Implab.Format.Test/bin/
Implab.Test/Implab.Format.Test/obj/
*.suo
+Implab.Format.Test/bin/
+Implab.Format.Test/obj/
+packages/
diff --git a/Implab.Test/Implab.Format.Test/Implab.Format.Test.csproj b/Implab.Format.Test/Implab.Format.Test.csproj
rename from Implab.Test/Implab.Format.Test/Implab.Format.Test.csproj
rename to Implab.Format.Test/Implab.Format.Test.csproj
--- a/Implab.Test/Implab.Format.Test/Implab.Format.Test.csproj
+++ b/Implab.Format.Test/Implab.Format.Test.csproj
@@ -31,25 +31,27 @@
false
+
+ ..\packages\NUnit.3.8.1\lib\net45\nunit.framework.dll
+ True
+
-
- ..\..\packages\NUnit.2.6.4\lib\nunit.framework.dll
-
+
-
+
{F550F1F8-8746-4AD0-9614-855F4C4B7F05}
Implab
-
+
-
+
\ No newline at end of file
diff --git a/Implab.Test/Implab.Format.Test/JsonTests.cs b/Implab.Format.Test/JsonTests.cs
rename from Implab.Test/Implab.Format.Test/JsonTests.cs
rename to Implab.Format.Test/JsonTests.cs
--- a/Implab.Test/Implab.Format.Test/JsonTests.cs
+++ b/Implab.Format.Test/JsonTests.cs
@@ -2,7 +2,10 @@
using System;
using Implab.Formats.JSON;
using Implab.Automaton;
-
+using Implab.Xml;
+using System.Xml;
+using System.Text;
+
namespace Implab.Format.Test {
[TestFixture]
public class JsonTests {
@@ -10,7 +13,7 @@ namespace Implab.Format.Test {
public void TestScannerValidTokens() {
using (var scanner = new JSONScanner(@"9123, -123, 0, 0.1, -0.2, -0.1e3, 1.3E-3, ""some \t\n\u0020 text"", literal []{}:")) {
- Tuple[] expexted = {
+ Tuple[] expexted = {
new Tuple(JsonTokenType.Number, 9123d),
new Tuple(JsonTokenType.ValueSeparator, ", "),
new Tuple(JsonTokenType.Number, -123d),
@@ -37,8 +40,8 @@ namespace Implab.Format.Test {
object value;
JsonTokenType tokenType;
- for (var i = 0; i < expexted.Length; i++) {
-
+ 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);
@@ -50,7 +53,7 @@ namespace Implab.Format.Test {
[Test]
public void TestScannerBadTokens() {
- var bad = new [] {
+ var bad = new[] {
" 1",
" literal",
" \"",
@@ -66,22 +69,76 @@ namespace Implab.Format.Test {
"-.123"
};
- foreach (var json in bad)
+ foreach (var json in bad) {
using (var scanner = new JSONScanner(json)) {
try {
object value;
JsonTokenType token;
scanner.ReadToken(out value, out token);
- if (!Object.Equals(value,json)) {
- Console.WriteLine("'{0}' is read as {1}", json, value is String ? String.Format("'{0}'", value) : value );
+ if (!Object.Equals(value, json)) {
+ Console.WriteLine("'{0}' is read as {1}", json, value is String ? String.Format("'{0}'", value) : value);
continue;
}
Assert.Fail("Token '{0}' shouldn't pass", json);
} catch (ParserException e) {
Console.WriteLine(e.Message);
}
- }
-
+ }
+ }
+ }
+
+ [Test]
+ public void JsonXmlReaderSimpleTest() {
+ var json = "\"some text\"";
+ //Console.WriteLine($"JSON: {json}");
+ //Console.WriteLine("XML");
+ /*using (var xmlReader = new JsonXmlReader(new JSONParser(json), new JsonXmlReaderOptions { NamespaceUri = "JsonXmlReaderSimpleTest", RootName = "string", NodesPrefix = "json" })) {
+ Assert.AreEqual(xmlReader.ReadState, System.Xml.ReadState.Initial);
+
+ AssertRead(xmlReader, XmlNodeType.XmlDeclaration);
+ AssertRead(xmlReader, XmlNodeType.Element);
+ AssertRead(xmlReader, XmlNodeType.Text);
+ AssertRead(xmlReader, XmlNodeType.EndElement);
+ Assert.IsFalse(xmlReader.Read());
+ }*/
+
+ //DumpJsonParse("\"text value\"");
+ //DumpJsonParse("null");
+ //DumpJsonParse("true");
+ //DumpJsonParse("{}");
+ //DumpJsonParse("[]");
+ DumpJsonParse("{\"one\":1, \"two\":2}");
+ DumpJsonParse("[1,2,3]");
+ DumpJsonParse("[{\"info\": [7,8,9]}]");
+ DumpJsonFlatParse("[1,2,[3,4],{\"info\": [5,6]},{\"num\": [7,8,null]}, null,[null]]");
+ }
+
+ void AssertRead(XmlReader reader, XmlNodeType expected) {
+ Assert.IsTrue(reader.Read());
+ Console.WriteLine($"{new string(' ', reader.Depth*2)}{reader}");
+ Assert.AreEqual(expected, reader.NodeType);
+ }
+
+ void DumpJsonParse(string json) {
+ Console.WriteLine($"JSON: {json}");
+ Console.WriteLine("XML");
+ using (var xmlReader = new JsonXmlReader(new JSONParser(json), new JsonXmlReaderOptions { NamespaceUri = "JsonXmlReaderSimpleTest", NodesPrefix = "json" })) {
+ while (xmlReader.Read())
+ Console.WriteLine($"{new string(' ', xmlReader.Depth * 2)}{xmlReader}");
+ }
+ }
+
+ void DumpJsonFlatParse(string json) {
+ Console.WriteLine($"JSON: {json}");
+ Console.WriteLine("XML");
+ using (var xmlWriter = XmlWriter.Create(Console.Out, new XmlWriterSettings {
+ Indent = true,
+ CloseOutput = false,
+ ConformanceLevel = ConformanceLevel.Document
+ }))
+ using (var xmlReader = new JsonXmlReader(new JSONParser(json), new JsonXmlReaderOptions { NamespaceUri = "JsonXmlReaderSimpleTest", NodesPrefix = "", FlattenArrays = true })) {
+ xmlWriter.WriteNode(xmlReader, false);
+ }
}
}
}
diff --git a/Implab.Test/Implab.Format.Test/packages.config b/Implab.Format.Test/packages.config
rename from Implab.Test/Implab.Format.Test/packages.config
rename to Implab.Format.Test/packages.config
--- a/Implab.Test/Implab.Format.Test/packages.config
+++ b/Implab.Format.Test/packages.config
@@ -1,4 +1,4 @@
-
-
-
+
+
+
\ No newline at end of file
diff --git a/Implab.Test/Implab.Test.csproj b/Implab.Test/Implab.Test.csproj
--- a/Implab.Test/Implab.Test.csproj
+++ b/Implab.Test/Implab.Test.csproj
@@ -76,9 +76,7 @@
Implab
-
-
-
+