From 65d867995dcc55495e87004070f0dd2ad5a4bf29 Mon Sep 17 00:00:00 2001 From: RZ Date: Tue, 28 Nov 2023 23:29:20 -0500 Subject: [PATCH 1/7] Add bitMask function to the CardGroup --- HandHistories.Objects/Cards/CardGroup.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/HandHistories.Objects/Cards/CardGroup.cs b/HandHistories.Objects/Cards/CardGroup.cs index df8c93c..fa19a00 100644 --- a/HandHistories.Objects/Cards/CardGroup.cs +++ b/HandHistories.Objects/Cards/CardGroup.cs @@ -91,16 +91,10 @@ public override string ToString() public override bool Equals(object obj) { - bool stringEquality = obj.ToString().Equals(ToString()); - if (stringEquality) return true; - CardGroup cardGroup = obj as CardGroup; - if (cardGroup == null) return false; - if (cardGroup.Cards.Count != Cards.Count) return false; - - return (cardGroup.Cards.All(c => Cards.Contains(c))); + return Cards.Count == cardGroup.Cards.Count && GetBitMask() == cardGroup.GetBitMask(); } @@ -135,5 +129,10 @@ IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } + + private ulong GetBitMask() + { + return Cards.Aggregate(0ul, (mask, card) => mask | 1ul << card.CardIntValue); + } } } \ No newline at end of file From 0d1082b84311ff6cfeeed6ea3ae1142942c9a7b8 Mon Sep 17 00:00:00 2001 From: RZ Date: Tue, 28 Nov 2023 23:38:06 -0500 Subject: [PATCH 2/7] 3 unit tests --- .../Cards/BoardCardsTests.cs | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs b/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs index d99cc85..09e6ec1 100644 --- a/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs +++ b/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs @@ -17,6 +17,69 @@ public class BoardCardsTests private static Card C5 = new Card("9", "s"); private static Card C6 = new Card("7", "s"); + + [Test] + public void BoardCardsTest_EqualityTest_withDefaultComparison_CompareWithSelf_ReturnTrue() + { + BoardCards emptyBoard = BoardCards.FromCards(String.Empty); + BoardCards boardWithFlop = BoardCards.FromCards("AcQsTh"); + BoardCards boardWithTurn = BoardCards.FromCards("AcQsTh2h"); + BoardCards boardWithRiver = BoardCards.FromCards("AcQsTh2h3d"); + + Assert.IsTrue(emptyBoard.Equals(emptyBoard)); + Assert.IsTrue(boardWithFlop.Equals(boardWithFlop)); + Assert.IsTrue(boardWithTurn.Equals(boardWithTurn)); + Assert.IsTrue(boardWithRiver.Equals(boardWithRiver)); + } + + [Test] + public void BoardCardsTest_EqualityTest_withDefaultComparison_DifferentOrder_ReturnTrue() + { + BoardCards b1 = BoardCards.ForFlop(C1, C2, C3); + BoardCards b2 = BoardCards.ForFlop(C1, C3, C2); + BoardCards b3 = BoardCards.ForFlop(C2, C1, C3); + BoardCards b4 = BoardCards.ForFlop(C2, C3, C1); + BoardCards b5 = BoardCards.ForFlop(C3, C1, C2); + BoardCards b6 = BoardCards.ForFlop(C3, C2, C1); + + Assert.IsTrue(b1.Equals(b2)); + Assert.IsTrue(b1.Equals(b3)); + Assert.IsTrue(b1.Equals(b4)); + Assert.IsTrue(b1.Equals(b5)); + Assert.IsTrue(b1.Equals(b6)); + + Assert.IsTrue(b2.Equals(b3)); + Assert.IsTrue(b2.Equals(b4)); + Assert.IsTrue(b2.Equals(b5)); + Assert.IsTrue(b2.Equals(b6)); + + Assert.IsTrue(b3.Equals(b4)); + Assert.IsTrue(b3.Equals(b5)); + Assert.IsTrue(b3.Equals(b6)); + + Assert.IsTrue(b4.Equals(b5)); + Assert.IsTrue(b4.Equals(b6)); + + Assert.IsTrue(b5.Equals(b6)); + } + + [Test] + public void BoardCardsTest_FlopEqualityTestWithDefaultComparision_DifferentCards_ReturnsFalse() + { + BoardCards b1 = BoardCards.ForFlop(C1, C2, C3); + BoardCards b2 = BoardCards.ForFlop(C1, C2, C4); + BoardCards b3 = BoardCards.ForFlop(C1, C3, C4); + BoardCards b4 = BoardCards.ForFlop(C2, C3, C4); + + Assert.IsFalse(b1.Equals(b2)); + Assert.IsFalse(b1.Equals(b3)); + Assert.IsFalse(b1.Equals(b4)); + Assert.IsFalse(b2.Equals(b3)); + Assert.IsFalse(b2.Equals(b4)); + Assert.IsFalse(b3.Equals(b4)); + } + + [Test] public void BoardCardsTest_EqualityTestWithHoldemOmahaRule_CompareWithSelf_ReturnTrue() { From f0ce087a295bb525047779fcbd0d188818139fd9 Mon Sep 17 00:00:00 2001 From: RZ Date: Tue, 28 Nov 2023 23:41:31 -0500 Subject: [PATCH 3/7] 2 more unit tests on turn --- .../Cards/BoardCardsTests.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs b/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs index 09e6ec1..7146784 100644 --- a/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs +++ b/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs @@ -79,6 +79,29 @@ public void BoardCardsTest_FlopEqualityTestWithDefaultComparision_DifferentCards Assert.IsFalse(b3.Equals(b4)); } + [Test] + public void BoardCardsTest_TurnEqualityTestWithDefaultComparision_ReturnsTrue() + { + BoardCards b1 = BoardCards.ForTurn(C1, C2, C3, C4); + BoardCards b2 = BoardCards.ForTurn(C1, C3, C2, C4); + BoardCards b3 = BoardCards.ForTurn(C3, C2, C1, C4); + + Assert.IsTrue(b1.Equals(b2)); + Assert.IsTrue(b2.Equals(b3)); + Assert.IsTrue(b1.Equals(b3)); + } + + [Test] + public void BoardCardsTest_TurnEqualityTestWithDefaultComparision_DifferentCards_ReturnsFalse() + { + BoardCards b1 = BoardCards.ForTurn(C1, C2, C3, C4); + BoardCards b2 = BoardCards.ForTurn(C1, C2, C3, C5); + BoardCards b3 = BoardCards.ForTurn(C1, C2, C5, C4); + + Assert.IsFalse(b1.Equals(b2)); + Assert.IsFalse(b1.Equals(b3)); + Assert.IsFalse(b2.Equals(b3)); + } [Test] public void BoardCardsTest_EqualityTestWithHoldemOmahaRule_CompareWithSelf_ReturnTrue() From cf3ea43c2b40020321dc06203c970ffc0c19d72e Mon Sep 17 00:00:00 2001 From: RZ Date: Tue, 28 Nov 2023 23:45:18 -0500 Subject: [PATCH 4/7] Turn test with same cards, returns true --- .../Cards/BoardCardsTests.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs b/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs index 7146784..136c7df 100644 --- a/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs +++ b/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs @@ -103,6 +103,17 @@ public void BoardCardsTest_TurnEqualityTestWithDefaultComparision_DifferentCards Assert.IsFalse(b2.Equals(b3)); } + + [Test] + public void BoardCardsTest_TurnEqualityTestWithDefaultComparision_SameCardsWithDifferentOrder_ReturnsTrue() + { + BoardCards b1 = BoardCards.ForTurn(C1, C2, C3, C4); + BoardCards b2 = BoardCards.ForTurn(C4, C2, C3, C1); + + Assert.IsTrue(b1.Equals(b2)); + } + + [Test] public void BoardCardsTest_EqualityTestWithHoldemOmahaRule_CompareWithSelf_ReturnTrue() { From 41096604096fd6bf0b297213a21b2cd34fcf25d2 Mon Sep 17 00:00:00 2001 From: RZ Date: Tue, 28 Nov 2023 23:48:28 -0500 Subject: [PATCH 5/7] Add two river tests --- .../Cards/BoardCardsTests.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs b/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs index 136c7df..d76d22f 100644 --- a/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs +++ b/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs @@ -113,6 +113,34 @@ public void BoardCardsTest_TurnEqualityTestWithDefaultComparision_SameCardsWithD Assert.IsTrue(b1.Equals(b2)); } + [Test] + public void BoardCardsTest_RiverEqualityTestWithDefaultComparision_DifferentCards_ReturnsFalse() + { + BoardCards b1 = BoardCards.ForRiver(C1, C2, C3, C4, C5); + BoardCards b2 = BoardCards.ForRiver(C1, C2, C3, C4, C6); + BoardCards b3 = BoardCards.ForRiver(C1, C2, C3, C6, C5); + + Assert.IsFalse(b1.Equals(b2)); + Assert.IsFalse(b1.Equals(b3)); + Assert.IsFalse(b2.Equals(b3)); + } + + [Test] + public void BoardCardsTest_RiverEqualityTestWith_SameCardsWithDifferentOrder_ReturnsTrue() + { + BoardCards b1 = BoardCards.ForRiver(C1, C2, C3, C4, C5); + BoardCards b2 = BoardCards.ForRiver(C4, C2, C3, C1, C5); + BoardCards b3 = BoardCards.ForRiver(C1, C2, C3, C5, C4); + BoardCards b4 = BoardCards.ForRiver(C1, C2, C5, C3, C4); + + Assert.IsTrue(b1.Equals(b2)); + Assert.IsTrue(b1.Equals(b3)); + Assert.IsTrue(b1.Equals(b4)); + Assert.IsFalse(b2.EqualsViaHoldemOmahaRule(b3)); + Assert.IsFalse(b2.EqualsViaHoldemOmahaRule(b4)); + Assert.IsFalse(b3.EqualsViaHoldemOmahaRule(b4)); + } + [Test] public void BoardCardsTest_EqualityTestWithHoldemOmahaRule_CompareWithSelf_ReturnTrue() From 454fddbd0e9da2bbac7a9af440ca2b5591169f12 Mon Sep 17 00:00:00 2001 From: RZ Date: Tue, 28 Nov 2023 23:50:09 -0500 Subject: [PATCH 6/7] Test name format fix --- .../Cards/BoardCardsTests.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs b/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs index d76d22f..94973ca 100644 --- a/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs +++ b/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs @@ -64,7 +64,7 @@ public void BoardCardsTest_EqualityTest_withDefaultComparison_DifferentOrder_Ret } [Test] - public void BoardCardsTest_FlopEqualityTestWithDefaultComparision_DifferentCards_ReturnsFalse() + public void BoardCardsTest_FlopEqualityTest_WithDefaultComparision_DifferentCards_ReturnsFalse() { BoardCards b1 = BoardCards.ForFlop(C1, C2, C3); BoardCards b2 = BoardCards.ForFlop(C1, C2, C4); @@ -80,7 +80,7 @@ public void BoardCardsTest_FlopEqualityTestWithDefaultComparision_DifferentCards } [Test] - public void BoardCardsTest_TurnEqualityTestWithDefaultComparision_ReturnsTrue() + public void BoardCardsTest_TurnEqualityTest_WithDefaultComparision_ReturnsTrue() { BoardCards b1 = BoardCards.ForTurn(C1, C2, C3, C4); BoardCards b2 = BoardCards.ForTurn(C1, C3, C2, C4); @@ -92,7 +92,7 @@ public void BoardCardsTest_TurnEqualityTestWithDefaultComparision_ReturnsTrue() } [Test] - public void BoardCardsTest_TurnEqualityTestWithDefaultComparision_DifferentCards_ReturnsFalse() + public void BoardCardsTest_TurnEqualityTest_WithDefaultComparision_DifferentCards_ReturnsFalse() { BoardCards b1 = BoardCards.ForTurn(C1, C2, C3, C4); BoardCards b2 = BoardCards.ForTurn(C1, C2, C3, C5); @@ -105,7 +105,7 @@ public void BoardCardsTest_TurnEqualityTestWithDefaultComparision_DifferentCards [Test] - public void BoardCardsTest_TurnEqualityTestWithDefaultComparision_SameCardsWithDifferentOrder_ReturnsTrue() + public void BoardCardsTest_TurnEqualityTest_WithDefaultComparision_SameCardsWithDifferentOrder_ReturnsTrue() { BoardCards b1 = BoardCards.ForTurn(C1, C2, C3, C4); BoardCards b2 = BoardCards.ForTurn(C4, C2, C3, C1); @@ -114,7 +114,7 @@ public void BoardCardsTest_TurnEqualityTestWithDefaultComparision_SameCardsWithD } [Test] - public void BoardCardsTest_RiverEqualityTestWithDefaultComparision_DifferentCards_ReturnsFalse() + public void BoardCardsTest_RiverEqualityTest_WithDefaultComparision_DifferentCards_ReturnsFalse() { BoardCards b1 = BoardCards.ForRiver(C1, C2, C3, C4, C5); BoardCards b2 = BoardCards.ForRiver(C1, C2, C3, C4, C6); From e94d4f96ed95180a4dc48e93787b6fbd98a3b449 Mon Sep 17 00:00:00 2001 From: RZ Date: Tue, 28 Nov 2023 23:53:19 -0500 Subject: [PATCH 7/7] Test name formatting fix --- HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs b/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs index 94973ca..e9e5659 100644 --- a/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs +++ b/HandHistories.Objects.UnitTests/Cards/BoardCardsTests.cs @@ -19,7 +19,7 @@ public class BoardCardsTests [Test] - public void BoardCardsTest_EqualityTest_withDefaultComparison_CompareWithSelf_ReturnTrue() + public void BoardCardsTest_EqualityTest_WithDefaultComparison_CompareWithSelf_ReturnTrue() { BoardCards emptyBoard = BoardCards.FromCards(String.Empty); BoardCards boardWithFlop = BoardCards.FromCards("AcQsTh"); @@ -33,7 +33,7 @@ public void BoardCardsTest_EqualityTest_withDefaultComparison_CompareWithSelf_Re } [Test] - public void BoardCardsTest_EqualityTest_withDefaultComparison_DifferentOrder_ReturnTrue() + public void BoardCardsTest_EqualityTest_WithDefaultComparison_DifferentOrder_ReturnTrue() { BoardCards b1 = BoardCards.ForFlop(C1, C2, C3); BoardCards b2 = BoardCards.ForFlop(C1, C3, C2);