예제 #1
0
        public void LinkEncoderArrayFromList(double[] value, string expected)
        {
            var decoded = new List <double>(value);
            var encoded = LinkerTester.Encode(Linker.CreateEncoder(new JSONSchema <List <double> >()), decoded);

            CollectionAssert.AreEqual(expected, Encoding.UTF8.GetString(encoded));
        }
예제 #2
0
        public void LinkEncoderVisibility(BindingFlags bindings, string expected)
        {
            var decoded = new Visibility();
            var encoded = LinkerTester.Encode(Linker.CreateEncoder(new JSONSchema <Visibility>(), bindings), decoded);

            Assert.AreEqual(expected, Encoding.UTF8.GetString(encoded));
        }
예제 #3
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);
        }
예제 #4
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);
        }
예제 #5
0
        public void LinkEncoderProperty <T>(T value, string expected)
        {
            var decoded = new PropertyContainer <T> {
                Property = value
            };
            var encoded = LinkerTester.Encode(Linker.CreateEncoder(new JSONSchema <PropertyContainer <T> >()), decoded);

            Assert.AreEqual(expected, Encoding.UTF8.GetString(encoded));
        }
예제 #6
0
        public void LinkEncoderRecursive(bool omitNull, string expected)
        {
            var decoded = new Recursive {
                r = new Recursive {
                    r = new Recursive {
                        v = 42
                    }, v = 17
                }, v = 3
            };
            var encoded = LinkerTester.Encode(Linker.CreateEncoder(new JSONSchema <Recursive>(new JSONConfiguration {
                OmitNull = omitNull
            })), decoded);

            Assert.AreEqual(expected, Encoding.UTF8.GetString(encoded));
        }
예제 #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 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
            });
        }
예제 #9
0
        public void EncodeFlatStructure()
        {
            var encoder  = Linker.CreateEncoder(new JSONSchema <MyFlatStructure>());
            var instance = new MyFlatStructure
            {
                adipiscing  = 64,
                amet        = "Hello, World!",
                consectetur = 255,
                elit        = 'z',
                fermentum   = 6553,
                hendrerit   = -32768,
                ipsum       = 65464658634633,
                lorem       = 0,
                pulvinar    = "I sense a soul in search of answers",
                sed         = 53.25f,
                sit         = 1.1
            };

            CompareNewtonsoft.BenchEncode(encoder, instance, 10000);
        }
예제 #10
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"
            });
        }
예제 #11
0
        public void EncodeNestedArray()
        {
            var encoder  = Linker.CreateEncoder(new JSONSchema <MyNestedArray>());
            var instance = new MyNestedArray
            {
                children = new[]
                {
                    new MyNestedArray
                    {
                        children = null,
                        value    = "a"
                    },
                    new MyNestedArray
                    {
                        children = new[]
                        {
                            new MyNestedArray
                            {
                                children = null,
                                value    = "b"
                            },
                            new MyNestedArray
                            {
                                children = null,
                                value    = "c"
                            }
                        },
                        value = "d"
                    },
                    new MyNestedArray
                    {
                        children = new MyNestedArray[0],
                        value    = "e"
                    }
                },
                value = "f"
            };

            CompareNewtonsoft.BenchEncode(encoder, instance, 10000);
        }