blob: 73a79cd21e06bc49752ac074ead81e940154f473 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
package org.onap.vid.testUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.junit.Assert;
import java.util.Iterator;
import static fj.parser.Parser.fail;
/**
* Created by Oren on 6/7/17.
*/
public class TestUtils {
/**
* The method compares between two jsons. the function assert that the actual object does not reduce or change the functionallity/parsing of the expected json.
* This means that if the expected JSON has a key which is null or the JSON doesn't have a key which contained in the expected JSON the assert will succeed and the will pass.
* For example : For JSON expected = {a:null} and actual {a:3} the test will pass
* Other example : For JSON expected = {a:3} and actual {a:null} the test will fail
*
* @param expected JSON
* @param actual JSON
*/
public static void assertJsonStringEqualsIgnoreNulls(String expected, String actual) {
if (expected == null || expected == JSONObject.NULL) {return;}
JSONObject expectedJSON = new JSONObject(expected);
JSONObject actualJSON = new JSONObject(actual);
Iterator<?> keys = expectedJSON.keys();
while( keys.hasNext() ) {
String key = (String)keys.next();
Object expectedValue = expectedJSON.get(key);
if (expectedValue == JSONObject.NULL){
continue;
}
Object actualValue = actualJSON.get(key);
if (expectedValue instanceof JSONObject) {
String expectedVal = expectedValue.toString();
String actualVal = actualValue.toString();
assertJsonStringEqualsIgnoreNulls(expectedVal, actualVal);
}
else if (expectedValue instanceof JSONArray) {
if (actualValue instanceof JSONArray) {
JSONArray expectedJSONArray = (JSONArray)expectedValue;
JSONArray actualJSONArray = (JSONArray)actualValue;
for (int i = 0; i < expectedJSONArray.length(); i++) {
String expectedItem = expectedJSONArray.get(i).toString();
String actualItem = actualJSONArray.get(i).toString();
if (expectedValue instanceof JSONObject)
assertJsonStringEqualsIgnoreNulls(expectedItem, actualItem);
}
}
else {
fail("expected: " + expectedValue + " got:" + actualValue);
}
}
else {
Assert.assertEquals(expectedValue, actualValue);
}
}
}
}
|