예제 #1
0
        public void LinkDecoderVisibility(BindingFlags bindings, string json, string expected)
        {
            var encoded = Encoding.UTF8.GetBytes(json);
            var decoded = LinkerTester.Decode(Linker.CreateDecoder(new JSONSchema <Visibility>(), bindings), encoded);

            Assert.AreEqual(expected, decoded.ToString());
        }
예제 #2
0
        public void LinkDecoderProperty <T>(string json, T expected)
        {
            var encoded = Encoding.UTF8.GetBytes(json);
            var decoded = LinkerTester.Decode(Linker.CreateDecoder(new JSONSchema <PropertyContainer <T> >()), encoded);

            Assert.AreEqual(expected, decoded.Property);
        }
예제 #3
0
        public void LinkDecoderArrayFromList(string json, double[] expected)
        {
            var encoded = Encoding.UTF8.GetBytes(json);
            var decoded = LinkerTester.Decode(Linker.CreateDecoder(new JSONSchema <List <double> >()), encoded);

            CollectionAssert.AreEqual(expected, decoded);
        }
예제 #4
0
        public void RoundTripValueNative <T>(T instance)
        {
            var schema  = this.CreateSchema <T>();
            var decoder = Linker.CreateDecoder(schema);
            var encoder = Linker.CreateEncoder(schema);

            SchemaTester.AssertRoundTrip(decoder, encoder, instance);
        }
예제 #5
0
        public void RoundTripValueNullable()
        {
            var schema  = this.CreateSchema <double?>();
            var decoder = Linker.CreateDecoder(schema);
            var encoder = Linker.CreateEncoder(schema);

            SchemaTester.AssertRoundTrip(decoder, encoder, null);
            SchemaTester.AssertRoundTrip(decoder, encoder, 42);
        }
예제 #6
0
        public void LinkDecoderRecursive()
        {
            var encoded = Encoding.UTF8.GetBytes("{\"r\": {\"r\": {\"v\": 42}, \"v\": 17}, \"v\": 3}");
            var decoded = LinkerTester.Decode(Linker.CreateDecoder(new JSONSchema <Recursive>()), encoded);

            Assert.AreEqual(42, decoded.r.r.v);
            Assert.AreEqual(17, decoded.r.v);
            Assert.AreEqual(3, decoded.v);
        }
예제 #7
0
        public void RoundTripMixedTypes()
        {
            var schema  = this.CreateSchema <MixedContainer>();
            var decoder = Linker.CreateDecoder(schema);
            var encoder = Linker.CreateEncoder(schema);

            SchemaTester.AssertRoundTrip(decoder, encoder, new MixedContainer
            {
                floats  = new[] { 1.1f, 2.2f, 3.3f },
                integer = 17,
                option  = SomeEnum.B,
                pairs   = new Dictionary <string, string>
                {
                    { "a", "aaa" },
                    { "b", "bbb" }
                },
                text = "Hello, World!"
            });
        }
예제 #8
0
        public void DecodeNestedArray()
        {
            const string source =
                "{" +
                "\"children\":[{" +
                "\"children\":[],\"value\":\"a\"" +
                "},{" +
                "\"children\":[{\"children\":[],\"value\":\"b\"},{\"children\":[],\"value\":\"c\"}]," +
                "\"value\":\"d\"" +
                "},{" +
                "\"children\":[],\"value\":\"e\"" +
                "}]," +
                "\"value\":\"f\"" +
                "}";

            var decoder = Linker.CreateDecoder(new JSONSchema <MyNestedArray>());

            CompareNewtonsoft.BenchDecode(decoder, source, 10000);
        }
예제 #9
0
        public void DecodeFlatStructure()
        {
            const string source = "{" +
                                  "\"lorem\":0," +
                                  "\"ipsum\":65464658634633," +
                                  "\"sit\":1.1," +
                                  "\"amet\":\"Hello, World!\"," +
                                  "\"consectetur\":255," +
                                  "\"adipiscing\":64," +
                                  "\"elit\":\"z\"," + "\"sed\":53.25," +
                                  "\"pulvinar\":\"I sense a soul in search of answers\"," +
                                  "\"fermentum\":6553," +
                                  "\"hendrerit\":-32768" +
                                  "}";

            var decoder = Linker.CreateDecoder(new JSONSchema <MyFlatStructure>());

            CompareNewtonsoft.BenchDecode(decoder, source, 10000);
        }
예제 #10
0
        public void RoundTripNestedValue()
        {
            var schema  = this.CreateSchema <NestedValue>();
            var decoder = Linker.CreateDecoder(schema);
            var encoder = Linker.CreateEncoder(schema);

            SchemaTester.AssertRoundTrip(decoder, encoder, new NestedValue
            {
                child = new NestedValue
                {
                    child = new NestedValue
                    {
                        child = null,
                        value = 64
                    },
                    value = 42
                },
                value = 17
            });
        }
예제 #11
0
        public void RoundTripNestedArray()
        {
            var schema  = this.CreateSchema <NestedArray>();
            var decoder = Linker.CreateDecoder(schema);
            var encoder = Linker.CreateEncoder(schema);

            SchemaTester.AssertRoundTrip(decoder, encoder, new NestedArray
            {
                children = new[]
                {
                    new NestedArray
                    {
                        children = Array.Empty <NestedArray>(),
                        value    = "a"
                    },
                    new NestedArray
                    {
                        children = new []
                        {
                            new NestedArray
                            {
                                children = Array.Empty <NestedArray>(),
                                value    = "b"
                            },
                            new NestedArray
                            {
                                children = Array.Empty <NestedArray>(),
                                value    = "c"
                            }
                        },
                        value = "d"
                    },
                    new NestedArray
                    {
                        children = Array.Empty <NestedArray>(),
                        value    = "e"
                    }
                },
                value = "f"
            });
        }