Example #1
0
        public void SetDefaultValue_ShouldKeepValues_WithoutDefaultAttributes()
        {
            SimpleObject1 testObject = null;
            var           exception  = Record.Exception(() => testObject = new SimpleObject1());

            exception.Should().BeNull();
            testObject.Should().NotBeNull();
            testObject.Name.Should().Be("Simple");
            testObject.Count.Should().Be(new int());
        }
Example #2
0
        public void TryReadQueryAsSucceeds()
        {
            object     value;
            UriBuilder address = new UriBuilder("http://some.host");

            address.Query = "a=2";
            Assert.True(
                address.Uri.TryReadQueryAs(typeof(SimpleObject1), out value),
                "Expected 'true' reading valid data"
                );
            SimpleObject1 so1 = (SimpleObject1)value;

            Assert.NotNull(so1);
            Assert.Equal(2, so1.a);

            address.Query = "b=true";
            Assert.True(
                address.Uri.TryReadQueryAs(typeof(SimpleObject2), out value),
                "Expected 'true' reading valid data"
                );
            SimpleObject2 so2 = (SimpleObject2)value;

            Assert.NotNull(so2);
            Assert.True(so2.b, "Value should have been true");

            address.Query = "c=hello";
            Assert.True(
                address.Uri.TryReadQueryAs(typeof(SimpleObject3), out value),
                "Expected 'true' reading valid data"
                );
            SimpleObject3 so3 = (SimpleObject3)value;

            Assert.NotNull(so3);
            Assert.Equal("hello", so3.c);

            address.Query = "c=";
            Assert.True(
                address.Uri.TryReadQueryAs(typeof(SimpleObject3), out value),
                "Expected 'true' reading valid data"
                );
            so3 = (SimpleObject3)value;
            Assert.NotNull(so3);
            Assert.Equal("", so3.c);

            address.Query = "c=null";
            Assert.True(
                address.Uri.TryReadQueryAs(typeof(SimpleObject3), out value),
                "Expected 'true' reading valid data"
                );
            so3 = (SimpleObject3)value;
            Assert.NotNull(so3);
            Assert.Equal("null", so3.c);
        }
        public static IEnumerable <object[]> NewtonsoftJsonCompareTestData()
        {
            var fixture = new Fixture();
            var testObj = new SimpleObject()
            {
                Id             = Guid.NewGuid(),
                Name           = fixture.Create <string>(),
                ObjectType     = ObjectType.LevelOne,
                ObjectTypeDict = new Dictionary <ObjectType, ObjectType>()
                {
                    { ObjectType.LevelZero, ObjectType.LevelZero },
                    { ObjectType.LevelTwo, ObjectType.LevelTwo }
                }
            };

            //separate object creation for passing test when newtonsoft cache the type for same contractresolver
            var testObj1 = new SimpleObject1()
            {
                Id             = Guid.NewGuid(),
                Name           = fixture.Create <string>(),
                ObjectType     = ObjectType1.LevelOne,
                ObjectTypeDict = new Dictionary <ObjectType1, ObjectType1>()
                {
                    { ObjectType1.LevelZero, ObjectType1.LevelZero },
                    { ObjectType1.LevelTwo, ObjectType1.LevelTwo }
                }
            };

            yield return(new object[]
            {
                testObj,
                CompositeResolver.Create(EnumCaseIgnoreResolver.Default, StandardResolver.Default),
                new JsonSerializerSettings()
                {
                    Converters = new List <JsonConverter> {
                        new StringEnumConverter()
                    }
                },
                "{\"Id\":\"" + testObj.Id + "\",\"Name\":\"" + testObj.Name + "\",\"ObjectType\":\"LevelOne\",\"ObjectTypeDict\":{\"LevelZero\":\"LevelZero\",\"LevelTwo\":\"LevelTwo\"}}"
            });

            yield return(new object[]
            {
                testObj,
                CompositeResolver.Create(EnumCaseIgnoreResolver.DefaultCamelCase, StandardResolver.CamelCase),
                new JsonSerializerSettings()
                {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                    {
                        NamingStrategy = new CamelCaseNamingStrategy()
                        {
                            ProcessDictionaryKeys = true
                        }
                    },
                    Converters = new List <JsonConverter>()
                    {
                        new StringEnumConverter()
                        {
                            NamingStrategy = new CamelCaseNamingStrategy()
                        }
                    }
                },
                "{\"id\":\"" + testObj.Id + "\",\"name\":\"" + testObj.Name + "\",\"objectType\":\"levelOne\",\"objectTypeDict\":{\"levelZero\":\"levelZero\",\"levelTwo\":\"levelTwo\"}}"
            });

            yield return(new object[]
            {
                testObj,
                CompositeResolver.Create(EnumCaseIgnoreResolver.DefaultSnakeCase, StandardResolver.SnakeCase),
                new JsonSerializerSettings()
                {
                    ContractResolver = new DefaultContractResolver()
                    {
                        NamingStrategy = new SnakeCaseNamingStrategy()
                        {
                            ProcessDictionaryKeys = true
                        }
                    },
                    Converters = new List <JsonConverter>()
                    {
                        new StringEnumConverter()
                        {
                            NamingStrategy = new SnakeCaseNamingStrategy()
                        }
                    }
                },
                "{\"id\":\"" + testObj.Id + "\",\"name\":\"" + testObj.Name + "\",\"object_type\":\"level_one\",\"object_type_dict\":{\"level_zero\":\"level_zero\",\"level_two\":\"level_two\"}}"
            });

            yield return(new object[]
            {
                testObj,
                CompositeResolver.Create(EnumCaseIgnoreResolver.ValueDictionaryName, StandardResolver.Default),
                new JsonSerializerSettings(),
                "{\"Id\":\"" + testObj.Id + "\",\"Name\":\"" + testObj.Name + "\",\"ObjectType\":1,\"ObjectTypeDict\":{\"LevelZero\":0,\"LevelTwo\":2}}"
            });

            yield return(new object[]
            {
                testObj1,
                CompositeResolver.Create(EnumCaseIgnoreResolver.ValueDictionaryName, StandardResolver.CamelCase),
                new JsonSerializerSettings()
                {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                    {
                        NamingStrategy = new CamelCaseNamingStrategy()
                        {
                            ProcessDictionaryKeys = false
                        }
                    }
                },
                "{\"id\":\"" + testObj1.Id + "\",\"name\":\"" + testObj1.Name + "\",\"objectType\":1,\"objectTypeDict\":{\"LevelZero\":0,\"LevelTwo\":2}}"
            });

            yield return(new object[]
            {
                testObj,
                CompositeResolver.Create(EnumCaseIgnoreResolver.ValueDictionaryNameCamelCase, StandardResolver.CamelCase),
                new JsonSerializerSettings()
                {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                    {
                        NamingStrategy = new CamelCaseNamingStrategy()
                        {
                            ProcessDictionaryKeys = true
                        }
                    }
                },
                "{\"id\":\"" + testObj.Id + "\",\"name\":\"" + testObj.Name + "\",\"objectType\":1,\"objectTypeDict\":{\"levelZero\":0,\"levelTwo\":2}}"
            });

            yield return(new object[]
            {
                testObj,
                CompositeResolver.Create(EnumCaseIgnoreResolver.ValueDictionaryNameSnakeCase, StandardResolver.SnakeCase),
                new JsonSerializerSettings()
                {
                    ContractResolver = new DefaultContractResolver()
                    {
                        NamingStrategy = new SnakeCaseNamingStrategy()
                        {
                            ProcessDictionaryKeys = true
                        }
                    }
                },
                "{\"id\":\"" + testObj.Id + "\",\"name\":\"" + testObj.Name + "\",\"object_type\":1,\"object_type_dict\":{\"level_zero\":0,\"level_two\":2}}"
            });
        }