public void Test_River() { HeHsDeviation dev = new HeHsDeviation(); // Generate some unlucky rivers. dev.ProcessHand(StdDeck.Descriptor.GetIndexes("7c 6c Ac 5s 2c 3h 8h")); dev.ProcessHand(StdDeck.Descriptor.GetIndexes("7c 6c Ac 5s 2h 3c 8h")); Assert.True(dev.AccDeviation[3] < 0); Assert.True(dev.AvDeviation[3] < 0); Assert.AreEqual(new int[] { 2, 2, 2, 2 }, dev.HandCount); dev.Reset(); // Generate some lucky rivers. dev.ProcessHand(StdDeck.Descriptor.GetIndexes("7c 6c Ac 5s 2c 3h 8c")); dev.ProcessHand(StdDeck.Descriptor.GetIndexes("7c 6c Ac 5s 2h 3c 8c")); Assert.AreEqual(new int[] { 2, 2, 2, 2 }, dev.HandCount); Assert.True(dev.AccDeviation[3] > 0); Assert.True(dev.AvDeviation[3] > 0); dev.Reset(); // Very long running //// Make sure that the deviation for the river is 0. //dev.Reset(); //int[] hand = new int[7]; //CardEnum.Combin(StdDeck.Descriptor, 7, hand, 0, null, 0, OnCombinProcessHand, dev); //Assert.AreEqual(0, dev.AccDeviation[3], 0.0001); //int hc = (int)EnumAlgos.CountCombin(52, 7); //Assert.AreEqual(new int[] { hc, hc, hc, hc}, dev.HandCount); }
public void Test_Preflop() { HeHsDeviation dev = new HeHsDeviation(); // Generate some unlucky preflops. dev.ProcessHand(StdDeck.Descriptor.GetIndexes("7c 2d")); dev.ProcessHand(StdDeck.Descriptor.GetIndexes("3c 2d")); Assert.True(dev.AccDeviation[0] < 0); Assert.AreEqual(0, dev.AccDeviation[1], 0.0001); Assert.AreEqual(0, dev.AccDeviation[2], 0.0001); Assert.AreEqual(0, dev.AccDeviation[3], 0.0001); Assert.True(dev.AvDeviation[0] < 0); Assert.AreEqual(0, dev.AvDeviation[1], 1e-7); Assert.AreEqual(0, dev.AvDeviation[2], 1e-7); Assert.AreEqual(0, dev.AvDeviation[3], 1e-7); Assert.AreEqual(new int[] { 2, 0, 0, 0 }, dev.HandCount); dev.Reset(); // Generate some lucky preflops. dev.ProcessHand(StdDeck.Descriptor.GetIndexes("Ac Ad")); dev.ProcessHand(StdDeck.Descriptor.GetIndexes("Kc Ac")); Assert.True(dev.AccDeviation[0] > 0); Assert.AreEqual(0, dev.AccDeviation[1], 0.0001); Assert.AreEqual(0, dev.AccDeviation[2], 0.0001); Assert.AreEqual(0, dev.AccDeviation[3], 0.0001); Assert.True(dev.AvDeviation[0] > 0); Assert.AreEqual(0, dev.AvDeviation[1], 1e-7); Assert.AreEqual(0, dev.AvDeviation[2], 1e-7); Assert.AreEqual(0, dev.AvDeviation[3], 1e-7); Assert.AreEqual(new int[] { 2, 0, 0, 0 }, dev.HandCount); dev.Reset(); // Make sure that the deviation for all preflop hands is 0. dev.Reset(); int[] hand = new int[2]; CardEnum.Combin(StdDeck.Descriptor, 2, hand, 0, null, 0, OnCombinProcessHand, dev); Assert.AreEqual(0, dev.AccDeviation[0], 0.0001); Assert.AreEqual(0, dev.AccDeviation[1], 0.0001); Assert.AreEqual(0, dev.AccDeviation[2], 0.0001); Assert.AreEqual(0, dev.AccDeviation[3], 0.0001); Assert.AreEqual(0, dev.AvDeviation[0], 1e-7); Assert.AreEqual(0, dev.AvDeviation[1], 1e-7); Assert.AreEqual(0, dev.AvDeviation[2], 1e-7); Assert.AreEqual(0, dev.AvDeviation[3], 1e-7); Assert.AreEqual(new int[] { 1326, 0, 0, 0 }, dev.HandCount); }
public void Test_Flop() { HeHsDeviation dev = new HeHsDeviation(); // Generate some unlucky flops. dev.ProcessHand(StdDeck.Descriptor.GetIndexes("7c 6c Ah 5s 5d")); dev.ProcessHand(StdDeck.Descriptor.GetIndexes("7c 6c Ad Kd Qd")); Assert.True(dev.AccDeviation[1] < 0); Assert.True(dev.AvDeviation[1] < 0); Assert.AreEqual(new int[] { 2, 2, 0, 0 }, dev.HandCount); dev.Reset(); // Generate some lucky flops. dev.ProcessHand(StdDeck.Descriptor.GetIndexes("7c 6c Ac 5c 4c")); dev.ProcessHand(StdDeck.Descriptor.GetIndexes("7c 6c Ah Kc Qc")); Assert.True(dev.AccDeviation[1] > 0); Assert.True(dev.AvDeviation[1] > 0); Assert.AreEqual(new int[] { 2, 2, 0, 0 }, dev.HandCount); dev.Reset(); // Deal all flops for a pocket and make sure the luck is zero. dev.Reset(); int[] hand = new int[5]; hand[0] = StdDeck.Descriptor.GetIndex("Ac"); hand[1] = StdDeck.Descriptor.GetIndex("Ad"); CardEnum.Combin(StdDeck.Descriptor, 3, hand, 2, hand, 2, OnCombinProcessHand, dev); Assert.AreEqual(0, dev.AccDeviation[1], 0.002); Assert.AreEqual(0, dev.AvDeviation[1], 1e-7); int hc = (int)EnumAlgos.CountCombin(50, 3); Assert.AreEqual(new int[] { hc, hc, 0, 0 }, dev.HandCount); // Deal all pockets and all flops, and make sure the luck is zero. // Check only average deviation, the accumulated one is too big because of low precision. dev.Reset(); hand = new int[5]; CardEnum.Combin(StdDeck.Descriptor, 2, hand, 0, null, 0, OnCombinFlop, dev); Assert.AreEqual(0, dev.AvDeviation[0], 0.0001); Assert.AreEqual(0, dev.AvDeviation[1], 0.0001); hc = (int)EnumAlgos.CountCombin(52, 2) * (int)EnumAlgos.CountCombin(50, 3); Assert.AreEqual(new int[] { hc, hc, 0, 0 }, dev.HandCount); }
void OnCombinProcessHand(int [] hand, HeHsDeviation dev) { dev.ProcessHand(hand); }
void OnCombinFlop(int[] hand, HeHsDeviation dev) { CardEnum.Combin(StdDeck.Descriptor, 3, hand, 2, hand, 2, OnCombinProcessHand, dev); }