Coverage Report - uk.co.datumedge.hamcrest.json.JSONAssertComparator
 
Classes in this File Line Coverage Branch Coverage Complexity
JSONAssertComparator
100%
10/10
N/A
1
 
 1  
 package uk.co.datumedge.hamcrest.json;
 2  
 
 3  
 import static org.skyscreamer.jsonassert.JSONCompareMode.STRICT;
 4  
 
 5  
 import org.json.JSONException;
 6  
 import org.skyscreamer.jsonassert.JSONCompareMode;
 7  
 
 8  
 final class JSONAssertComparator<T> implements JSONModalComparator<T> {
 9  
         private final JSONAssertComparatorFactory<T> factory;
 10  
         private final JSONCompareMode compareMode;
 11  
 
 12  
         static <T> JSONModalComparator<T> modalComparatorFor(JSONAssertComparatorFactory<T> factory) {
 13  20
                 return new JSONAssertComparator<T>(factory);
 14  
         }
 15  
         
 16  
         private JSONAssertComparator(JSONAssertComparatorFactory<T> factory) {
 17  20
                 this(factory, STRICT);
 18  20
         }
 19  
 
 20  31
         private JSONAssertComparator(JSONAssertComparatorFactory<T> factory, JSONCompareMode compareMode) {
 21  31
                 this.factory = factory;
 22  31
                 this.compareMode = compareMode;
 23  31
         }
 24  
 
 25  
         @Override
 26  
         public JSONComparisonResult compare(T expected, T actual) throws JSONException {
 27  22
                 return factory.comparatorWith(compareMode).compare(expected, actual);
 28  
         }
 29  
 
 30  
         @Override
 31  
         public JSONModalComparator<T> butAllowingAnyArrayOrdering() {
 32  6
                 return new JSONAssertComparator<T>(factory, compareMode.withStrictOrdering(false));
 33  
         }
 34  
 
 35  
         @Override
 36  
         public JSONModalComparator<T> butAllowingExtraUnexpectedFields() {
 37  5
                 return new JSONAssertComparator<T>(factory, compareMode.withExtensible(true));
 38  
         }
 39  
 }