Class DualValue


  • public final class DualValue
    extends java.lang.Object
    • Field Detail

      • DEFAULT_ORDERED_COLLECTION_TYPES

        static final java.lang.Class<?>[] DEFAULT_ORDERED_COLLECTION_TYPES
      • actual

        final java.lang.Object actual
      • expected

        final java.lang.Object expected
      • hashCode

        private final int hashCode
    • Constructor Detail

      • DualValue

        public DualValue​(java.util.List<java.lang.String> path,
                         java.lang.Object actual,
                         java.lang.Object expected)
      • DualValue

        public DualValue​(FieldLocation fieldLocation,
                         java.lang.Object actualFieldValue,
                         java.lang.Object expectedFieldValue)
    • Method Detail

      • rootDualValue

        static DualValue rootDualValue​(java.lang.Object actual,
                                       java.lang.Object expected)
      • computeHashCode

        private int computeHashCode()
      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
      • sameValues

        public boolean sameValues​(DualValue dualValue)
        If we want to detect potential cycles in the recursive comparison, we need to check if an object has already been visited.

        We must ignore the FieldLocation otherwise we would not find cycles. Let's take for example a Person class with a neighbor field. We have a cycle between the person instance and its neighbor instance, ex: Jack has Tim as neighbor and vice versa, when we navigate to Tim we find that its neighbor is Jack, we have already visited it but the location is different, Jack is both the root object and root.neighbor.neighbor (Jack=root, Tim=root.neighbor and Tim.neighbor=Jack)

        Parameters:
        dualValue - the DualValue to compare
        Returns:
        true if dual values references the same values (ignoring the field location)
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getDecomposedPath

        public java.util.List<java.lang.String> getDecomposedPath()
      • getConcatenatedPath

        public java.lang.String getConcatenatedPath()
      • getFieldName

        public java.lang.String getFieldName()
      • isActualJavaType

        public boolean isActualJavaType()
      • isExpectedJavaType

        public boolean isExpectedJavaType()
      • hasSomeJavaTypeValue

        public boolean hasSomeJavaTypeValue()
      • isJavaType

        private static boolean isJavaType​(java.lang.Object o)
      • isExpectedFieldAnArray

        public boolean isExpectedFieldAnArray()
      • isActualFieldAnArray

        public boolean isActualFieldAnArray()
      • isActualFieldAnOptional

        public boolean isActualFieldAnOptional()
      • isActualFieldAnOptionalInt

        public boolean isActualFieldAnOptionalInt()
      • isActualFieldAnOptionalLong

        public boolean isActualFieldAnOptionalLong()
      • isActualFieldAnOptionalDouble

        public boolean isActualFieldAnOptionalDouble()
      • isActualFieldAnEmptyOptionalOfAnyType

        public boolean isActualFieldAnEmptyOptionalOfAnyType()
      • isActualFieldAnEmptyOptional

        private boolean isActualFieldAnEmptyOptional()
      • isActualFieldAnEmptyOptionalInt

        private boolean isActualFieldAnEmptyOptionalInt()
      • isActualFieldAnEmptyOptionalLong

        private boolean isActualFieldAnEmptyOptionalLong()
      • isActualFieldAnEmptyOptionalDouble

        private boolean isActualFieldAnEmptyOptionalDouble()
      • isExpectedFieldAnOptional

        public boolean isExpectedFieldAnOptional()
      • isExpectedFieldAnAtomicReference

        public boolean isExpectedFieldAnAtomicReference()
      • isActualFieldAnAtomicReference

        public boolean isActualFieldAnAtomicReference()
      • isExpectedFieldAnAtomicReferenceArray

        public boolean isExpectedFieldAnAtomicReferenceArray()
      • isActualFieldAnAtomicReferenceArray

        public boolean isActualFieldAnAtomicReferenceArray()
      • isExpectedFieldAnAtomicInteger

        public boolean isExpectedFieldAnAtomicInteger()
      • isActualFieldAnAtomicInteger

        public boolean isActualFieldAnAtomicInteger()
      • isExpectedFieldAnAtomicIntegerArray

        public boolean isExpectedFieldAnAtomicIntegerArray()
      • isActualFieldAnAtomicIntegerArray

        public boolean isActualFieldAnAtomicIntegerArray()
      • isExpectedFieldAnAtomicLong

        public boolean isExpectedFieldAnAtomicLong()
      • isActualFieldAnAtomicLong

        public boolean isActualFieldAnAtomicLong()
      • isExpectedFieldAnAtomicLongArray

        public boolean isExpectedFieldAnAtomicLongArray()
      • isActualFieldAnAtomicLongArray

        public boolean isActualFieldAnAtomicLongArray()
      • isExpectedFieldAnAtomicBoolean

        public boolean isExpectedFieldAnAtomicBoolean()
      • isActualFieldAnAtomicBoolean

        public boolean isActualFieldAnAtomicBoolean()
      • isActualFieldAMap

        public boolean isActualFieldAMap()
      • isExpectedFieldAMap

        public boolean isExpectedFieldAMap()
      • isActualFieldASortedMap

        public boolean isActualFieldASortedMap()
      • isExpectedFieldASortedMap

        public boolean isExpectedFieldASortedMap()
      • isActualFieldAnOrderedCollection

        public boolean isActualFieldAnOrderedCollection()
      • isExpectedFieldAnOrderedCollection

        public boolean isExpectedFieldAnOrderedCollection()
      • isActualFieldAnIterable

        public boolean isActualFieldAnIterable()
      • isExpectedFieldAnIterable

        public boolean isExpectedFieldAnIterable()
      • isAnIterable

        private static boolean isAnIterable​(java.lang.Object value)
      • isAJsonValueNode

        private static boolean isAJsonValueNode​(java.lang.Object value)
      • isAnObjectNode

        private static boolean isAnObjectNode​(java.lang.Object value)
      • isAnOrderedCollection

        private static boolean isAnOrderedCollection​(java.lang.Object value)
      • isExpectedAnEnum

        public boolean isExpectedAnEnum()
      • isActualAnEnum

        public boolean isActualAnEnum()
      • hasNoContainerValues

        public boolean hasNoContainerValues()
      • isExpectedAContainer

        public boolean isExpectedAContainer()
      • hasNoNullValues

        public boolean hasNoNullValues()
      • hasPotentialCyclingValues

        public boolean hasPotentialCyclingValues()
      • isPotentialCyclingValue

        private static boolean isPotentialCyclingValue​(java.lang.Object object)