public void Format_NamedObjectOneProperty_RendersSimpleObject() { var input = new[] { ModelGrammar.TokenObjectBegin("Yada"), ModelGrammar.TokenProperty("key"), ModelGrammar.TokenPrimitive("value"), ModelGrammar.TokenObjectEnd }; var expected = new[] { MarkupGrammar.TokenElementBegin(new DataName("div")), MarkupGrammar.TokenElementBegin(new DataName("dl")), MarkupGrammar.TokenAttribute(new DataName("title")), MarkupGrammar.TokenPrimitive(new DataName("Yada")), MarkupGrammar.TokenElementBegin(new DataName("dt")), MarkupGrammar.TokenPrimitive(new DataName("key")), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenElementBegin(new DataName("dd")), MarkupGrammar.TokenPrimitive("value"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenElementEnd }; var transformer = new HtmlOutTransformer(); var actual = transformer.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void Format_NamespacedObjectOneProperty_CorrectlyEmitsNamespace() { var input = new[] { ModelGrammar.TokenObjectBegin("foo"), ModelGrammar.TokenProperty(new DataName("key", String.Empty, "http://json.org")), ModelGrammar.TokenPrimitive("value"), ModelGrammar.TokenObjectEnd }; var expected = new[] { MarkupGrammar.TokenElementBegin(new DataName("div")), MarkupGrammar.TokenElementBegin(new DataName("dl")), MarkupGrammar.TokenAttribute(new DataName("title")), MarkupGrammar.TokenPrimitive(new DataName("foo")), MarkupGrammar.TokenElementBegin(new DataName("dt")), MarkupGrammar.TokenPrimitive(new DataName("key", String.Empty, "http://json.org")), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenElementBegin(new DataName("dd")), MarkupGrammar.TokenPrimitive("value"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenElementEnd }; var transformer = new HtmlOutTransformer(); var actual = transformer.Transform(input).ToArray(); Assert.Equal(expected, actual); }
protected override Expression VisitLambda(LambdaExpression expression, List <Token <ModelTokenType> > tokens) { tokens.Add(ModelGrammar.TokenObjectBeginUnnamed); tokens.Add(ModelGrammar.TokenProperty(expression.NodeType)); tokens.Add(ModelGrammar.TokenObjectBeginUnnamed); try { tokens.Add(ModelGrammar.TokenProperty("Type")); tokens.Add(ModelGrammar.TokenPrimitive(ExpressionWalker.GetTypeName(expression.Type))); tokens.Add(ModelGrammar.TokenProperty("Body")); Expression body = this.Visit(expression.Body, tokens); tokens.Add(ModelGrammar.TokenProperty("Parameters")); tokens.Add(ModelGrammar.TokenArrayBeginUnnamed); foreach (ParameterExpression param in expression.Parameters) { this.VisitParameter(param, tokens); } tokens.Add(ModelGrammar.TokenArrayEnd); // no change return(expression); } finally { tokens.Add(ModelGrammar.TokenObjectEnd); tokens.Add(ModelGrammar.TokenObjectEnd); } }
protected override NewExpression VisitNew(NewExpression expression, List <Token <ModelTokenType> > tokens) { tokens.Add(ModelGrammar.TokenObjectBeginUnnamed); tokens.Add(ModelGrammar.TokenProperty(expression.NodeType)); tokens.Add(ModelGrammar.TokenObjectBeginUnnamed); try { tokens.Add(ModelGrammar.TokenProperty("Arguments")); this.VisitExpressionList(expression.Arguments, tokens); tokens.Add(ModelGrammar.TokenProperty("Members")); if (expression.Members == null) { tokens.Add(ModelGrammar.TokenNull); } else { tokens.Add(ModelGrammar.TokenArrayBeginUnnamed); foreach (var member in expression.Members) { tokens.Add(ModelGrammar.TokenPrimitive(ExpressionWalker.GetMemberName(member))); } tokens.Add(ModelGrammar.TokenArrayEnd); } // no change return(expression); } finally { tokens.Add(ModelGrammar.TokenObjectEnd); tokens.Add(ModelGrammar.TokenObjectEnd); } }
protected override Expression VisitConditional(ConditionalExpression expression, List <Token <ModelTokenType> > tokens) { tokens.Add(ModelGrammar.TokenObjectBeginUnnamed); tokens.Add(ModelGrammar.TokenProperty(expression.NodeType)); tokens.Add(ModelGrammar.TokenObjectBeginUnnamed); try { tokens.Add(ModelGrammar.TokenProperty("Test")); this.Visit(expression.Test, tokens); tokens.Add(ModelGrammar.TokenProperty("IfTrue")); this.Visit(expression.IfTrue, tokens); tokens.Add(ModelGrammar.TokenProperty("IfFalse")); this.Visit(expression.IfFalse, tokens); // no change return(expression); } finally { tokens.Add(ModelGrammar.TokenObjectEnd); tokens.Add(ModelGrammar.TokenObjectEnd); } }
protected override Expression VisitMethodCall(MethodCallExpression expression, List <Token <ModelTokenType> > tokens) { tokens.Add(ModelGrammar.TokenObjectBeginUnnamed); tokens.Add(ModelGrammar.TokenProperty(expression.NodeType)); tokens.Add(ModelGrammar.TokenObjectBeginUnnamed); try { tokens.Add(ModelGrammar.TokenProperty("Object")); this.Visit(expression.Object, tokens); tokens.Add(ModelGrammar.TokenProperty("Method")); tokens.Add(ModelGrammar.TokenPrimitive(ExpressionWalker.GetMemberName(expression.Method))); tokens.Add(ModelGrammar.TokenProperty("Arguments")); this.VisitExpressionList(expression.Arguments, tokens); // no change return(expression); } finally { tokens.Add(ModelGrammar.TokenObjectEnd); tokens.Add(ModelGrammar.TokenObjectEnd); } }
protected override Expression VisitUnary(UnaryExpression expression, List <Token <ModelTokenType> > tokens) { tokens.Add(ModelGrammar.TokenObjectBeginUnnamed); tokens.Add(ModelGrammar.TokenProperty(expression.NodeType)); tokens.Add(ModelGrammar.TokenObjectBeginUnnamed); try { tokens.Add(ModelGrammar.TokenProperty("Type")); tokens.Add(ModelGrammar.TokenPrimitive(ExpressionWalker.GetTypeName(expression.Type))); tokens.Add(ModelGrammar.TokenProperty("Method")); tokens.Add(ModelGrammar.TokenPrimitive(ExpressionWalker.GetMemberName(expression.Method))); tokens.Add(ModelGrammar.TokenProperty("Operand")); this.Visit(expression.Operand, tokens); // no change return(expression); } finally { tokens.Add(ModelGrammar.TokenObjectEnd); tokens.Add(ModelGrammar.TokenObjectEnd); } }
protected override Expression VisitBinary(BinaryExpression expression, List <Token <ModelTokenType> > tokens) { tokens.Add(ModelGrammar.TokenObjectBeginUnnamed); tokens.Add(ModelGrammar.TokenProperty(expression.NodeType)); tokens.Add(ModelGrammar.TokenObjectBeginUnnamed); try { tokens.Add(ModelGrammar.TokenProperty("Left")); this.Visit(expression.Left, tokens); tokens.Add(ModelGrammar.TokenProperty("Right")); this.Visit(expression.Right, tokens); tokens.Add(ModelGrammar.TokenProperty("Conversion")); this.Visit(expression.Conversion, tokens); tokens.Add(ModelGrammar.TokenProperty("IsLiftedToNull")); tokens.Add(ModelGrammar.TokenPrimitive(expression.IsLiftedToNull)); tokens.Add(ModelGrammar.TokenProperty("Method")); tokens.Add(ModelGrammar.TokenPrimitive(ExpressionWalker.GetMemberName(expression.Method))); // no change return(expression); } finally { tokens.Add(ModelGrammar.TokenObjectEnd); tokens.Add(ModelGrammar.TokenObjectEnd); } }
public void GetTokens_ParentAndChildSharePrefixedNamespace_ReturnsSequence() { var input = new[] { MarkupGrammar.TokenElementBegin(new DataName("foo", "bar", "http://example.org")), MarkupGrammar.TokenElementBegin(new DataName("child", "bar", "http://example.org")), MarkupGrammar.TokenPrimitive("value"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenElementEnd, }; var expected = new[] { ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive("bar:foo"), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("xmlns:bar"), ModelGrammar.TokenPrimitive("http://example.org"), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive("bar:child"), ModelGrammar.TokenPrimitive("value"), ModelGrammar.TokenArrayEnd, ModelGrammar.TokenArrayEnd }; var converter = new JsonMLReader.JsonMLInTransformer(); var actual = converter.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void GetTokens_ParentAndChildDifferentDefaultNamespaces_ReturnsSequence() { var input = new[] { MarkupGrammar.TokenElementBegin(new DataName("foo", String.Empty, "http://json.org")), MarkupGrammar.TokenElementBegin(new DataName("child", String.Empty, "http://jsonfx.net")), MarkupGrammar.TokenPrimitive("text value"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenElementEnd }; var expected = new[] { ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive("foo"), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("xmlns"), ModelGrammar.TokenPrimitive("http://json.org"), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive("child"), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("xmlns"), ModelGrammar.TokenPrimitive("http://jsonfx.net"), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenPrimitive("text value"), ModelGrammar.TokenArrayEnd, ModelGrammar.TokenArrayEnd }; var converter = new JsonMLReader.JsonMLInTransformer(); var actual = converter.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void GetTokens_NamespacedChildTag_ReturnsSequence() { var input = new[] { MarkupGrammar.TokenElementBegin(new DataName("foo")), MarkupGrammar.TokenElementBegin(new DataName("child", String.Empty, "http://example.com/schema")), MarkupGrammar.TokenPrimitive("value"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenElementEnd }; var expected = new[] { ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive("foo"), ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive("child"), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("xmlns"), ModelGrammar.TokenPrimitive("http://example.com/schema"), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenPrimitive("value"), ModelGrammar.TokenArrayEnd, ModelGrammar.TokenArrayEnd }; var converter = new JsonMLReader.JsonMLInTransformer(); var actual = converter.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void GetTokens_MultipleConventions_ReturnsTokens() { var input = new CustomNamedObject { UpperPropertyName = "Foo.", OtherPropertyName = "Bar." }; var expected = new[] { ModelGrammar.TokenObjectBegin("CustomNamedObject"), ModelGrammar.TokenProperty("upperPropertyName"), ModelGrammar.TokenPrimitive("Foo."), ModelGrammar.TokenProperty("arbitraryOther"), ModelGrammar.TokenPrimitive("Bar."), ModelGrammar.TokenObjectEnd }; var resolver = new CombinedResolverStrategy( new JsonResolverStrategy(), new DataContractResolverStrategy(), new XmlResolverStrategy(), new ConventionResolverStrategy(ConventionResolverStrategy.WordCasing.PascalCase), new ConventionResolverStrategy(ConventionResolverStrategy.WordCasing.CamelCase), new ConventionResolverStrategy(ConventionResolverStrategy.WordCasing.Lowercase, "-"), new ConventionResolverStrategy(ConventionResolverStrategy.WordCasing.Uppercase, "_")); var actual = new ModelWalker(new DataWriterSettings(resolver)).GetTokens(input).ToArray(); Assert.Equal(expected, actual, false); }
public void GetTokens_MultipleConventions_ReturnsSingleDataName() { var input = new NamingTest { Little_BITOfEverything123456789MixedIn = "Foo." }; var expected = new[] { ModelGrammar.TokenObjectBegin("Naming Test"), ModelGrammar.TokenProperty("Little BIT Of Everything 123456789 Mixed In"), ModelGrammar.TokenPrimitive("Foo."), ModelGrammar.TokenObjectEnd }; var resolver = new CombinedResolverStrategy( new ConventionResolverStrategy(ConventionResolverStrategy.WordCasing.NoChange, " "), new ConventionResolverStrategy(ConventionResolverStrategy.WordCasing.PascalCase), new ConventionResolverStrategy(ConventionResolverStrategy.WordCasing.CamelCase), new ConventionResolverStrategy(ConventionResolverStrategy.WordCasing.Lowercase, "-"), new ConventionResolverStrategy(ConventionResolverStrategy.WordCasing.Uppercase, "_")); var actual = new ModelWalker(new DataWriterSettings(resolver)).GetTokens(input).ToArray(); Assert.Equal(expected, actual, false); }
public void Analyze_DynamicExample_ReturnsDynamicObject() { var input = new[] { ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("foo"), ModelGrammar.TokenPrimitive("hello world"), ModelGrammar.TokenProperty("number"), ModelGrammar.TokenPrimitive(42), ModelGrammar.TokenProperty("boolean"), ModelGrammar.TokenPrimitive(false), ModelGrammar.TokenProperty("null"), ModelGrammar.TokenPrimitive(null), ModelGrammar.TokenObjectEnd }; dynamic expected = new DynamicExample(); expected.foo = "hello world"; expected.number = 42; expected.boolean = false; expected.@null = null; var analyzer = new ModelAnalyzer(new DataReaderSettings()); var actual = analyzer.Analyze <DynamicExample>(input).Single(); Assert.Equal(expected.Values, actual.Values, false); }
public void GetTokens_DynamicExample_ReturnsDynamicObject() { dynamic input = new DynamicExample(); input.foo = "hello world"; input.number = 42; input.boolean = false; input.@null = null; var expected = new[] { ModelGrammar.TokenObjectBegin("DynamicExample"), ModelGrammar.TokenProperty("foo"), ModelGrammar.TokenPrimitive("hello world"), ModelGrammar.TokenProperty("number"), ModelGrammar.TokenPrimitive(42), ModelGrammar.TokenProperty("boolean"), ModelGrammar.TokenPrimitive(false), ModelGrammar.TokenProperty("null"), ModelGrammar.TokenPrimitive(null), ModelGrammar.TokenObjectEnd }; var walker = new ModelWalker(new DataWriterSettings()); var actual = walker.GetTokens(input).ToArray(); Assert.Equal(expected, actual, false); }
public void Analyze_ObjectNested_ReturnsNestedObject() { // input from pass3.json in test suite at http://www.json.org/JSON_checker/ var input = new[] { ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("JSON Test Pattern pass3"), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("The outermost value"), ModelGrammar.TokenPrimitive("must be an object or array."), ModelGrammar.TokenProperty("In this test"), ModelGrammar.TokenPrimitive("It is an object."), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenObjectEnd }; var expected = new Dictionary <string, object> { { "JSON Test Pattern pass3", new Dictionary <string, object> { { "The outermost value", "must be an object or array." }, { "In this test", "It is an object." } } } }; var analyzer = new ModelAnalyzer(new DataReaderSettings()); var actual = analyzer.Analyze(input).Cast <IDictionary <string, object> >().Single(); Assert.Equal(expected, actual, false); }
public void GetTokens_ExpandoObject_ReturnsObjectTokens() { dynamic input = new ExpandoObject(); input.One = 1; input.Two = 2; input.Three = 3; var expected = new[] { ModelGrammar.TokenObjectBegin("object"), ModelGrammar.TokenProperty("One"), ModelGrammar.TokenPrimitive(1), ModelGrammar.TokenProperty("Two"), ModelGrammar.TokenPrimitive(2), ModelGrammar.TokenProperty("Three"), ModelGrammar.TokenPrimitive(3), ModelGrammar.TokenObjectEnd }; var walker = new ModelWalker(new DataWriterSettings()); var actual = walker.GetTokens((object)input).ToArray(); Assert.Equal(expected, actual); }
public void GetTokens_ExpandoObjectNested_ReturnsObjectTokens() { dynamic input = new ExpandoObject(); input.foo = true; input.array = new object[] { false, 1, 2, Math.PI, null, "hello world." }; var expected = new[] { ModelGrammar.TokenObjectBegin("object"), ModelGrammar.TokenProperty("foo"), ModelGrammar.TokenPrimitive(true), ModelGrammar.TokenProperty("array"), ModelGrammar.TokenArrayBegin("array"), ModelGrammar.TokenPrimitive(false), ModelGrammar.TokenPrimitive(1), ModelGrammar.TokenPrimitive(2), ModelGrammar.TokenPrimitive(Math.PI), ModelGrammar.TokenPrimitive(null), ModelGrammar.TokenPrimitive("hello world."), ModelGrammar.TokenArrayEnd, ModelGrammar.TokenObjectEnd }; var walker = new ModelWalker(new DataWriterSettings()); var actual = walker.GetTokens(input).ToArray(); Assert.Equal(expected, actual); }
public void GetTokens_HtmlContentPrettyPrinted_ReturnsSequence() { var input = new[] { ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive(new DataName("div")), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty(new DataName("class")), ModelGrammar.TokenPrimitive("content"), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenPrimitive("\r\n\t"), ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive(new DataName("p")), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty(new DataName("style")), ModelGrammar.TokenPrimitive("color:red"), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenPrimitive("\r\n\t\t"), ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive(new DataName("strong")), ModelGrammar.TokenPrimitive("Lorem ipsum"), ModelGrammar.TokenArrayEnd, ModelGrammar.TokenPrimitive(" dolor sit amet, "), ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive(new DataName("i")), ModelGrammar.TokenPrimitive("consectetur"), ModelGrammar.TokenArrayEnd, ModelGrammar.TokenPrimitive(" adipiscing elit.\r\n\t"), ModelGrammar.TokenArrayEnd, ModelGrammar.TokenPrimitive("\r\n"), ModelGrammar.TokenArrayEnd }; var expected = new[] { MarkupGrammar.TokenElementBegin(new DataName("div")), MarkupGrammar.TokenAttribute(new DataName("class")), MarkupGrammar.TokenPrimitive("content"), MarkupGrammar.TokenPrimitive("\r\n\t"), MarkupGrammar.TokenElementBegin(new DataName("p")), MarkupGrammar.TokenAttribute(new DataName("style")), MarkupGrammar.TokenPrimitive("color:red"), MarkupGrammar.TokenPrimitive("\r\n\t\t"), MarkupGrammar.TokenElementBegin(new DataName("strong")), MarkupGrammar.TokenPrimitive("Lorem ipsum"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenPrimitive(" dolor sit amet, "), MarkupGrammar.TokenElementBegin(new DataName("i")), MarkupGrammar.TokenPrimitive("consectetur"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenPrimitive(" adipiscing elit.\r\n\t"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenPrimitive("\r\n"), MarkupGrammar.TokenElementEnd, }; var converter = new JsonMLWriter.JsonMLOutTransformer(); var actual = converter.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void GetTokens_ObjectDictionary_ReturnsObjectTokens() { var input = new Dictionary <string, object> { { "One", 1 }, { "Two", 2 }, { "Three", 3 } }; var expected = new[] { ModelGrammar.TokenObjectBegin("object"), ModelGrammar.TokenProperty("One"), ModelGrammar.TokenPrimitive(1), ModelGrammar.TokenProperty("Two"), ModelGrammar.TokenPrimitive(2), ModelGrammar.TokenProperty("Three"), ModelGrammar.TokenPrimitive(3), ModelGrammar.TokenObjectEnd }; var walker = new ModelWalker(new DataWriterSettings()); var actual = walker.GetTokens(input).ToArray(); Assert.Equal(expected, actual); }
public void GetTokens_AttributeWhitespaceQuotDelims_ReturnsSequence() { var input = new[] { ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive(new DataName("root")), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty(new DataName("white")), ModelGrammar.TokenPrimitive(" extra whitespace around quote delims "), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenArrayEnd }; var expected = new[] { MarkupGrammar.TokenElementBegin(new DataName("root")), MarkupGrammar.TokenAttribute(new DataName("white")), MarkupGrammar.TokenPrimitive(" extra whitespace around quote delims "), MarkupGrammar.TokenElementEnd }; var converter = new JsonMLWriter.JsonMLOutTransformer(); var actual = converter.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void GetTokens_MultipleAttributes_ReturnsSequence() { var input = new[] { ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive(new DataName("root")), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty(new DataName("no-value")), ModelGrammar.TokenPrimitive(String.Empty), ModelGrammar.TokenProperty(new DataName("whitespace")), ModelGrammar.TokenPrimitive(" this contains whitespace "), ModelGrammar.TokenProperty(new DataName("anyQuotedText")), ModelGrammar.TokenPrimitive("/\\\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?"), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenArrayEnd }; var expected = new[] { MarkupGrammar.TokenElementBegin(new DataName("root")), MarkupGrammar.TokenAttribute(new DataName("no-value")), MarkupGrammar.TokenPrimitive(String.Empty), MarkupGrammar.TokenAttribute(new DataName("whitespace")), MarkupGrammar.TokenPrimitive(" this contains whitespace "), MarkupGrammar.TokenAttribute(new DataName("anyQuotedText")), MarkupGrammar.TokenPrimitive("/\\\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?"), MarkupGrammar.TokenElementEnd }; var converter = new JsonMLWriter.JsonMLOutTransformer(); var actual = converter.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void GetTokens_DifferentPrefixSameNamespace_ReturnsSequence() { var input = new[] { ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive(new DataName("foo", String.Empty, "http://example.org")), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty(new DataName("key", "blah", "http://example.org")), ModelGrammar.TokenPrimitive("value"), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenArrayEnd }; var expected = new[] { MarkupGrammar.TokenElementBegin(new DataName("foo", String.Empty, "http://example.org")), MarkupGrammar.TokenAttribute(new DataName("key", "blah", "http://example.org")), MarkupGrammar.TokenPrimitive("value"), MarkupGrammar.TokenElementEnd }; var converter = new JsonMLWriter.JsonMLOutTransformer(); var actual = converter.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void GetTokens_SingleAttributeEmptyValue_ReturnsSequence() { var input = new[] { ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive(new DataName("root")), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty(new DataName("emptyValue")), ModelGrammar.TokenPrimitive(String.Empty), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenArrayEnd }; var expected = new[] { MarkupGrammar.TokenElementBegin(new DataName("root")), MarkupGrammar.TokenAttribute(new DataName("emptyValue")), MarkupGrammar.TokenPrimitive(String.Empty), MarkupGrammar.TokenElementEnd }; var converter = new JsonMLWriter.JsonMLOutTransformer(); var actual = converter.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void GetTokens_ArrayRoot_ReturnsDocument() { // BSON doesn't provide a way to know if the root element is an array var input = new byte[] { 0x26, 0x00, 0x00, 0x00, 0x02, (byte)'0', 0, 0x08, 0x00, 0x00, 0x00, (byte)'a', (byte)'w', (byte)'e', (byte)'s', (byte)'o', (byte)'m', (byte)'e', 0x00, 0x01, (byte)'1', 0, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x14, 0x40, 0x10, (byte)'2', 0, 0xC2, 0x07, 0x00, 0x00, 0x00 }; var expected = new[] { ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("0"), ModelGrammar.TokenPrimitive("awesome"), ModelGrammar.TokenProperty("1"), ModelGrammar.TokenPrimitive(5.05), ModelGrammar.TokenProperty("2"), ModelGrammar.TokenPrimitive(1986), ModelGrammar.TokenObjectEnd }; var tokenizer = new BsonReader.BsonTokenizer(); var actual = tokenizer.GetTokens(input).ToArray(); Assert.Equal(expected, actual); }
public void Format_NestedObjectsAlternatingNamespaces_CorrectlyEmitsNamespaces() { var input = new[] { MarkupGrammar.TokenElementBegin(new DataName("foo1", String.Empty, "http://json.org")), MarkupGrammar.TokenElementBegin(new DataName("key1", String.Empty, "http://jsonfx.net")), MarkupGrammar.TokenElementBegin(new DataName("key2", String.Empty, "http://json.org")), MarkupGrammar.TokenPrimitive("value"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenElementEnd, }; var expected = new[] { ModelGrammar.TokenObjectBegin(new DataName("foo1", String.Empty, "http://json.org")), ModelGrammar.TokenProperty(new DataName("key1", String.Empty, "http://jsonfx.net")), ModelGrammar.TokenObjectBegin(new DataName("key2", String.Empty, "http://json.org")), ModelGrammar.TokenProperty(new DataName("key2", String.Empty, "http://json.org")), ModelGrammar.TokenPrimitive("value"), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenObjectEnd }; var transformer = new XmlReader.XmlInTransformer(new DataReaderSettings()); var actual = transformer.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void Format_ObjectNested_RendersNestedObject() { // input from pass3.json in test suite at http://www.json.org/JSON_checker/ var input = new[] { MarkupGrammar.TokenElementBegin(new DataName("object")), MarkupGrammar.TokenElementBegin(new DataName("JSON_x0020_Test_x0020_Pattern_x0020_pass3")), MarkupGrammar.TokenElementBegin(new DataName("The_x0020_outermost_x0020_value")), MarkupGrammar.TokenPrimitive("must be an object or array."), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenElementBegin(new DataName("In_x0020_this_x0020_test")), MarkupGrammar.TokenPrimitive("It is an object."), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenElementEnd, }; var expected = new[] { ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("JSON Test Pattern pass3"), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("The outermost value"), ModelGrammar.TokenPrimitive("must be an object or array."), ModelGrammar.TokenProperty("In this test"), ModelGrammar.TokenPrimitive("It is an object."), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenObjectEnd }; var transformer = new XmlReader.XmlInTransformer(new DataReaderSettings()); var actual = transformer.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void Format_ObjectNestedPrettyPrint_ReturnsPrettyPrintedNestedObject() { // input from pass3.json in test suite at http://www.json.org/JSON_checker/ var input = new[] { ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("JSON Test Pattern pass3"), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("The outermost value"), ModelGrammar.TokenPrimitive("must be an object or array."), ModelGrammar.TokenProperty("In this test"), ModelGrammar.TokenPrimitive("It is an object."), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenObjectEnd }; const string expected = @"{ ""JSON Test Pattern pass3"" : { ""The outermost value"" : ""must be an object or array."", ""In this test"" : ""It is an object."" } }"; var formatter = new JsonWriter.JsonFormatter(new DataWriterSettings { PrettyPrint = true }); var actual = formatter.Format(input); Assert.Equal(expected, actual); }
public void Format_ObjectOneNamespacedProperty_CorrectlyIgnoresNamespace() { var input = new[] { ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty(new DataName("key", null, "http://json.org")), ModelGrammar.TokenPrimitive("value"), ModelGrammar.TokenObjectEnd }; const string expected = @"{""key"":""value""}"; var formatter = new JsonWriter.JsonFormatter(new DataWriterSettings()); var actual = formatter.Format(input); Assert.Equal(expected, actual); }
public void Format_ObjectOneProperty_ReturnsSimpleObject() { var input = new[] { ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("key"), ModelGrammar.TokenPrimitive("value"), ModelGrammar.TokenObjectEnd }; const string expected = @"{""key"":""value""}"; var formatter = new JsonWriter.JsonFormatter(new DataWriterSettings()); var actual = formatter.Format(input); Assert.Equal(expected, actual); }