public static void JsonNullMethodsTest() { JsonNull nullA = new JsonNull(), nullB = new JsonNull(); Assert.True(nullA.Equals(nullB)); Assert.True(nullA.Equals((object)null)); Assert.True(nullA.Equals((object)nullB)); Assert.True(nullA == nullB); Assert.False(nullA != nullB); Assert.Equal(0, nullA.GetHashCode()); }
public static void TestEquals() { var jsonNull1 = new JsonNull(); var jsonNull2 = new JsonNull(); Assert.True(jsonNull1.Equals(jsonNull2)); Assert.True(jsonNull1 == jsonNull2); Assert.False(jsonNull1 != jsonNull2); JsonNode jsonNodeJsonNull = new JsonNull(); Assert.True(jsonNull1.Equals(jsonNodeJsonNull)); Assert.True(jsonNodeJsonNull.Equals(jsonNull1)); IEquatable <JsonNull> jsonNullIEquatable = jsonNull2; Assert.True(jsonNullIEquatable.Equals(jsonNull1)); Assert.True(jsonNull1.Equals(jsonNullIEquatable)); object jsonNullCopy = jsonNull1; Assert.True(jsonNullCopy.Equals(jsonNull1)); Assert.True(jsonNull1.Equals(jsonNullCopy)); object jsonNullObject = new JsonNull(); Assert.True(jsonNullObject.Equals(jsonNull1)); Assert.True(jsonNull1.Equals(jsonNullObject)); Assert.False(jsonNull1.Equals(new JsonString("null"))); Assert.False(jsonNull1.Equals(new Exception())); // Null comparisons behave this way because of implicit conversion from null to JsonNull: Assert.True(jsonNull1.Equals(null)); Assert.True(jsonNull1 == null); Assert.False(jsonNull1 != null); JsonNull jsonNullNull = null; Assert.True(jsonNull1.Equals(jsonNullNull)); Assert.True(jsonNull1 == jsonNullNull); Assert.False(jsonNull1 != jsonNullNull); JsonNull otherJsonNullNull = null; Assert.True(jsonNullNull == otherJsonNullNull); // Only for null JsonNode / different derived type this will return false: JsonNode jsonNodeNull = null; Assert.False(jsonNull1.Equals(jsonNodeNull)); JsonArray jsonArrayNull = null; Assert.False(jsonNull1.Equals(jsonArrayNull)); }