diff --git a/test/WireMock.Net.Tests/Abstractions/WireMockListTests.cs b/test/WireMock.Net.Tests/Abstractions/WireMockListTests.cs index ea268778..7a93a6cb 100644 --- a/test/WireMock.Net.Tests/Abstractions/WireMockListTests.cs +++ b/test/WireMock.Net.Tests/Abstractions/WireMockListTests.cs @@ -408,4 +408,209 @@ public class WireMockListTests } #endregion + + #region Equality Operator Tests + + [Fact] + public void WireMockListOfString_EqualityOperator_ListToSingleValue_WhenSingleElementMatchesValue_ShouldBeTrue() + { + // Arrange + var list = new WireMockList("hello"); + + // Act & Assert + (list == "hello").Should().BeTrue(); + } + + [Fact] + public void WireMockListOfString_EqualityOperator_ListToSingleValue_WhenSingleElementDoesNotMatchValue_ShouldBeFalse() + { + // Arrange + var list = new WireMockList("hello"); + + // Act & Assert + (list == "world").Should().BeFalse(); + } + + [Fact] + public void WireMockListOfString_EqualityOperator_ListToSingleValue_WhenMultipleElements_ShouldBeFalse() + { + // Arrange + var list = new WireMockList("hello", "world"); + + // Act & Assert + (list == "hello").Should().BeFalse(); + } + + [Fact] + public void WireMockListOfString_EqualityOperator_SingleValueToList_WhenSingleElementMatchesValue_ShouldBeTrue() + { + // Arrange + var list = new WireMockList("hello"); + + // Act & Assert + ("hello" == list).Should().BeTrue(); + } + + [Fact] + public void WireMockListOfString_EqualityOperator_SingleValueToList_WhenSingleElementDoesNotMatchValue_ShouldBeFalse() + { + // Arrange + var list = new WireMockList("hello"); + + // Act & Assert + ("world" == list).Should().BeFalse(); + } + + [Fact] + public void WireMockListOfString_InequalityOperator_ListToSingleValue_WhenSingleElementMatchesValue_ShouldBeFalse() + { + // Arrange + var list = new WireMockList("hello"); + + // Act & Assert + (list != "hello").Should().BeFalse(); + } + + [Fact] + public void WireMockListOfString_InequalityOperator_ListToSingleValue_WhenSingleElementDoesNotMatchValue_ShouldBeTrue() + { + // Arrange + var list = new WireMockList("hello"); + + // Act & Assert + (list != "world").Should().BeTrue(); + } + + [Fact] + public void WireMockListOfString_InequalityOperator_SingleValueToList_WhenSingleElementMatchesValue_ShouldBeFalse() + { + // Arrange + var list = new WireMockList("hello"); + + // Act & Assert + ("hello" != list).Should().BeFalse(); + } + + [Fact] + public void WireMockListOfString_InequalityOperator_SingleValueToList_WhenSingleElementDoesNotMatchValue_ShouldBeTrue() + { + // Arrange + var list = new WireMockList("hello"); + + // Act & Assert + ("world" != list).Should().BeTrue(); + } + + #endregion + + #region Equals and GetHashCode Tests + + [Fact] + public void WireMockListOfString_Equals_WhenBothListsHaveSameElements_ShouldBeTrue() + { + // Arrange + var list1 = new WireMockList("a", "b", "c"); + var list2 = new WireMockList("a", "b", "c"); + + // Act & Assert + list1.Equals(list2).Should().BeTrue(); + } + + [Fact] + public void WireMockListOfString_Equals_WhenListsHaveDifferentElements_ShouldBeFalse() + { + // Arrange + var list1 = new WireMockList("a", "b"); + var list2 = new WireMockList("a", "x"); + + // Act & Assert + list1.Equals(list2).Should().BeFalse(); + } + + [Fact] + public void WireMockListOfString_Equals_WhenListsHaveDifferentCounts_ShouldBeFalse() + { + // Arrange + var list1 = new WireMockList("a", "b"); + var list2 = new WireMockList("a"); + + // Act & Assert + list1.Equals(list2).Should().BeFalse(); + } + + [Fact] + public void WireMockListOfString_Equals_WhenBothEmpty_ShouldBeTrue() + { + // Arrange + var list1 = new WireMockList(); + var list2 = new WireMockList(); + + // Act & Assert + list1.Equals(list2).Should().BeTrue(); + } + + [Fact] + public void WireMockListOfString_Equals_WhenSameReference_ShouldBeTrue() + { + // Arrange + var list = new WireMockList("a", "b"); + + // Act & Assert + list.Equals(list).Should().BeTrue(); + } + + [Fact] + public void WireMockListOfString_Equals_WhenComparedToNull_ShouldBeFalse() + { + // Arrange + var list = new WireMockList("a"); + + // Act & Assert + list.Equals(null).Should().BeFalse(); + } + + [Fact] + public void WireMockListOfString_Equals_WhenComparedToNonWireMockList_ShouldBeFalse() + { + // Arrange + var list = new WireMockList("a"); + + // Act & Assert + list.Equals(new List { "a" }).Should().BeFalse(); + } + + [Fact] + public void WireMockListOfString_GetHashCode_WhenListsHaveSameElements_ShouldBeEqual() + { + // Arrange + var list1 = new WireMockList("a", "b", "c"); + var list2 = new WireMockList("a", "b", "c"); + + // Act & Assert + list1.GetHashCode().Should().Be(list2.GetHashCode()); + } + + [Fact] + public void WireMockListOfString_GetHashCode_WhenListsHaveDifferentElements_ShouldNotBeEqual() + { + // Arrange + var list1 = new WireMockList("a", "b"); + var list2 = new WireMockList("x", "y"); + + // Act & Assert + list1.GetHashCode().Should().NotBe(list2.GetHashCode()); + } + + [Fact] + public void WireMockListOfString_GetHashCode_WhenEmpty_ShouldReturnConsistentValue() + { + // Arrange + var list1 = new WireMockList(); + var list2 = new WireMockList(); + + // Act & Assert + list1.GetHashCode().Should().Be(list2.GetHashCode()); + } + + #endregion } \ No newline at end of file