protected void checkJsonObjectKeysActualInExpected(String prefix, JSONObject expected, JSONObject actual, JSONCompareResult result) { Set<String> actualKeys = getKeys(actual); for (String key : actualKeys) { if (!expected.has(key)) { result.unexpected(prefix, key); } } }
protected void compareJSONArrayOfSimpleValues(String key, JSONArray expected, JSONArray actual, JSONCompareResult result) throws JSONException { Map<Object, Integer> expectedCount = JSONCompareUtil.getCardinalityMap(jsonArrayToList(expected)); Map<Object, Integer> actualCount = JSONCompareUtil.getCardinalityMap(jsonArrayToList(actual)); for (Object o : expectedCount.keySet()) { if (!actualCount.containsKey(o)) { result.missing(key + "[]", o); } else if (!actualCount.get(o).equals(expectedCount.get(o))) { result.fail(key + "[]: Expected " + expectedCount.get(o) + " occurrence(s) of " + o + " but got " + actualCount.get(o) + " occurrence(s)"); } } for (Object o : actualCount.keySet()) { if (!expectedCount.containsKey(o)) { result.unexpected(key + "[]", o); } } }
protected void compareJSONArrayOfJsonObjects(String key, JSONArray expected, JSONArray actual, JSONCompareResult result) throws JSONException { String uniqueKey = findUniqueKey(expected); if (uniqueKey == null || !isUsableAsUniqueKey(uniqueKey, actual)) { // An expensive last resort recursivelyCompareJSONArray(key, expected, actual, result); return; } Map<Object, JSONObject> expectedValueMap = arrayOfJsonObjectToMap(expected, uniqueKey); Map<Object, JSONObject> actualValueMap = arrayOfJsonObjectToMap(actual, uniqueKey); for (Object id : expectedValueMap.keySet()) { if (!actualValueMap.containsKey(id)) { result.missing(formatUniqueKey(key, uniqueKey, id), expectedValueMap.get(id)); continue; } JSONObject expectedValue = expectedValueMap.get(id); JSONObject actualValue = actualValueMap.get(id); compareValues(formatUniqueKey(key, uniqueKey, id), expectedValue, actualValue, result); } for (Object id : actualValueMap.keySet()) { if (!expectedValueMap.containsKey(id)) { result.unexpected(formatUniqueKey(key, uniqueKey, id), actualValueMap.get(id)); } } }
protected void checkJsonObjectKeysActualInExpected(String prefix, JSONObject expected, JSONObject actual, JSONCompareResult result) { Set<String> actualKeys = getKeys(actual); for (String key : actualKeys) { if (!expected.has(key)) { result.unexpected(prefix, key); } } }
protected void compareJSONArrayOfSimpleValues(String key, JSONArray expected, JSONArray actual, JSONCompareResult result) throws JSONException { Map<Object, Integer> expectedCount = JSONCompareUtil.getCardinalityMap(jsonArrayToList(expected)); Map<Object, Integer> actualCount = JSONCompareUtil.getCardinalityMap(jsonArrayToList(actual)); for (Object o : expectedCount.keySet()) { if (!actualCount.containsKey(o)) { result.missing(key + "[]", o); } else if (!actualCount.get(o).equals(expectedCount.get(o))) { result.fail(key + "[]: Expected " + expectedCount.get(o) + " occurrence(s) of " + o + " but got " + actualCount.get(o) + " occurrence(s)"); } } for (Object o : actualCount.keySet()) { if (!expectedCount.containsKey(o)) { result.unexpected(key + "[]", o); } } }
protected void compareJSONArrayOfJsonObjects(String key, JSONArray expected, JSONArray actual, JSONCompareResult result) throws JSONException { String uniqueKey = findUniqueKey(expected); if (uniqueKey == null || !isUsableAsUniqueKey(uniqueKey, actual)) { // An expensive last resort recursivelyCompareJSONArray(key, expected, actual, result); return; } Map<Object, JSONObject> expectedValueMap = arrayOfJsonObjectToMap(expected, uniqueKey); Map<Object, JSONObject> actualValueMap = arrayOfJsonObjectToMap(actual, uniqueKey); for (Object id : expectedValueMap.keySet()) { if (!actualValueMap.containsKey(id)) { result.missing(formatUniqueKey(key, uniqueKey, id), expectedValueMap.get(id)); continue; } JSONObject expectedValue = expectedValueMap.get(id); JSONObject actualValue = actualValueMap.get(id); compareValues(formatUniqueKey(key, uniqueKey, id), expectedValue, actualValue, result); } for (Object id : actualValueMap.keySet()) { if (!expectedValueMap.containsKey(id)) { result.unexpected(formatUniqueKey(key, uniqueKey, id), actualValueMap.get(id)); } } }
protected void checkJsonObjectKeysActualInExpected(final String prefix, final JSONObject expected, final JSONObject actual, final JSONCompareResult result) { getKeys(actual).stream().filter(key -> !expected.has(key)).forEach(key -> { result.unexpected(prefix, key); }); }
@Override public JSONCompareResult unexpected(final String field, final Object value) { if (!matches(String.format("%s.%s", field, value))) { super.unexpected(field, value); } return this; }
protected void compareJSONArrayOfSimpleValues(final String key, final JSONArray expected, final JSONArray actual, final JSONCompareResult result) throws JSONException { final Map<Object, Integer> expectedCount = JSONCompareUtil .getCardinalityMap(jsonArrayToList(expected)); final Map<Object, Integer> actualCount = JSONCompareUtil .getCardinalityMap(jsonArrayToList(actual)); for (final Object foundKey : expectedCount.keySet()) { if (!actualCount.containsKey(foundKey)) { result.missing(key + "[]", foundKey); } else if (!actualCount.get(foundKey).equals(expectedCount.get(foundKey))) { result.fail(key + "[]: Expected " + expectedCount.get(foundKey) + " occurrence(s) of " + foundKey + " but got " + actualCount.get(foundKey) + " occurrence(s)"); } } for (final Object foundKey : actualCount.keySet()) { if (!expectedCount.containsKey(foundKey)) { result.unexpected(key + "[]", foundKey); } } }
for (int loop = Math.min(expected.length(), actual.length()); loop < end; loop++) result.unexpected(String.format("%s[%d]", prefix, loop), actual.get(loop));
result.unexpected(formatUniqueKey(key, uniqueKey, identifier), actualValueMap.get(identifier));