public void Format_NonEmptySequenceToken_IsFormattedAsArray()
        {
            var output   = new StringWriter();
            var formater = new JsonPropertyFormatter(output);
            var token    = new SequenceToken(new[] { new ScalarToken(1), new ScalarToken("foo") });

            token.Render(formater);

            Assert.Equal("[1, \"foo\"]", output.ToString());
        }
        public void Format_EmptySequenceToken_IsFormattedAsArray()
        {
            var output   = new StringWriter();
            var formater = new JsonPropertyFormatter(output);
            var token    = new SequenceToken(null);

            token.Render(formater);

            Assert.Equal("[]", output.ToString());
        }
        public void Render_PropertyToken_IsFormattedAsProperty()
        {
            var output   = new StringWriter();
            var formater = new JsonPropertyFormatter(output);
            var property = new PropertyToken("property", new ScalarToken(1));

            property.Render(formater);

            Assert.Equal("\"property\": 1", output.ToString());
        }
        public void Render_EmptyDictionaryToken_IsFormattedAsEmptyArray()
        {
            var output   = new StringWriter();
            var formater = new JsonPropertyFormatter(output);
            var token    = new DictionaryToken(null);

            token.Render(formater);

            Assert.Equal("[]", output.ToString());
        }
        public void Format_StringScalarToken_SpecialCharactersAreEscaped()
        {
            var output   = new StringWriter();
            var formater = new JsonPropertyFormatter(output);
            var token    = new ScalarToken(" \" ");

            token.Render(formater);

            Assert.Equal("\" \\\" \"", output.ToString());
        }
        public void Format_NullScalarToken_IsFormatedAsNullString()
        {
            var output   = new StringWriter();
            var formater = new JsonPropertyFormatter(output);
            var token    = new ScalarToken(null);

            token.Render(formater);

            Assert.Equal("null", output.ToString());
        }
        public void Format_NonFormattableScalarToken_IsFormatedFromToString()
        {
            var output   = new StringWriter();
            var formater = new JsonPropertyFormatter(output);
            var value    = new Nonformatable();
            var token    = new ScalarToken(value);

            token.Render(formater);

            Assert.Equal(value.ToString(), output.ToString());
        }
        public void Format_IntScalarToken_IsFormatedAsNumber()
        {
            var     output   = new StringWriter();
            var     formater = new JsonPropertyFormatter(output);
            decimal value    = Some.Int();
            var     token    = new ScalarToken(value);

            token.Render(formater);

            Assert.Equal(value.ToString(CultureInfo.InvariantCulture), output.ToString());
        }
        public void Format_DecimalScalarToken_IsFormatedUsingSpecificCulture()
        {
            var     formatProvider = new CultureInfo("cs-CZ");
            var     output         = new StringWriter();
            var     formater       = new JsonPropertyFormatter(output, formatProvider);
            decimal value          = Some.Decimal();
            var     token          = new ScalarToken(value);

            token.Render(formater);

            Assert.Equal(value.ToString(formatProvider), output.ToString());
        }
        public void Render_StructureToken_IsFormattedAsSetOfProperties()
        {
            var output   = new StringWriter();
            var formater = new JsonPropertyFormatter(output);
            var token    = new StructureToken(new[]
            {
                new PropertyToken("Foo", new ScalarToken(1)),
                new PropertyToken("Bar", new ScalarToken("bar"))
            }, "MyType");


            token.Render(formater);

            Assert.Equal("\"MyType\": { \"Foo\": 1, \"Bar\": \"bar\" }", output.ToString());
        }
        public void Render_NonEmptyDictionaryToken_IsFormattedAsArrayOfKeyValuePairs()
        {
            var output   = new StringWriter();
            var formater = new JsonPropertyFormatter(output);
            var token    = new DictionaryToken(new[]
            {
                new KeyValuePair <ScalarToken, IPropertyToken>(
                    new ScalarToken("foo"), new ScalarToken(1)),
                new KeyValuePair <ScalarToken, IPropertyToken>(
                    new ScalarToken("bar"), new SequenceToken(new[] { new ScalarToken(1.2) }))
            });

            token.Render(formater);

            Assert.Equal("[{\"key\": \"foo\", \"value\": 1}, {\"key\": \"bar\", \"value\": [1.2]}]", output.ToString());
        }