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 Render_SomeFormatter_FormatterIsCalled()
        {
            var formatterMock = new Mock <IPropertyFormatter>();

            var formatter = formatterMock.Object;
            var scalar    = new ScalarToken(null);

            scalar.Render(formatter);

            formatterMock.Verify(m => m.Format(scalar), Times.Once);
        }
        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_NullFormatter_ThrowsArgumentNullException()
        {
            var scalar = new ScalarToken(null);

            Assert.Throws <ArgumentNullException>(() => scalar.Render(null));
        }