Top Fields Constructors Methods
org.assertj.core.api.recursive.comparison

public final Class DualValue

extends Object
Class Inheritance
Static Imports
java.lang.String.format, .System.identityHashCode, java.util.Collections.unmodifiableList, .Objects.requireNonNull, org.assertj.core.internal.RecursiveHelper.isContainer, org.assertj.core.api.recursive.comparison.FieldLocation.rootFieldLocation, org.assertj.core.util.Arrays.array, .Arrays.isArray

Field Summary

Modifier and TypeField and Description
pack-priv final Object
pack-priv static final Class<?>[]
pack-priv final Object
pack-priv final FieldLocation
private final int

Constructor Summary

AccessConstructor and Description
public
DualValue(List<String> path, Object actual, Object expected)

public
DualValue(FieldLocation fieldLocation, Object actualFieldValue, Object expectedFieldValue)

Method Summary

Modifier and TypeMethod and Description
private int
public boolean
equals(Object
the reference object with which to compare.
other
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.
public String
public List<String>
public String
public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for this object.
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
private boolean
private boolean
private boolean
private boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
private static boolean
private static boolean
private static boolean
private static boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
private static boolean
private static boolean
pack-priv static DualValue
rootDualValue(Object actual, Object expected)

public boolean

Returns:

true if dual values references the same values (ignoring the field location)
sameValues
(DualValue
the DualValue to compare
dualValue
)

If we want to detect potential cycles in the recursive comparison, we need to check if an object has already been visited.

public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.
Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

actualback to summary
pack-priv final Object actual
DEFAULT_ORDERED_COLLECTION_TYPESback to summary
pack-priv static final Class<?>[] DEFAULT_ORDERED_COLLECTION_TYPES
expectedback to summary
pack-priv final Object expected
fieldLocationback to summary
pack-priv final FieldLocation fieldLocation
hashCodeback to summary
private final int hashCode

Constructor Detail

DualValueback to summary
public DualValue(List<String> path, Object actual, Object expected)
DualValueback to summary
public DualValue(FieldLocation fieldLocation, Object actualFieldValue, Object expectedFieldValue)

Method Detail

computeHashCodeback to summary
private int computeHashCode()
equalsback to summary
public boolean equals(Object other)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
other:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
getConcatenatedPathback to summary
public String getConcatenatedPath()
getDecomposedPathback to summary
public List<String> getDecomposedPath()
getFieldNameback to summary
public String getFieldName()
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for this object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object

Annotations
@Override
hasNoContainerValuesback to summary
public boolean hasNoContainerValues()
hasNoNullValuesback to summary
public boolean hasNoNullValues()
hasPotentialCyclingValuesback to summary
public boolean hasPotentialCyclingValues()
hasSomeJavaTypeValueback to summary
public boolean hasSomeJavaTypeValue()
isActualAnEnumback to summary
public boolean isActualAnEnum()
isActualFieldAMapback to summary
public boolean isActualFieldAMap()
isActualFieldAnArrayback to summary
public boolean isActualFieldAnArray()
isActualFieldAnAtomicBooleanback to summary
public boolean isActualFieldAnAtomicBoolean()
isActualFieldAnAtomicIntegerback to summary
public boolean isActualFieldAnAtomicInteger()
isActualFieldAnAtomicIntegerArrayback to summary
public boolean isActualFieldAnAtomicIntegerArray()
isActualFieldAnAtomicLongback to summary
public boolean isActualFieldAnAtomicLong()
isActualFieldAnAtomicLongArrayback to summary
public boolean isActualFieldAnAtomicLongArray()
isActualFieldAnAtomicReferenceback to summary
public boolean isActualFieldAnAtomicReference()
isActualFieldAnAtomicReferenceArrayback to summary
public boolean isActualFieldAnAtomicReferenceArray()
isActualFieldAnEmptyOptionalback to summary
private boolean isActualFieldAnEmptyOptional()
isActualFieldAnEmptyOptionalDoubleback to summary
private boolean isActualFieldAnEmptyOptionalDouble()
isActualFieldAnEmptyOptionalIntback to summary
private boolean isActualFieldAnEmptyOptionalInt()
isActualFieldAnEmptyOptionalLongback to summary
private boolean isActualFieldAnEmptyOptionalLong()
isActualFieldAnEmptyOptionalOfAnyTypeback to summary
public boolean isActualFieldAnEmptyOptionalOfAnyType()
isActualFieldAnIterableback to summary
public boolean isActualFieldAnIterable()
isActualFieldAnOptionalback to summary
public boolean isActualFieldAnOptional()
isActualFieldAnOptionalDoubleback to summary
public boolean isActualFieldAnOptionalDouble()
isActualFieldAnOptionalIntback to summary
public boolean isActualFieldAnOptionalInt()
isActualFieldAnOptionalLongback to summary
public boolean isActualFieldAnOptionalLong()
isActualFieldAnOrderedCollectionback to summary
public boolean isActualFieldAnOrderedCollection()
isActualFieldASortedMapback to summary
public boolean isActualFieldASortedMap()
isActualJavaTypeback to summary
public boolean isActualJavaType()
isAJsonValueNodeback to summary
private static boolean isAJsonValueNode(Object value)
isAnIterableback to summary
private static boolean isAnIterable(Object value)
isAnObjectNodeback to summary
private static boolean isAnObjectNode(Object value)
isAnOrderedCollectionback to summary
private static boolean isAnOrderedCollection(Object value)
isExpectedAContainerback to summary
public boolean isExpectedAContainer()
isExpectedAnEnumback to summary
public boolean isExpectedAnEnum()
isExpectedFieldAMapback to summary
public boolean isExpectedFieldAMap()
isExpectedFieldAnArrayback to summary
public boolean isExpectedFieldAnArray()
isExpectedFieldAnAtomicBooleanback to summary
public boolean isExpectedFieldAnAtomicBoolean()
isExpectedFieldAnAtomicIntegerback to summary
public boolean isExpectedFieldAnAtomicInteger()
isExpectedFieldAnAtomicIntegerArrayback to summary
public boolean isExpectedFieldAnAtomicIntegerArray()
isExpectedFieldAnAtomicLongback to summary
public boolean isExpectedFieldAnAtomicLong()
isExpectedFieldAnAtomicLongArrayback to summary
public boolean isExpectedFieldAnAtomicLongArray()
isExpectedFieldAnAtomicReferenceback to summary
public boolean isExpectedFieldAnAtomicReference()
isExpectedFieldAnAtomicReferenceArrayback to summary
public boolean isExpectedFieldAnAtomicReferenceArray()
isExpectedFieldAnIterableback to summary
public boolean isExpectedFieldAnIterable()
isExpectedFieldAnOptionalback to summary
public boolean isExpectedFieldAnOptional()
isExpectedFieldAnOrderedCollectionback to summary
public boolean isExpectedFieldAnOrderedCollection()
isExpectedFieldASortedMapback to summary
public boolean isExpectedFieldASortedMap()
isExpectedJavaTypeback to summary
public boolean isExpectedJavaType()
isJavaTypeback to summary
private static boolean isJavaType(Object o)
isPotentialCyclingValueback to summary
private static boolean isPotentialCyclingValue(Object object)
rootDualValueback to summary
pack-priv static DualValue rootDualValue(Object actual, Object expected)
sameValuesback to summary
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:DualValue

the DualValue to compare

Returns:boolean

true if dual values references the same values (ignoring the field location)

toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object.

Returns:String

a string representation of the object

Annotations
@Override