public override int GetHashCode() { int value = 13; if (ModelIdentifier != null) { value ^= 3 ^ ModelIdentifier.GetHashCode(); } if (FieldIdentifier != null) { value ^= 5 ^ FieldIdentifier.GetHashCode(); } if (UiHint != null) { value ^= 7 ^ UiHint.GetHashCode(); } if (FieldType != null) { value ^= 11 ^ GetTypeHashCode(FieldType); } return(value); }
public void DistinctModelsProduceDistinctHashCodesAndNonEquality() { // Arrange var fieldIdentifier1 = new FieldIdentifier(new object(), "field"); var fieldIdentifier2 = new FieldIdentifier(new object(), "field"); // Act/Assert Assert.NotEqual(fieldIdentifier1.GetHashCode(), fieldIdentifier2.GetHashCode()); Assert.False(fieldIdentifier1.Equals(fieldIdentifier2)); }
public void SameContentsProduceSameHashCodesAndEquality() { // Arrange var model = new object(); var fieldIdentifier1 = new FieldIdentifier(model, "field"); var fieldIdentifier2 = new FieldIdentifier(model, "field"); // Act/Assert Assert.Equal(fieldIdentifier1.GetHashCode(), fieldIdentifier2.GetHashCode()); Assert.True(fieldIdentifier1.Equals(fieldIdentifier2)); }
public void FieldIdentifier_ForModelWithoutField_ProduceSameHashCodesAndEquality() { // Arrange var model = new object(); var fieldIdentifier1 = new FieldIdentifier(model, fieldName: string.Empty); var fieldIdentifier2 = new FieldIdentifier(model, fieldName: string.Empty); // Act/Assert Assert.Equal(fieldIdentifier1.GetHashCode(), fieldIdentifier2.GetHashCode()); Assert.True(fieldIdentifier1.Equals(fieldIdentifier2)); }
public void FieldNamesAreCaseSensitive() { // Arrange var model = new object(); var fieldIdentifierLower = new FieldIdentifier(model, "field"); var fieldIdentifierPascal = new FieldIdentifier(model, "Field"); // Act/Assert Assert.Equal("field", fieldIdentifierLower.FieldName); Assert.Equal("Field", fieldIdentifierPascal.FieldName); Assert.NotEqual(fieldIdentifierLower.GetHashCode(), fieldIdentifierPascal.GetHashCode()); Assert.False(fieldIdentifierLower.Equals(fieldIdentifierPascal)); }
public void SameContents_WithOverridenEqualsAndGetHashCode_ProduceSameHashCodesAndEquality() { // Arrange var model = new EquatableModel(); var fieldIdentifier1 = new FieldIdentifier(model, nameof(EquatableModel.Property)); model.Property = "changed value"; // To show it makes no difference if the overridden `GetHashCode` result changes var fieldIdentifier2 = new FieldIdentifier(model, nameof(EquatableModel.Property)); // Act/Assert Assert.Equal(fieldIdentifier1.GetHashCode(), fieldIdentifier2.GetHashCode()); Assert.True(fieldIdentifier1.Equals(fieldIdentifier2)); }
public override int GetHashCode() { int value = 13; if (ModelIdentifier != null) { value ^= ModelIdentifier.GetHashCode(); } if (FieldIdentifier != null) { value ^= FieldIdentifier.GetHashCode(); } if (MetadataKey != null) { value ^= MetadataKey.GetHashCode(); } return(value); }