• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

fslev / json-compare / #682

30 Apr 2026 11:29AM UTC coverage: 97.158% (-0.5%) from 97.612%
#682

push

web-flow
Merge f7f38eebc into 4691206c7

262 of 272 new or added lines in 13 files covered. (96.32%)

1 existing line in 1 file now uncovered.

376 of 387 relevant lines covered (97.16%)

0.97 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

87.5
/src/main/java/io/json/compare/JSONCompare.java
1
package io.json.compare;
2

3
import com.fasterxml.jackson.databind.JsonNode;
4
import io.json.compare.util.JsonUtils;
5

6
import java.io.IOException;
7
import java.util.List;
8
import java.util.Set;
9

10
/**
11
 * Entry point for the json-compare library.
12
 *
13
 * <p>Modern usage is via the fluent builder returned by
14
 * {@link #compare(Object, Object)}:
15
 * <pre>{@code
16
 *   JSONCompare.compare(expected, actual)
17
 *       .modes(CompareMode.JSON_OBJECT_NON_EXTENSIBLE)
18
 *       .assertMatches();
19
 *
20
 *   List<String> diffs = JSONCompare.compare(expected, actual).diffs();
21
 * }</pre>
22
 *
23
 * <p>The previous telescoping static methods are preserved for backward
24
 * compatibility but are now deprecated in favor of the builder.
25
 *
26
 * @author fslev
27
 */
28
public final class JSONCompare {
29

30
    private JSONCompare() {
31
    }
32

33
    /**
34
     * Starts a fluent comparison of {@code expected} against {@code actual}.
35
     * Both arguments may be any JSON-convertible object: {@link JsonNode}, JSON
36
     * {@link String}, {@link java.util.Map Map}, {@link java.util.List List},
37
     * or any POJO.
38
     */
39
    public static ComparisonBuilder compare(Object expected, Object actual) {
40
        return new ComparisonBuilder(expected, actual);
1✔
41
    }
42

43
    /** Pretty-prints a Jackson node with the library's standard formatting. */
44
    public static String prettyPrint(JsonNode jsonNode) {
45
        try {
46
            return JsonUtils.prettyPrint(jsonNode);
1✔
NEW
47
        } catch (IOException e) {
×
NEW
48
            throw new RuntimeException(e);
×
49
        }
50
    }
51

52
    // --------------------------------------------------------------------
53
    // Deprecated static overloads — kept for API compatibility.
54
    // Prefer JSONCompare.compare(expected, actual).<builder methods>.
55
    // --------------------------------------------------------------------
56

57
    /** @deprecated Use {@code JSONCompare.compare(expected, actual).assertMatches()}. */
58
    @Deprecated(since = "8.0")
59
    public static void assertMatches(Object expected, Object actual) {
60
        compare(expected, actual).assertMatches();
1✔
61
    }
1✔
62

63
    /** @deprecated Use {@code JSONCompare.compare(expected, actual).modes(...).assertMatches()}. */
64
    @Deprecated(since = "8.0")
65
    public static void assertMatches(Object expected, Object actual, Set<CompareMode> compareModes) {
66
        compare(expected, actual).modes(compareModes).assertMatches();
1✔
67
    }
1✔
68

69
    /** @deprecated Use {@code JSONCompare.compare(expected, actual).comparator(...).assertMatches()}. */
70
    @Deprecated(since = "8.0")
71
    public static void assertMatches(Object expected, Object actual, JsonComparator comparator) {
72
        compare(expected, actual).comparator(comparator).assertMatches();
1✔
73
    }
1✔
74

75
    /** @deprecated Use the {@link #compare(Object, Object)} builder. */
76
    @Deprecated(since = "8.0")
77
    public static void assertMatches(Object expected, Object actual, JsonComparator comparator, Set<CompareMode> compareModes) {
78
        compare(expected, actual).comparator(comparator).modes(compareModes).assertMatches();
1✔
79
    }
1✔
80

81
    /** @deprecated Use the {@link #compare(Object, Object)} builder. */
82
    @Deprecated(since = "8.0")
83
    public static void assertMatches(Object expected, Object actual, Set<CompareMode> compareModes, String message) {
84
        compare(expected, actual).modes(compareModes).message(message).assertMatches();
1✔
85
    }
1✔
86

87
    /** @deprecated Use the {@link #compare(Object, Object)} builder. */
88
    @Deprecated(since = "8.0")
89
    public static void assertMatches(Object expected, Object actual, JsonComparator comparator, Set<CompareMode> compareModes, String message) {
90
        compare(expected, actual).comparator(comparator).modes(compareModes).message(message).assertMatches();
1✔
91
    }
1✔
92

93
    /** @deprecated Use {@code JSONCompare.compare(expected, actual).assertNotMatches()}. */
94
    @Deprecated(since = "8.0")
95
    public static void assertNotMatches(Object expected, Object actual) {
96
        compare(expected, actual).assertNotMatches();
1✔
97
    }
1✔
98

99
    /** @deprecated Use the {@link #compare(Object, Object)} builder. */
100
    @Deprecated(since = "8.0")
101
    public static void assertNotMatches(Object expected, Object actual, Set<CompareMode> compareModes) {
102
        compare(expected, actual).modes(compareModes).assertNotMatches();
1✔
103
    }
1✔
104

105
    /** @deprecated Use the {@link #compare(Object, Object)} builder. */
106
    @Deprecated(since = "8.0")
107
    public static void assertNotMatches(Object expected, Object actual, JsonComparator comparator) {
108
        compare(expected, actual).comparator(comparator).assertNotMatches();
1✔
109
    }
1✔
110

111
    /** @deprecated Use the {@link #compare(Object, Object)} builder. */
112
    @Deprecated(since = "8.0")
113
    public static void assertNotMatches(Object expected, Object actual, JsonComparator comparator, Set<CompareMode> compareModes) {
114
        compare(expected, actual).comparator(comparator).modes(compareModes).assertNotMatches();
1✔
115
    }
1✔
116

117
    /** @deprecated Use the {@link #compare(Object, Object)} builder. */
118
    @Deprecated(since = "8.0")
119
    public static void assertNotMatches(Object expected, Object actual, Set<CompareMode> compareModes, String message) {
120
        compare(expected, actual).modes(compareModes).message(message).assertNotMatches();
1✔
121
    }
1✔
122

123
    /** @deprecated Use the {@link #compare(Object, Object)} builder. */
124
    @Deprecated(since = "8.0")
125
    public static void assertNotMatches(Object expected, Object actual, JsonComparator comparator, Set<CompareMode> compareModes, String message) {
NEW
126
        compare(expected, actual).comparator(comparator).modes(compareModes).message(message).assertNotMatches();
×
UNCOV
127
    }
×
128

129
    /** @deprecated Use {@code JSONCompare.compare(expected, actual).diffs()}. */
130
    @Deprecated(since = "8.0")
131
    public static List<String> diffs(Object expected, Object actual) {
132
        return compare(expected, actual).diffs();
1✔
133
    }
134

135
    /** @deprecated Use the {@link #compare(Object, Object)} builder. */
136
    @Deprecated(since = "8.0")
137
    public static List<String> diffs(Object expected, Object actual, Set<CompareMode> compareModes) {
138
        return compare(expected, actual).modes(compareModes).diffs();
1✔
139
    }
140

141
    /** @deprecated Use the {@link #compare(Object, Object)} builder. */
142
    @Deprecated(since = "8.0")
143
    public static List<String> diffs(Object expected, Object actual, JsonComparator comparator) {
144
        return compare(expected, actual).comparator(comparator).diffs();
1✔
145
    }
146

147
    /** @deprecated Use the {@link #compare(Object, Object)} builder. */
148
    @Deprecated(since = "8.0")
149
    public static List<String> diffs(Object expected, Object actual, JsonComparator comparator, Set<CompareMode> compareModes) {
150
        return compare(expected, actual).comparator(comparator).modes(compareModes).diffs();
1✔
151
    }
152
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc