Exemple #1
0
        public static void ValidateAreSame(string expected, string actual, string description = null, bool ignoreCase = false, bool ignoreDefaultValues = false)
        {
            JObject expectedJson = JObject.Parse(expected);
            JObject actualJson   = JObject.Parse(actual);

            JsonComparer.ValidateAreSame(expectedJson, actualJson, description, ignoreCase, ignoreDefaultValues);
        }
Exemple #2
0
 public static void ValidateAreSame(JProperty expected, JProperty actual, string description = null, bool ignoreCase = false, bool ignoreDefaultValues = false)
 {
     if ((expected == null) != (actual == null))
     {
         Assert.Equal(expected, actual);
     }
     JsonComparer.ValidateAreSame(expected.Value, expected.Value, description, ignoreCase, ignoreDefaultValues);
 }
Exemple #3
0
        public static void ValidateAreSame(JArray expected, JArray actual, string description = null, bool ignoreCase = false, bool ignoreDefaultValues = false)
        {
            if ((expected == null) != (actual == null))
            {
                Assert.Equal(expected, actual);
            }

            Assert.Equal(expected.Count, actual.Count);

            for (int i = 0; i < expected.Count; i++)
            {
                JsonComparer.ValidateAreSame(expected[i], actual[i], description + "[" + i + "]", ignoreCase, ignoreDefaultValues);
            }
        }
Exemple #4
0
        /// <summary>
        /// Asserts if the two instances are not the same.
        /// </summary>
        public static void ValidateAreSame(
            JObject expected,
            JObject actual,
            string description       = null,
            bool ignoreCase          = false,
            bool ignoreDefaultValues = false)
        {
            if (object.ReferenceEquals(expected, actual))
            {
                // if the two instances are the same, no need to do further validation.
                return;
            }

            // If only one is null, fail.
            if ((expected == null) != (actual == null))
            {
                Assert.Equal(expected, actual);
                return;
            }

            var expectedKeys = new HashSet <string>(((IDictionary <string, JToken>)expected).Keys);
            var actualKeys   = new HashSet <string>(((IDictionary <string, JToken>)actual).Keys);

            List <string> missingKeys    = expectedKeys.Except(actualKeys, JsonUtilities.PropertyNameComparer).ToList();
            List <string> unexpectedKeys = actualKeys.Except(expectedKeys, JsonUtilities.PropertyNameComparer).ToList();

            JsonComparer.HandleKeyDiscrepancies(missingKeys, expected, ignoreDefaultValues, "{0} is missing the following key(s): {1}", description);
            JsonComparer.HandleKeyDiscrepancies(unexpectedKeys, actual, ignoreDefaultValues, "{0} contains the following unexpected key(s): {1}", description);

            var commonKeys = new HashSet <string>(expectedKeys.Intersect(actualKeys, JsonUtilities.PropertyNameComparer));

            foreach (KeyValuePair <string, JToken> pair in expected)
            {
                string key = pair.Key;
                if (!commonKeys.Contains(key))
                {
                    continue;
                }

                //JToken expectedValue = pair.Value;
                JToken expectedValue = expected.GetValue(key, JsonUtilities.PropertyNameComparison);
                JToken actualValue   = actual.GetValue(key, JsonUtilities.PropertyNameComparison);
                JsonComparer.ValidateAreSame(expectedValue, actualValue, description + "." + key, ignoreCase, ignoreDefaultValues);
            }
        }
        public static void AssertAreEqual(Object expected, Object actual)
        {
            string jsonExpected = JsonConvert.SerializeObject(expected);
            string jsonActual   = JsonConvert.SerializeObject(actual);
            string description  = null;

            if (expected != null)
            {
                description = expected.GetType().Name;
            }

            JsonComparer.ValidateAreSame(
                JObject.Parse(jsonExpected),
                JObject.Parse(jsonActual),
                description,
                ignoreCase: true,
                ignoreDefaultValues: true);
        }
Exemple #6
0
        public static void ValidateAreSame(JToken expected, JToken actual, string description = null, bool ignoreCase = false, bool ignoreDefaultValues = false)
        {
            if (JsonComparer.IsDefaultValue(expected) && JsonComparer.IsDefaultValue(actual))
            {
                return;
            }
            if ((expected == null) != (actual == null))
            {
                Assert.Equal(expected, actual);
            }

            Action validateTypesAreEqual = () =>
            {
                Assert.Equal(expected.Type, actual.Type);
            };

            switch (expected.Type)
            {
            case JTokenType.Object:
                validateTypesAreEqual();
                JsonComparer.ValidateAreSame((JObject)expected, (JObject)actual, description, ignoreCase, ignoreDefaultValues);
                break;

            case JTokenType.Array:
                validateTypesAreEqual();
                JsonComparer.ValidateAreSame((JArray)expected, (JArray)actual, description, ignoreCase, ignoreDefaultValues);
                break;

            case JTokenType.Boolean:
            case JTokenType.Bytes:
            case JTokenType.Comment:
            case JTokenType.Date:
            case JTokenType.Float:
            case JTokenType.Guid:
            case JTokenType.Integer:
            case JTokenType.Raw:
            case JTokenType.String:
            case JTokenType.TimeSpan:
            case JTokenType.Uri:
                if (!(actual is JValue))
                {
                    validateTypesAreEqual();
                }
                JsonComparer.ValidateAreSame((JValue)expected, (JValue)actual, description, ignoreCase);
                break;

            case JTokenType.Property:
                validateTypesAreEqual();
                JsonComparer.ValidateAreSame((JProperty)expected, (JProperty)actual, description, ignoreCase, ignoreDefaultValues);
                break;

            case JTokenType.Null:
                validateTypesAreEqual();
                break;

            case JTokenType.Constructor:
            case JTokenType.None:
            case JTokenType.Undefined:
            default:
                throw new NotImplementedException("Validation logic not implemented for JTokenType " + expected.Type);
            }
        }