Exemple #1
0
        public void NullableJson(UUnitTestContext testContext)
        {
            var testObj    = new NullableTestClass();
            var actualJson = JsonWrapper.SerializeObject(testObj, PlayFabUtil.ApiSerializerStrategy);
            var actualObj  = JsonWrapper.DeserializeObject <NullableTestClass>(actualJson);

            testContext.IsNull(actualObj.IntField, "Nullable integer field does not serialize properly: " + testObj.IntField + ", from " + actualJson);
            testContext.IsNull(actualObj.IntProperty, "Nullable integer property does not serialize properly: " + testObj.IntProperty + ", from " + actualJson);
            testContext.IsNull(actualObj.TimeField, "Nullable struct field does not serialize properly: " + testObj.TimeField + ", from " + actualJson);
            testContext.IsNull(actualObj.TimeProperty, "Nullable struct property does not serialize properly: " + testObj.TimeProperty + ", from " + actualJson);
            testContext.IsNull(actualObj.EnumField, "Nullable enum field does not serialize properly: " + testObj.EnumField + ", from " + actualJson);
            testContext.IsNull(actualObj.EnumProperty, "Nullable enum property does not serialize properly: " + testObj.EnumProperty + ", from " + actualJson);

            testContext.EndTest(UUnitFinishState.PASSED, null);
        }
        public void NullableJson(UUnitTestContext testContext)
        {
            var testObjNull = new NullableTestClass();
            var testObjInt  = new NullableTestClass {
                IntField = 42, IntProperty = 42
            };
            var testObjTime = new NullableTestClass {
                TimeField = DateTime.UtcNow, TimeProperty = DateTime.UtcNow
            };
            var testObjEnum = new NullableTestClass {
                EnumField = Region.Japan, EnumProperty = Region.Japan
            };
            var testObjBool = new NullableTestClass {
                BoolField = true, BoolProperty = true
            };
            var testObjs = new[] { testObjNull, testObjEnum, testObjBool, testObjInt, testObjTime };

            List <string> failures = new List <string>();

            foreach (var testObj in testObjs)
            {
                NullableTestClass actualObj = null;
                var actualJson = JsonWrapper.SerializeObject(testObj);
                try
                {
                    actualObj = JsonWrapper.DeserializeObject <NullableTestClass>(actualJson);
                }
                catch (Exception)
                {
                    failures.Add(actualJson + " Cannot be deserialized as NullableTestClass");
                    continue;
                }

                if (testObj.BoolField != actualObj.BoolField)
                {
                    failures.Add("Nullable bool field does not serialize properly: " + testObj.BoolField + ", from " + actualJson);
                }
                if (testObj.BoolProperty != actualObj.BoolProperty)
                {
                    failures.Add("Nullable bool property does not serialize properly: " + testObj.BoolProperty + ", from " + actualJson);
                }
                if (testObj.IntField != actualObj.IntField)
                {
                    failures.Add("Nullable integer field does not serialize properly: " + testObj.IntField + ", from " + actualJson);
                }
                if (testObj.IntProperty != actualObj.IntProperty)
                {
                    failures.Add("Nullable integer property does not serialize properly: " + testObj.IntProperty + ", from " + actualJson);
                }
                if (testObj.EnumField != actualObj.EnumField)
                {
                    failures.Add("Nullable enum field does not serialize properly: " + testObj.EnumField + ", from " + actualJson);
                }
                if (testObj.EnumProperty != actualObj.EnumProperty)
                {
                    failures.Add("Nullable enum property does not serialize properly: " + testObj.EnumProperty + ", from " + actualJson);
                }

                if (testObj.TimeField.HasValue != actualObj.TimeField.HasValue)
                {
                    failures.Add("Nullable struct field does not serialize properly: " + testObj.TimeField + ", from " + actualJson);
                }
                if (testObj.TimeField.HasValue && Math.Abs((testObj.TimeField - actualObj.TimeField).Value.TotalSeconds) > 1)
                {
                    failures.Add("Nullable struct field does not serialize properly: " + testObj.TimeField + ", from " + actualJson);
                }

                if (testObj.TimeProperty.HasValue != actualObj.TimeProperty.HasValue)
                {
                    failures.Add("Nullable struct field does not serialize properly: " + testObj.TimeProperty + ", from " + actualJson);
                }
                if (testObj.TimeProperty.HasValue && Math.Abs((testObj.TimeProperty - actualObj.TimeProperty).Value.TotalSeconds) > 1)
                {
                    failures.Add("Nullable struct property does not serialize properly: " + testObj.TimeProperty + ", from " + actualJson);
                }
            }

            if (failures.Count == 0)
            {
                testContext.EndTest(UUnitFinishState.PASSED, null);
            }
            else
            {
                testContext.EndTest(UUnitFinishState.FAILED, string.Join("\n", failures.ToArray()));
            }
        }