diff --git a/tests/ConsumerTests/StringComparisons/ForClasses.cs b/tests/ConsumerTests/StringComparisons/ForClasses.cs index d43bfec78b..c084d59956 100644 --- a/tests/ConsumerTests/StringComparisons/ForClasses.cs +++ b/tests/ConsumerTests/StringComparisons/ForClasses.cs @@ -73,6 +73,18 @@ public void StringDefaultComparison_OrdinalIgnoreCase() d.ContainsKey(StringVo_Class_DefaultOrdinalIgnoreCase.From("ONE")).Should().BeTrue(); } + [Fact] + public void OrdinalIgnoreCase_GetHashCode_reflects_underlying_value() + { + var comparer = StringVo_Class_Generic.Comparers.OrdinalIgnoreCase; + + var a = StringVo_Class_Generic.From("abc"); + var b = StringVo_Class_Generic.From("xyz"); + + comparer.GetHashCode(a).Should().Be(comparer.GetHashCode(StringVo_Class_Generic.From("abc"))); + comparer.GetHashCode(a).Should().NotBe(comparer.GetHashCode(b)); + } + [Fact] public void OrdinalIgnoreCase_in_a_dictionary() { diff --git a/tests/ConsumerTests/StringComparisons/ForRecordClasses.cs b/tests/ConsumerTests/StringComparisons/ForRecordClasses.cs index 9d59346ea8..e51e08e04a 100644 --- a/tests/ConsumerTests/StringComparisons/ForRecordClasses.cs +++ b/tests/ConsumerTests/StringComparisons/ForRecordClasses.cs @@ -73,6 +73,18 @@ public void StringDefaultComparison_OrdinalIgnoreCase() d.ContainsKey(StringVo_RecordClass_DefaultOrdinalIgnoreCase.From("ONE")).Should().BeTrue(); } + [Fact] + public void OrdinalIgnoreCase_GetHashCode_reflects_underlying_value() + { + var comparer = StringVo_RecordClass_Generic.Comparers.OrdinalIgnoreCase; + + var a = StringVo_RecordClass_Generic.From("abc"); + var b = StringVo_RecordClass_Generic.From("xyz"); + + comparer.GetHashCode(a).Should().Be(comparer.GetHashCode(StringVo_RecordClass_Generic.From("abc"))); + comparer.GetHashCode(a).Should().NotBe(comparer.GetHashCode(b)); + } + [Fact] public void OrdinalIgnoreCase_in_a_dictionary() { @@ -102,4 +114,4 @@ public bool Equals(StringVo_RecordClass_NothingSpecified? x, StringVo_RecordClas public int GetHashCode(StringVo_RecordClass_NothingSpecified obj) => StringComparer.OrdinalIgnoreCase.GetHashCode(obj.Value); } -} \ No newline at end of file +} diff --git a/tests/ConsumerTests/StringComparisons/ForRecordStructs.cs b/tests/ConsumerTests/StringComparisons/ForRecordStructs.cs index b91b5de424..3fa975257d 100644 --- a/tests/ConsumerTests/StringComparisons/ForRecordStructs.cs +++ b/tests/ConsumerTests/StringComparisons/ForRecordStructs.cs @@ -76,6 +76,18 @@ public void StringDefaultComparison_OrdinalIgnoreCase() d.ContainsKey(StringVo_RecordStruct_DefaultOrdinalIgnoreCase.From("ONE")).Should().BeTrue(); } + [Fact] + public void OrdinalIgnoreCase_GetHashCode_reflects_underlying_value() + { + var comparer = StringVo_RecordStruct_Generic.Comparers.OrdinalIgnoreCase; + + var a = StringVo_RecordStruct_Generic.From("abc"); + var b = StringVo_RecordStruct_Generic.From("xyz"); + + comparer.GetHashCode(a).Should().Be(comparer.GetHashCode(StringVo_RecordStruct_Generic.From("abc"))); + comparer.GetHashCode(a).Should().NotBe(comparer.GetHashCode(b)); + } + [Fact] public void OrdinalIgnoreCase_in_a_dictionary() { @@ -115,4 +127,4 @@ public bool Equals(StringVo_RecordStruct_NothingSpecified x, StringVo_RecordStru public int GetHashCode(StringVo_RecordStruct_NothingSpecified obj) => StringComparer.OrdinalIgnoreCase.GetHashCode(obj.Value); } -} \ No newline at end of file +} diff --git a/tests/ConsumerTests/StringComparisons/ForStructs.cs b/tests/ConsumerTests/StringComparisons/ForStructs.cs index f8676bebf2..e7c9b21516 100644 --- a/tests/ConsumerTests/StringComparisons/ForStructs.cs +++ b/tests/ConsumerTests/StringComparisons/ForStructs.cs @@ -89,6 +89,18 @@ public void StringDefaultComparison_OrdinalIgnoreCase() d.ContainsKey(StringVo_Struct_DefaultOrdinalIgnoreCase.From("ONE")).Should().BeTrue(); } + [Fact] + public void OrdinalIgnoreCase_GetHashCode_reflects_underlying_value() + { + var comparer = StringVo_Struct_Generic.Comparers.OrdinalIgnoreCase; + + var a = StringVo_Struct_Generic.From("abc"); + var b = StringVo_Struct_Generic.From("xyz"); + + comparer.GetHashCode(a).Should().Be(comparer.GetHashCode(StringVo_Struct_Generic.From("abc"))); + comparer.GetHashCode(a).Should().NotBe(comparer.GetHashCode(b)); + } + [Fact] public void OrdinalIgnoreCase_in_a_dictionary() {