private static int GetSPPRounds(BigInteger bi, ConfidenceFactor confidence) { int num = bi.BitCount(); int num2 = (num <= 100) ? 27 : ((num <= 150) ? 18 : ((num <= 200) ? 15 : ((num <= 250) ? 12 : ((num <= 300) ? 9 : ((num <= 350) ? 8 : ((num <= 400) ? 7 : ((num <= 500) ? 6 : ((num <= 600) ? 5 : ((num <= 800) ? 4 : ((num > 1250) ? 2 : 3)))))))))); switch (confidence) { case ConfidenceFactor.ExtraLow: num2 >>= 2; return((num2 == 0) ? 1 : num2); case ConfidenceFactor.Low: num2 >>= 1; return((num2 == 0) ? 1 : num2); case ConfidenceFactor.Medium: return(num2); case ConfidenceFactor.High: return(num2 << 1); case ConfidenceFactor.ExtraHigh: return(num2 << 2); case ConfidenceFactor.Provable: throw new Exception("The Rabin-Miller test can not be executed in a way such that its results are provable"); default: throw new ArgumentOutOfRangeException("confidence"); } }
public void AssignedatchFactorLessThanOneTest() { MyLineSr.Setup(x => x.GetAllLiabilities("0*" + LineSr.TOURN_CONF_RATING)).Returns(new LiabilityLn() { factor = 1 }); MyLineSr.Setup(x => x.GetAllLiabilities("1*" + LineSr.CONF_RATING_VALUES)).Returns(new LiabilityLn() { factor = 250 }); MyLineSr.Setup(x => x.GetAllLiabilities("2*" + LineSr.MATCH_FACTOR)).Returns(new LiabilityLn() { factor = 0.5m }); ConfidenceFactor confidenceFactor = new ConfidenceFactor(); var ticket = new Ticket(); ticket.TipItems.Add(TestTipItem.CreateTipItem()); ticket.TipItems.Add(TestTipItem.CreateTipItem()); ticket.TipItems.Add(TestTipItem.CreateTipItem()); ticket.TipItems[0].Match.MatchId = 2; ticket.TipItems[1].Match.MatchId = 2; ticket.TipItems[1].Match.MatchId = 3; ticket.TotalOddDisplay = 7.5m; var maxbet = confidenceFactor.CalculateFactor(ticket); Assert.AreEqual(19.230769230769230769230769231M, maxbet); }
/// <summary> /// Probabilistic prime test based on Rabin-Miller's test /// </summary> /// <param name="bi" type="BigInteger.BigInteger"> /// <para> /// The number to test. /// </para> /// </param> /// <param name="confidence" type="int"> /// <para> /// The number of chosen bases. The test has at least a /// 1/4^confidence chance of falsely returning True. /// </para> /// </param> /// <returns> /// <para> /// True if "this" is a strong pseudoprime to randomly chosen bases. /// </para> /// <para> /// False if "this" is definitely NOT prime. /// </para> /// </returns> public static bool RabinMillerTest(BigInteger bi, ConfidenceFactor confidence) { int Rounds = GetSPPRounds(bi, confidence); // calculate values of s and t BigInteger p_sub1 = bi - 1; int s = p_sub1.LowestSetBit(); BigInteger t = p_sub1 >> s; int bits = bi.bitCount(); BigInteger a = null; RandomNumberGenerator rng = RandomNumberGenerator.Create(); var mr = new BigInteger.ModulusRing(bi); for (int round = 0; round < Rounds; round++) { while (true) { // generate a < n a = BigInteger.genRandom(bits, rng); // make sure "a" is not 0 if (a > 1 && a < bi) { break; } } if (a.gcd(bi) != 1) { return(false); } BigInteger b = mr.Pow(a, t); if (b == 1) { continue; // a^t mod p = 1 } bool result = false; for (int j = 0; j < s; j++) { if (b == p_sub1) { // a^((2^j)*t) mod p = p-1 for some 0 <= j <= s-1 result = true; break; } b = (b * b) % bi; } if (result == false) { return(false); } } return(true); }
private static int GetSPPRounds(BigInteger bi, ConfidenceFactor confidence) { int num1 = bi.BitCount(); int num2 = num1 > 100 ? (num1 > 150 ? (num1 > 200 ? (num1 > 250 ? (num1 > 300 ? (num1 > 350 ? (num1 > 400 ? (num1 > 500 ? (num1 > 600 ? (num1 > 800 ? (num1 > 1250 ? 2 : 3) : 4) : 5) : 6) : 7) : 8) : 9) : 12) : 15) : 18) : 27; switch (confidence) { case ConfidenceFactor.ExtraLow: int num3 = num2 >> 2; return(num3 != 0 ? num3 : 1); case ConfidenceFactor.Low: int num4 = num2 >> 1; return(num4 != 0 ? num4 : 1); case ConfidenceFactor.Medium: return(num2); case ConfidenceFactor.High: return(num2 << 1); case ConfidenceFactor.ExtraHigh: return(num2 << 2); case ConfidenceFactor.Provable: throw new Exception("The Rabin-Miller test can not be executed in a way such that its results are provable"); default: throw new ArgumentOutOfRangeException(nameof(confidence)); } }
public void NoSportFactorTest() { MyLineSr.Setup(x => x.GetAllLiabilities("0*" + LineSr.TOURN_CONF_RATING)).Returns(new LiabilityLn() { factor = 1 }); MyLineSr.Setup(x => x.GetAllLiabilities("1*" + LineSr.CONF_RATING_VALUES)).Returns(new LiabilityLn() { factor = 250 }); MyLineSr.Setup(x => x.GetAllLiabilities("SPORT|1|DEFAULT*" + LineSr.LIMIT_FACTORS)).Returns(new LiabilityLn() { factor = 1.5m }); ConfidenceFactor confidenceFactor = new ConfidenceFactor(); var ticket = new Ticket(); ticket.TipItems.Add(TestTipItem.CreateTipItem()); ticket.TipItems.Add(TestTipItem.CreateTipItem()); ticket.TipItems[0].Match.MatchId = 2; ticket.TipItems[0].Match.MatchView.SportView.LineObject.SvrGroupId = 1; ticket.TotalOddDisplay = 7.5m; var maxbet = confidenceFactor.CalculateFactor(ticket); Assert.AreEqual(38.461538461538461538461538462m, maxbet); }
public static bool SmallPrimeSppTest(BigInteger bi, ConfidenceFactor confidence) { int sppRounds = PrimalityTests.GetSPPRounds(bi, confidence); BigInteger bigInteger1 = bi - (BigInteger)1; int num = bigInteger1.LowestSetBit(); BigInteger exp = bigInteger1 >> num; BigInteger.ModulusRing modulusRing = new BigInteger.ModulusRing(bi); for (int index1 = 0; index1 < sppRounds; ++index1) { BigInteger bigInteger2 = modulusRing.Pow(BigInteger.smallPrimes[index1], exp); if (!(bigInteger2 == 1U)) { bool flag = false; for (int index2 = 0; index2 < num; ++index2) { if (bigInteger2 == bigInteger1) { flag = true; break; } bigInteger2 = bigInteger2 * bigInteger2 % bi; } if (!flag) { return(false); } } } return(true); }
/// <summary> /// Probabilistic prime test based on Rabin-Miller's test /// </summary> /// <param name="n" type="BigInteger.BigInteger"> /// <para> /// The number to test. /// </para> /// </param> /// <param name="confidence" type="int"> /// <para> /// The number of chosen bases. The test has at least a /// 1/4^confidence chance of falsely returning True. /// </para> /// </param> /// <returns> /// <para> /// True if "this" is a strong pseudoprime to randomly chosen bases. /// </para> /// <para> /// False if "this" is definitely NOT prime. /// </para> /// </returns> public static bool RabinMillerTest(BigInteger n, ConfidenceFactor confidence) { int bits = n.BitCount(); int t = GetSPPRounds(bits, confidence); // n - 1 == 2^s * r, r is odd BigInteger n_minus_1 = n - 1; int s = n_minus_1.LowestSetBit(); BigInteger r = n_minus_1 >> s; BigInteger.ModulusRing mr = new BigInteger.ModulusRing(n); // Applying optimization from HAC section 4.50 (base == 2) // not a really random base but an interesting (and speedy) one BigInteger y = null; // FIXME - optimization disable for small primes due to bug #81857 if (n.BitCount() > 100) { y = mr.Pow(2, r); } // still here ? start at round 1 (round 0 was a == 2) for (int round = 0; round < t; round++) { if ((round > 0) || (y == null)) { BigInteger a = null; // check for 2 <= a <= n - 2 // ...but we already did a == 2 previously as an optimization do { a = BigInteger.GenerateRandom(bits); } while ((a <= 2) && (a >= n_minus_1)); y = mr.Pow(a, r); } if (y == 1) { continue; } for (int j = 0; ((j < s) && (y != n_minus_1)); j++) { y = mr.Pow(y, 2); if (y == 1) { return(false); } } if (y != n_minus_1) { return(false); } } return(true); }
public static bool SmallPrimeSppTest(BigInteger bi, ConfidenceFactor confidence) { int spprounds = PrimalityTests.GetSPPRounds(bi, confidence); BigInteger bigInteger = bi - 1; int num = bigInteger.LowestSetBit(); BigInteger exp = bigInteger >> num; BigInteger.ModulusRing modulusRing = new BigInteger.ModulusRing(bi); for (int i = 0; i < spprounds; i++) { BigInteger bigInteger2 = modulusRing.Pow(BigInteger.smallPrimes[i], exp); if (!(bigInteger2 == 1u)) { bool flag = false; for (int j = 0; j < num; j++) { if (bigInteger2 == bigInteger) { flag = true; break; } bigInteger2 = bigInteger2 * bigInteger2 % bi; } if (!flag) { return(false); } } } return(true); }
public static bool Test(BigInteger n, ConfidenceFactor confidence) { if (n.BitCount() < 33) { return(PrimalityTests.SmallPrimeSppTest(n, confidence)); } return(PrimalityTests.RabinMillerTest(n, confidence)); }
public static bool Test(BigInteger n, ConfidenceFactor confidence) { // Rabin-Miller fails with smaller primes (at least with our BigInteger code) if (n.BitCount() < 33) { return(SmallPrimeSppTest(n, confidence)); } return(RabinMillerTest(n, confidence)); }
/// <summary> /// Probabilistic prime test based on Rabin-Miller's test /// </summary> /// <param name="bi" type="BigInteger.BigInteger"> /// <para> /// The number to test. /// </para> /// </param> /// <param name="confidence" type="int"> /// <para> /// The number of chosen bases. The test has at least a /// 1/4^confidence chance of falsely returning True. /// </para> /// </param> /// <returns> /// <para> /// True if "this" is a strong pseudoprime to randomly chosen bases. /// </para> /// <para> /// False if "this" is definitely NOT prime. /// </para> /// </returns> public static bool RabinMillerTest(BigInteger bi, ConfidenceFactor confidence) { int Rounds = GetSPPRounds(bi, confidence); // calculate values of s and t BigInteger p_sub1 = bi - 1; int s = p_sub1.LowestSetBit(); BigInteger t = p_sub1 >> s; int bits = bi.bitCount(); BigInteger a = null; RandomNumberGenerator rng = RandomNumberGenerator.Create(); BigInteger.ModulusRing mr = new BigInteger.ModulusRing(bi); for (int round = 0; round < Rounds; round++) { while (true) { // generate a < n a = BigInteger.genRandom(bits, rng); // make sure "a" is not 0 if (a > 1 && a < bi) break; } if (a.gcd(bi) != 1) return false; BigInteger b = mr.Pow(a, t); if (b == 1) continue; // a^t mod p = 1 bool result = false; for (int j = 0; j < s; j++) { if (b == p_sub1) { // a^((2^j)*t) mod p = p-1 for some 0 <= j <= s-1 result = true; break; } b = (b * b) % bi; } if (result == false) return false; } return true; }
public static bool RabinMillerTest(BigInteger n, ConfidenceFactor confidence) { int num = n.BitCount(); int sPPRounds = GetSPPRounds(num, confidence); BigInteger bigInteger = n - 1; int num2 = bigInteger.LowestSetBit(); BigInteger bigInteger2 = bigInteger >> num2; BigInteger.ModulusRing modulusRing = new BigInteger.ModulusRing(n); BigInteger bigInteger3 = null; if (n.BitCount() > 100) { bigInteger3 = modulusRing.Pow(2u, bigInteger2); } for (int i = 0; i < sPPRounds; i++) { if (i > 0 || bigInteger3 == null) { BigInteger bigInteger4 = null; do { bigInteger4 = BigInteger.GenerateRandom(num); }while (bigInteger4 <= 2 && bigInteger4 >= bigInteger); bigInteger3 = modulusRing.Pow(bigInteger4, bigInteger2); } if (bigInteger3 == 1u) { continue; } for (int j = 0; j < num2; j++) { if (!(bigInteger3 != bigInteger)) { break; } bigInteger3 = modulusRing.Pow(bigInteger3, 2); if (bigInteger3 == 1u) { return(false); } } if (bigInteger3 != bigInteger) { return(false); } } return(true); }
/// <summary> /// Probabilistic prime test based on Rabin-Miller's test /// </summary> /// <param name="n" type="BigInteger.BigInteger"> /// <para> /// The number to test. /// </para> /// </param> /// <param name="confidence" type="int"> /// <para> /// The number of chosen bases. The test has at least a /// 1/4^confidence chance of falsely returning True. /// </para> /// </param> /// <returns> /// <para> /// True if "this" is a strong pseudoprime to randomly chosen bases. /// </para> /// <para> /// False if "this" is definitely NOT prime. /// </para> /// </returns> public static bool RabinMillerTest(BigInteger n, ConfidenceFactor confidence) { int bits = n.BitCount (); int t = GetSPPRounds (bits, confidence); // n - 1 == 2^s * r, r is odd BigInteger n_minus_1 = n - 1; int s = n_minus_1.LowestSetBit (); BigInteger r = n_minus_1 >> s; BigInteger.ModulusRing mr = new BigInteger.ModulusRing (n); // Applying optimization from HAC section 4.50 (base == 2) // not a really random base but an interesting (and speedy) one BigInteger y = null; // FIXME - optimization disable for small primes due to bug #81857 if (n.BitCount () > 100) y = mr.Pow (2, r); // still here ? start at round 1 (round 0 was a == 2) for (int round = 0; round < t; round++) { if ((round > 0) || (y == null)) { BigInteger a = null; // check for 2 <= a <= n - 2 // ...but we already did a == 2 previously as an optimization do { a = BigInteger.GenerateRandom (bits); } while ((a <= 2) && (a >= n_minus_1)); y = mr.Pow (a, r); } if (y == 1) continue; for (int j = 0; ((j < s) && (y != n_minus_1)); j++) { y = mr.Pow (y, 2); if (y == 1) return false; } if (y != n_minus_1) return false; } return true; }
public static bool RabinMillerTest(BigInteger n, ConfidenceFactor confidence) { int bits = n.BitCount(); int sppRounds = PrimalityTests.GetSPPRounds((BigInteger)bits, confidence); BigInteger bigInteger1 = n - (BigInteger)1; int num = bigInteger1.LowestSetBit(); BigInteger bigInteger2 = bigInteger1 >> num; BigInteger.ModulusRing modulusRing = new BigInteger.ModulusRing(n); BigInteger a = (BigInteger)null; if (n.BitCount() > 100) { a = modulusRing.Pow(2U, bigInteger2); } for (int index1 = 0; index1 < sppRounds; ++index1) { if (index1 > 0 || a == (BigInteger)null) { BigInteger random; do { random = BigInteger.GenerateRandom(bits); }while (random <= (BigInteger)2 && random >= bigInteger1); a = modulusRing.Pow(random, bigInteger2); } if (!(a == 1U)) { for (int index2 = 0; index2 < num && a != bigInteger1; ++index2) { a = modulusRing.Pow(a, (BigInteger)2); if (a == 1U) { return(false); } } if (a != bigInteger1) { return(false); } } } return(true); }
public static bool RabinMillerTest(BigInteger bi, ConfidenceFactor confidence) { int sPPRounds = GetSPPRounds(bi, confidence); BigInteger bigInteger = bi - 1; int num = bigInteger.LowestSetBit(); BigInteger exp = bigInteger >> num; int bits = bi.bitCount(); BigInteger bigInteger2 = null; RandomNumberGenerator rng = RandomNumberGenerator.Create(); BigInteger.ModulusRing modulusRing = new BigInteger.ModulusRing(bi); for (int i = 0; i < sPPRounds; i++) { do { bigInteger2 = BigInteger.genRandom(bits, rng); }while (!(bigInteger2 > 1) || !(bigInteger2 < bi)); if (bigInteger2.gcd(bi) != 1u) { return(false); } BigInteger bigInteger3 = modulusRing.Pow(bigInteger2, exp); if (bigInteger3 == 1u) { continue; } bool flag = false; for (int j = 0; j < num; j++) { if (bigInteger3 == bigInteger) { flag = true; break; } bigInteger3 = bigInteger3 * bigInteger3 % bi; } if (!flag) { return(false); } } return(true); }
public static bool SmallPrimeSppTest(BigInteger bi, ConfidenceFactor confidence) { int Rounds = GetSPPRounds(bi, confidence); // calculate values of s and t BigInteger p_sub1 = bi - 1; int s = p_sub1.LowestSetBit(); BigInteger t = p_sub1 >> s; var mr = new BigInteger.ModulusRing(bi); for (int round = 0; round < Rounds; round++) { BigInteger b = mr.Pow(BigInteger.smallPrimes[round], t); if (b == 1) { continue; // a^t mod p = 1 } bool result = false; for (int j = 0; j < s; j++) { if (b == p_sub1) { // a^((2^j)*t) mod p = p-1 for some 0 <= j <= s-1 result = true; break; } b = (b * b) % bi; } if (result == false) { return(false); } } return(true); }
private static int GetSPPRounds(BigInteger bi, ConfidenceFactor confidence) { int bc = bi.BitCount(); int Rounds; // Data from HAC, 4.49 if (bc <= 100) Rounds = 27; else if (bc <= 150) Rounds = 18; else if (bc <= 200) Rounds = 15; else if (bc <= 250) Rounds = 12; else if (bc <= 300) Rounds = 9; else if (bc <= 350) Rounds = 8; else if (bc <= 400) Rounds = 7; else if (bc <= 500) Rounds = 6; else if (bc <= 600) Rounds = 5; else if (bc <= 800) Rounds = 4; else if (bc <= 1250) Rounds = 3; else Rounds = 2; switch (confidence) { case ConfidenceFactor.ExtraLow: Rounds >>= 2; return Rounds != 0 ? Rounds : 1; case ConfidenceFactor.Low: Rounds >>= 1; return Rounds != 0 ? Rounds : 1; case ConfidenceFactor.Medium: return Rounds; case ConfidenceFactor.High: return Rounds << 1; case ConfidenceFactor.ExtraHigh: return Rounds << 2; case ConfidenceFactor.Provable: throw new Exception( "The Rabin-Miller test can not be executed in a way such that its results are provable"); default: throw new ArgumentOutOfRangeException("confidence"); } }
public void OpenUserTicketsTest() { AuthorizationService = MockRepository.GenerateStub <IAuthorizationService>(); StationRepository = MockRepository.GenerateStub <IStationRepository>(); LanguageRepository = MockRepository.GenerateStub <ILanguageRepository>(); LineProvider = MockRepository.GenerateStub <ILineProvider>(); BusinessPropsHelper = MockRepository.GenerateStub <IBusinessPropsHelper>(); DataBinding = MockRepository.GenerateStub <IDataBinding>(); ConfidenceFactor = MockRepository.GenerateStub <IConfidenceFactor>(); IoCContainer.Kernel.Bind <IDataBinding>().ToConstant <IDataBinding>(DataBinding).InSingletonScope(); IoCContainer.Kernel.Bind <IAuthorizationService>().ToConstant <IAuthorizationService>(AuthorizationService).InSingletonScope(); IoCContainer.Kernel.Bind <IStationRepository>().ToConstant <IStationRepository>(StationRepository).InSingletonScope(); IoCContainer.Kernel.Bind <ILanguageRepository>().ToConstant <ILanguageRepository>(LanguageRepository).InSingletonScope(); IoCContainer.Kernel.Bind <ILineProvider>().ToConstant <ILineProvider>(LineProvider).InSingletonScope(); IoCContainer.Kernel.Bind <IBusinessPropsHelper>().ToConstant <IBusinessPropsHelper>(BusinessPropsHelper).InSingletonScope(); IoCContainer.Kernel.Bind <IConfidenceFactor>().ToConstant <IConfidenceFactor>(ConfidenceFactor).InSingletonScope(); ConfidenceFactor.Expect(x => x.CalculateFactor(new Ticket())).Return(1000000).IgnoreArguments(); StationRepository.TurnOffCashInInit = true; StationRepository.Expect(x => x.AllowAnonymousBetting).Return(true); StationRepository.Expect(x => x.IsReady).Return(true); StationRepository.Expect(x => x.StationNumber).Return("0024"); StationRepository.Expect(x => x.HubSettings).Return(new Dictionary <string, string>()); StationRepository.Currency = "EUR"; ChangeTracker = IoCContainer.Kernel.Get <IChangeTracker>(); ChangeTracker.CurrentUser = new AnonymousUser("1", 1); ChangeTracker.CurrentUser.Cashpool = 100000; ChangeTracker.CurrentUser.AvailableCash = 100000; Dispatcher.Invoke(() => { Window = MyRegionManager.FindWindowByViewModel <MainViewModel>(); Window.Show(); }); Thread.Sleep(1000); ChangeTracker.CurrentUser = new LoggedInUser(1, "111", 1000) { Username = "******" }; var header = MyRegionManager.CurrentViewModelInRegion(RegionNames.HeaderRegion) as HeaderViewModel; header.OpenAuthorizationCommand.Execute(""); Thread.Sleep(1000); var userProfileMenuViewModel = MyRegionManager.CurrentViewModelInRegion(RegionNames.UserProfileMenuRegion) as UserProfileMenuViewModel; var ticket = new UserTicket() { checkSum = "1234", createdAt = DateTime.Now, ticketNumber = "1241252352346" }; string total; WsdlRepository.Expect(x => x.GetUserTickets("1", (ticketCategory)1, new AccountTicketSorting() { field = AccountTicketSortingFields.DateCreated, value = AccountTicketSortingValues.Desc }, 0, 20, out total)).Return(new UserTicket[] { ticket }).OutRef("1000").IgnoreArguments(); userProfileMenuViewModel.ShowTicketsCommand.Execute(""); Thread.Sleep(1000); Assert.AreEqual(1, ChangeTracker.Tickets.Count); var userTicketsViewModel = MyRegionManager.CurrentViewModelInRegion(RegionNames.UserProfileContentRegion) as UserTicketsViewModel; Assert.AreEqual(1, userTicketsViewModel.TicketsStartPage); Dispatcher.Invoke(() => { userTicketsViewModel.SelectedType = userTicketsViewModel.TicketType[3]; }); Dispatcher.Invoke(() => { userTicketsViewModel.NextPage.Execute(""); }); Assert.AreEqual(2, userTicketsViewModel.TicketsStartPage); Assert.AreEqual(1, userTicketsViewModel.Tickets.Count); if (1000 % userTicketsViewModel.Pagesize > 0) { Assert.AreEqual(1000 / userTicketsViewModel.Pagesize + 1, userTicketsViewModel.AllPages); } if (1000 % userTicketsViewModel.Pagesize == 0) { Assert.AreEqual(1000 / userTicketsViewModel.Pagesize, userTicketsViewModel.AllPages); } Assert.AreEqual(2, userTicketsViewModel.TicketsStartPage); Assert.AreEqual(3, userTicketsViewModel.SelectedType.Id); userTicketsViewModel.ShowTicketCommand.Execute(userTicketsViewModel.Tickets[0]); var nextModel = MyRegionManager.CurrentViewModelType(RegionNames.UserProfileContentRegion); Assert.AreEqual(typeof(TicketDetailsViewModel), nextModel); UserProfileViewModel userprofileWindow = null; Dispatcher.Invoke(() => { userprofileWindow = ChangeTracker.UserProfileWindow.DataContext as UserProfileViewModel; }); WsdlRepository.BackToRecord(); WsdlRepository.Expect(x => x.GetUserTickets("1", (ticketCategory)1, new AccountTicketSorting() { field = AccountTicketSortingFields.DateCreated, value = AccountTicketSortingValues.Desc }, 0, 20, out total)).Return(new UserTicket[] { ticket, ticket, ticket, ticket }).OutRef("1000").IgnoreArguments(); WsdlRepository.Replay(); Dispatcher.Invoke(() => { userprofileWindow.BackCommand.Execute(""); }); var prevModel = MyRegionManager.CurrentViewModelInRegion(RegionNames.UserProfileContentRegion); Thread.Sleep(1000); Assert.AreEqual(4, ((UserTicketsViewModel)prevModel).Tickets.Count); Assert.IsTrue(((UserTicketsViewModel)prevModel).AllPages > 0); Assert.AreEqual(2, userTicketsViewModel.TicketsStartPage); Assert.AreEqual(3, userTicketsViewModel.SelectedType.Id); userProfileMenuViewModel.LogoutCommand.Execute(""); Thread.Sleep(1000); WsdlRepository.BackToRecord(); Dispatcher.Invoke(() => { Window.Close(); }); }
/// <summary> /// Probabilistic prime test based on Rabin-Miller's test /// </summary> /// <param name="bi" type="BigInteger.BigInteger"> /// <para> /// The number to test. /// </para> /// </param> /// <param name="confidence" type="int"> /// <para> /// The number of chosen bases. The test has at least a /// 1/4^confidence chance of falsely returning True. /// </para> /// </param> /// <returns> /// <para> /// True if "this" is a strong pseudoprime to randomly chosen bases. /// </para> /// <para> /// False if "this" is definitely NOT prime. /// </para> /// </returns> public static bool RabinMillerTest(BigInteger bi, ConfidenceFactor confidence) { int Rounds = GetSPPRounds(bi, confidence); // calculate values of s and t BigInteger p_sub1 = bi - 1; int s = p_sub1.LowestSetBit(); BigInteger t = p_sub1 >> s; int bits = bi.BitCount(); BigInteger a = null; BigInteger.ModulusRing mr = new BigInteger.ModulusRing(bi); // Applying optimization from HAC section 4.50 (base == 2) // not a really random base but an interesting (and speedy) one BigInteger b = mr.Pow(2, t); if (b != 1) { bool result = false; for (int j = 0; j < s; j++) { if (b == p_sub1) { // a^((2^j)*t) mod p = p-1 for some 0 <= j <= s-1 result = true; break; } b = b * b % bi; } if (!result) { return(false); } } // still here ? start at round 1 (round 0 was a == 2) for (int round = 1; round < Rounds; round++) { while (true) { // generate a < n a = BigInteger.GenerateRandom(bits); // make sure "a" is not 0 (and not 2 as we have already tested that) if (a > 2 && a < bi) { break; } } if (a.GCD(bi) != 1) { return(false); } b = mr.Pow(a, t); if (b == 1) { continue; // a^t mod p = 1 } bool result = false; for (int j = 0; j < s; j++) { if (b == p_sub1) { // a^((2^j)*t) mod p = p-1 for some 0 <= j <= s-1 result = true; break; } b = b * b % bi; } if (!result) { return(false); } } return(true); }
public void MultyTicketWsAndPrintTest() { IoCContainer.Kernel.Unbind <IConfidenceFactor>(); IoCContainer.Kernel.Bind <IConfidenceFactor>().ToConstant <IConfidenceFactor>(ConfidenceFactor.Object).InSingletonScope(); ConfidenceFactor.Setup(x => x.CalculateFactor(It.IsAny <Ticket>())).Returns(1000000); IoCContainer.Kernel.Unbind <IStationRepository>(); IoCContainer.Kernel.Unbind <IChangeTracker>(); IoCContainer.Kernel.Bind <IChangeTracker>().To <ChangeTracker>().InSingletonScope(); var ChangeTracker = IoCContainer.Kernel.Get <IChangeTracker>(); IoCContainer.Kernel.Unbind <ITicketHandler>(); IoCContainer.Kernel.Bind <ITicketHandler>().To <TicketHandler>().InSingletonScope(); var TicketHandler = IoCContainer.Kernel.Get <ITicketHandler>(); BusinessPropsHelper.Setup(x => x.GetNextTransactionId()).Returns("123"); IoCContainer.Kernel.Unbind <IDataBinding>(); var DataBinding = new DataBinding(); IoCContainer.Kernel.Bind <IDataBinding>().ToConstant <IDataBinding>(DataBinding).InSingletonScope(); var stationRepository = new StationRepository(); IoCContainer.Kernel.Bind <IStationRepository>().ToConstant <IStationRepository>(stationRepository).InSingletonScope(); stationRepository.MaxOdd = 1000; stationRepository.MaxCombination = 1000; stationRepository.MaxStakeSystemBet = 1000; stationRepository.MaxStakeCombi = 1000; stationRepository.MaxSystemBet = 1000; stationRepository.MaxWinSystemBet = 10000; stationRepository.IsReady = true; stationRepository.BonusFromOdd = 3.0m; long[] tipLock; long[] tournamentlock; WsdlRepository.Setup(x => x.SaveTicket(It.IsAny <string>(), It.IsAny <uid>(), It.IsAny <TicketWS>(), It.IsAny <bool>(), It.IsAny <string>(), out tipLock, out tournamentlock)).Returns("1"); TicketHandler.TicketsInBasket.Add(new Ticket()); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd { OutcomeId = 1, OddId = { Value = 1 }, OddView = new TestOddVw() { Value = 1 }, BetDomain = new TestBetDomain { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 1, Match = new TestMatchLn { MatchId = 1, Code = { Value = 1 }, MatchView = new TestMatchVw { LineObject = new MatchLn() } } }, Value = { Value = 2.80M } })); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd { OutcomeId = 2, OddId = { Value = 2 }, OddView = new TestOddVw() { Value = 2 }, BetDomain = new TestBetDomain { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 2, Match = new TestMatchLn { MatchId = 2, Code = { Value = 2 }, MatchView = new TestMatchVw { LineObject = new MatchLn() } } }, Value = { Value = 2.10M } })); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd { OutcomeId = 3, OddId = { Value = 3 }, OddView = new TestOddVw() { Value = 3 }, BetDomain = new TestBetDomain { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 3, Match = new TestMatchLn { MatchId = 3, Code = { Value = 3 }, MatchView = new TestMatchVw { LineObject = new MatchLn() } } }, Value = { Value = 3.30M } })); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd { OutcomeId = 4, OddId = { Value = 4 }, OddView = new TestOddVw() { Value = 4 }, BetDomain = new TestBetDomain { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 4, Match = new TestMatchLn { MatchId = 4, Code = { Value = 4 }, MatchView = new TestMatchVw { LineObject = new MatchLn() } } }, Value = { Value = 2.70M } })); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd { OutcomeId = 5, OddId = { Value = 5 }, OddView = new TestOddVw() { Value = 5 }, BetDomain = new TestBetDomain { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 5, Match = new TestMatchLn { MatchId = 5, Code = { Value = 5 }, MatchView = new TestMatchVw { LineObject = new MatchLn() } } }, Value = { Value = 3.10M } })); TicketHandler.TicketsInBasket[0].Stake = 10; stationRepository.BonusRangeList.Add(new BonusRangeWS { tipSize = 1, bonus = 5 }); stationRepository.BonusRangeList.Add(new BonusRangeWS { tipSize = 2, bonus = 10 }); ChangeTracker.CurrentUser = new LoggedInUser(0, "", 100, 10, 10, 10); TicketHandler.TicketState = TicketStates.Multy; TicketHandler.TicketsInBasket[0].Stake = 10; TicketHandler.UpdateTicket(); Assert.AreEqual(10m, TicketHandler.Stake); Assert.AreEqual(1786.52628000000m, TicketHandler.CurrentTicketPossibleWin); Assert.AreEqual(10m, TicketHandler.BonusPercentage); Assert.AreEqual(162.41148000000m, TicketHandler.BonusValue); var ticketActions = new TicketActions(); TicketWS ticket = ticketActions.CreateNewTicketWS(TicketHandler.TicketsInBasket[0]); ticketActions.SaveTicket(ref ticket, ChangeTracker.CurrentUser); Assert.AreEqual(5, ticket.bets[0].bankTips.Length); Assert.AreEqual(10m, ticket.stake); Assert.AreEqual(1.1m, ticket.superBonus); stationRepository.UsePrinter = true; Repository.Expect(x => x.GetOddBySvrId(It.IsAny <long>())).Returns(new OddVw(new OddLn { NameTag = { Value = "test" } })); TranslationProvider.Object.PrintingLanguage = "EN"; TranslationProvider.Setup(x => x.Translate(It.IsAny <MultistringTag>())).Returns("{0}"); PrinterHandler printerHandler = new PrinterHandler(); var xml = printerHandler.CreateTicketXmlForPrinting(ticket, false, null); var stringxml = xml.ToString(); if (CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator == ".") { Assert.IsTrue(stringxml.Contains("162.4")); } if (CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator == ",") { Assert.IsTrue(stringxml.Contains("162,4")); } }
public void CreateTicketWsTest() { DatabaseManager.EnsureDatabase(false); IoCContainer.Kernel.Unbind <IConfidenceFactor>(); IoCContainer.Kernel.Bind <IConfidenceFactor>().ToConstant <IConfidenceFactor>(ConfidenceFactor.Object).InSingletonScope(); ConfidenceFactor.Expect(x => x.CalculateFactor(It.IsAny <Ticket>())).Returns(1000000); IoCContainer.Kernel.Rebind <IChangeTracker>().To <ChangeTracker>().InSingletonScope(); var ChangeTracker = IoCContainer.Kernel.Get <IChangeTracker>(); IoCContainer.Kernel.Rebind <ITicketHandler>().To <TicketHandler>().InSingletonScope(); var TicketHandler = IoCContainer.Kernel.Get <ITicketHandler>(); BusinessPropsHelper.Expect(x => x.GetNextTransactionId()).Returns("123"); var DataBinding = new DataBinding(); IoCContainer.Kernel.Rebind <IDataBinding>().ToConstant <IDataBinding>(DataBinding).InSingletonScope(); var stationRepository = new StationRepository(); IoCContainer.Kernel.Rebind <IStationRepository>().ToConstant <IStationRepository>(stationRepository).InSingletonScope(); stationRepository.MaxOdd = 1000; stationRepository.MaxCombination = 1000; stationRepository.MaxStakeSystemBet = 1000; stationRepository.MaxSystemBet = 1000; stationRepository.MaxWinSystemBet = 10000; stationRepository.IsReady = true; stationRepository.BonusFromOdd = 3.0m; TicketHandler.TicketsInBasket.Add(new Ticket()); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd() { OutcomeId = 1, OddId = { Value = 1 }, OddView = new TestOddVw() { Value = 1 }, BetDomain = new TestBetDomain() { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 1, Match = new TestMatchLn() { MatchId = 1, MatchView = new TestMatchVw() { LineObject = new MatchLn() } } }, Value = { Value = 2.80M } })); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd() { OutcomeId = 2, OddId = { Value = 2 }, OddView = new TestOddVw() { Value = 2 }, BetDomain = new TestBetDomain() { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 2, Match = new TestMatchLn() { MatchId = 2, MatchView = new TestMatchVw() { LineObject = new MatchLn() } } }, Value = { Value = 2.10M } })); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd() { OutcomeId = 3, OddId = { Value = 3 }, OddView = new TestOddVw() { Value = 3 }, BetDomain = new TestBetDomain() { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 3, Match = new TestMatchLn() { MatchId = 3, MatchView = new TestMatchVw() { LineObject = new MatchLn() } } }, Value = { Value = 3.30M } })); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd() { OutcomeId = 4, OddId = { Value = 4 }, OddView = new TestOddVw() { Value = 4 }, BetDomain = new TestBetDomain() { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 4, Match = new TestMatchLn() { MatchId = 4, MatchView = new TestMatchVw() { LineObject = new MatchLn() } } }, Value = { Value = 2.70M } })); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd() { OutcomeId = 5, OddId = { Value = 5 }, OddView = new TestOddVw() { Value = 5 }, BetDomain = new TestBetDomain() { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 5, Match = new TestMatchLn() { MatchId = 5, MatchView = new TestMatchVw() { LineObject = new MatchLn() } } }, Value = { Value = 3.10M } })); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd() { OutcomeId = 6, OddId = { Value = 6 }, OddView = new TestOddVw() { Value = 6 }, BetDomain = new TestBetDomain() { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 6, Match = new TestMatchLn() { MatchId = 6 } }, Value = { Value = 1.80M } }) { IsBank = true }); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd() { OutcomeId = 7, OddId = { Value = 7 }, OddView = new TestOddVw() { Value = 7 }, BetDomain = new TestBetDomain() { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 7, Match = new TestMatchLn() { MatchId = 7 } }, Value = { Value = 1.70M } }) { IsBank = true }); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd() { OutcomeId = 8, OddId = { Value = 8 }, OddView = new TestOddVw() { Value = 8 }, BetDomain = new TestBetDomain() { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 8, Match = new TestMatchLn() { MatchId = 8 } }, Value = { Value = 3.20M } }) { IsBank = true }); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd() { OutcomeId = 9, OddId = { Value = 9 }, OddView = new TestOddVw() { Value = 9 }, BetDomain = new TestBetDomain() { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 9, Match = new TestMatchLn() { MatchId = 8 } }, Value = { Value = 2.10M } }) { IsBank = true }); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd() { OutcomeId = 10, OddId = { Value = 10 }, OddView = new TestOddVw() { Value = 10 }, BetDomain = new TestBetDomain() { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 10, Match = new TestMatchLn() { MatchId = 9 } }, Value = { Value = 5.60M } }) { IsBank = true }); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd() { OutcomeId = 11, OddId = { Value = 11 }, OddView = new TestOddVw() { Value = 11 }, BetDomain = new TestBetDomain() { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 11, Match = new TestMatchLn() { MatchId = 9 } }, Value = { Value = 3.70M } }) { IsBank = true }); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd() { OutcomeId = 12, OddId = { Value = 12 }, OddView = new TestOddVw() { Value = 12 }, BetDomain = new TestBetDomain() { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 12, Match = new TestMatchLn() { MatchId = 9 } }, Value = { Value = 1.55M } }) { IsBank = true }); TicketHandler.TicketsInBasket[0].Stake = 10; stationRepository.BonusRangeList.Add(new BonusRangeWS() { tipSize = 1, bonus = 5 }); stationRepository.BonusRangeList.Add(new BonusRangeWS() { tipSize = 2, bonus = 10 }); ChangeTracker.CurrentUser = new LoggedInUser(0, "", 100, 10, 10, 10); TicketHandler.TicketState = TicketStates.System; TicketHandler.TicketsInBasket[0].Stake = 10; TicketHandler.TicketsInBasket[0].SystemX = 2; TicketHandler.UpdateTicket(); Assert.AreEqual(10m, TicketHandler.Stake); Assert.AreEqual(783.9422976000000m, TicketHandler.CurrentTicketPossibleWin); Assert.AreEqual(10m, TicketHandler.BonusPercentage); Assert.AreEqual(71.2674816000000m, TicketHandler.BonusValue); var ticketActions = new TicketActions(); TicketWS ticket = ticketActions.CreateNewTicketWS(TicketHandler.TicketsInBasket[0]); ticketActions.SaveTicket(ref ticket, ChangeTracker.CurrentUser); Assert.AreEqual(10m, ticket.stake); Assert.AreEqual(1.1m, ticket.superBonus); }
public static bool SmallPrimeSppTest (BigInteger bi, ConfidenceFactor confidence) { int Rounds = GetSPPRounds (bi, confidence); // calculate values of s and t BigInteger p_sub1 = bi - 1; int s = p_sub1.LowestSetBit (); BigInteger t = p_sub1 >> s; BigInteger.ModulusRing mr = new BigInteger.ModulusRing (bi); for (int round = 0; round < Rounds; round++) { BigInteger b = mr.Pow (BigInteger.smallPrimes [round], t); if (b == 1) continue; // a^t mod p = 1 bool result = false; for (int j = 0; j < s; j++) { if (b == p_sub1) { // a^((2^j)*t) mod p = p-1 for some 0 <= j <= s-1 result = true; break; } b = (b * b) % bi; } if (result == false) return false; } return true; }
public static bool SmallPrimeSppTest(Mono.Math.BigInteger bi, ConfidenceFactor confidence) { throw new NotImplementedException(); }
/// <summary> /// Probabilistic prime test based on Rabin-Miller's test /// </summary> /// <param name="bi" type="BigInteger.BigInteger"> /// <para> /// The number to test. /// </para> /// </param> /// <param name="confidence" type="int"> /// <para> /// The number of chosen bases. The test has at least a /// 1/4^confidence chance of falsely returning True. /// </para> /// </param> /// <returns> /// <para> /// True if "this" is a strong pseudoprime to randomly chosen bases. /// </para> /// <para> /// False if "this" is definitely NOT prime. /// </para> /// </returns> public static bool RabinMillerTest (BigInteger bi, ConfidenceFactor confidence) { int Rounds = GetSPPRounds (bi, confidence); // calculate values of s and t BigInteger p_sub1 = bi - 1; int s = p_sub1.LowestSetBit (); BigInteger t = p_sub1 >> s; int bits = bi.BitCount (); BigInteger a = null; BigInteger.ModulusRing mr = new BigInteger.ModulusRing (bi); // Applying optimization from HAC section 4.50 (base == 2) // not a really random base but an interesting (and speedy) one BigInteger b = mr.Pow (2, t); if (b != 1) { bool result = false; for (int j=0; j < s; j++) { if (b == p_sub1) { // a^((2^j)*t) mod p = p-1 for some 0 <= j <= s-1 result = true; break; } b = (b * b) % bi; } if (!result) return false; } // still here ? start at round 1 (round 0 was a == 2) for (int round = 1; round < Rounds; round++) { while (true) { // generate a < n a = BigInteger.GenerateRandom (bits); // make sure "a" is not 0 (and not 2 as we have already tested that) if (a > 2 && a < bi) break; } if (a.GCD (bi) != 1) return false; b = mr.Pow (a, t); if (b == 1) continue; // a^t mod p = 1 bool result = false; for (int j = 0; j < s; j++) { if (b == p_sub1) { // a^((2^j)*t) mod p = p-1 for some 0 <= j <= s-1 result = true; break; } b = (b * b) % bi; } if (!result) return false; } return true; }
public static BigInteger genPseudoPrime(int bits, ConfidenceFactor cf) { SequentialSearchPrimeGeneratorBase sspg = new SequentialSearchPrimeGeneratorBase(); sspg.Confidence = cf; return sspg.GenerateNewPrime(bits); }
public static bool Test(Mono.Math.BigInteger n, ConfidenceFactor confidence) { throw new NotImplementedException(); }
private static int GetSPPRounds(BigInteger bi, ConfidenceFactor confidence) { int num = bi.BitCount(); int num2; if (num <= 100) { num2 = 27; } else if (num <= 150) { num2 = 18; } else if (num <= 200) { num2 = 15; } else if (num <= 250) { num2 = 12; } else if (num <= 300) { num2 = 9; } else if (num <= 350) { num2 = 8; } else if (num <= 400) { num2 = 7; } else if (num <= 500) { num2 = 6; } else if (num <= 600) { num2 = 5; } else if (num <= 800) { num2 = 4; } else if (num <= 1250) { num2 = 3; } else { num2 = 2; } switch (confidence) { case ConfidenceFactor.ExtraLow: num2 >>= 2; return((num2 == 0) ? 1 : num2); case ConfidenceFactor.Low: num2 >>= 1; return((num2 == 0) ? 1 : num2); case ConfidenceFactor.Medium: return(num2); case ConfidenceFactor.High: return(num2 << 1); case ConfidenceFactor.ExtraHigh: return(num2 << 2); case ConfidenceFactor.Provable: throw new Exception("The Rabin-Miller test can not be executed in a way such that its results are provable"); default: throw new ArgumentOutOfRangeException("confidence"); } }
private static int GetSPPRounds(BigInteger bi, ConfidenceFactor confidence) { int bc = bi.bitCount(); int Rounds; // Data from HAC, 4.49 if (bc <= 100) { Rounds = 27; } else if (bc <= 150) { Rounds = 18; } else if (bc <= 200) { Rounds = 15; } else if (bc <= 250) { Rounds = 12; } else if (bc <= 300) { Rounds = 9; } else if (bc <= 350) { Rounds = 8; } else if (bc <= 400) { Rounds = 7; } else if (bc <= 500) { Rounds = 6; } else if (bc <= 600) { Rounds = 5; } else if (bc <= 800) { Rounds = 4; } else if (bc <= 1250) { Rounds = 3; } else { Rounds = 2; } switch (confidence) { case ConfidenceFactor.ExtraLow: Rounds >>= 2; return(Rounds != 0 ? Rounds : 1); case ConfidenceFactor.Low: Rounds >>= 1; return(Rounds != 0 ? Rounds : 1); case ConfidenceFactor.Medium: return(Rounds); case ConfidenceFactor.High: return(Rounds <<= 1); case ConfidenceFactor.ExtraHigh: return(Rounds <<= 2); case ConfidenceFactor.Provable: throw new Exception("The Rabin-Miller test can not be executed in a way such that its results are provable"); default: throw new ArgumentOutOfRangeException("confidence"); } }
public void CreateTicketWsTest() { IoCContainer.Kernel.Unbind <IConfidenceFactor>(); IoCContainer.Kernel.Bind <IConfidenceFactor>().ToConstant <IConfidenceFactor>(ConfidenceFactor.Object).InSingletonScope(); ConfidenceFactor.Expect(x => x.CalculateFactor(It.IsAny <Ticket>())).Returns(1000000); IoCContainer.Kernel.Unbind <IStationRepository>(); IoCContainer.Kernel.Unbind <IChangeTracker>(); var ChangeTracker = new ChangeTracker(); IoCContainer.Kernel.Bind <IChangeTracker>().ToConstant <IChangeTracker>(ChangeTracker).InSingletonScope(); IoCContainer.Kernel.Unbind <IDataBinding>(); var DataBinding = new DataBinding(); IoCContainer.Kernel.Bind <IDataBinding>().ToConstant <IDataBinding>(DataBinding).InSingletonScope(); IoCContainer.Kernel.Unbind <ITicketHandler>(); var TicketHandler = new TicketHandler(); IoCContainer.Kernel.Bind <ITicketHandler>().ToConstant <ITicketHandler>(TicketHandler).InSingletonScope(); BusinessPropsHelper.Setup(x => x.GetNextTransactionId()).Returns("123"); var stationRepository = new StationRepository(); IoCContainer.Kernel.Bind <IStationRepository>().ToConstant <IStationRepository>(stationRepository).InSingletonScope(); stationRepository.MaxOdd = 1000; stationRepository.MaxCombination = 1000; stationRepository.MaxStakeSystemBet = 1000; stationRepository.MaxStakeCombi = 1000; stationRepository.MaxSystemBet = 1000; stationRepository.MaxWinSystemBet = 10000; stationRepository.MaxWinSingleBet = 10000; stationRepository.IsReady = true; stationRepository.BonusFromOdd = 1.30m; long[] tipLock; long[] tournamentlock; TicketHandler.TicketsInBasket.Add(new Ticket()); WsdlRepository.Setup(x => x.SaveTicket(It.IsAny <string>(), It.IsAny <uid>(), It.IsAny <TicketWS>(), It.IsAny <bool>(), It.IsAny <string>(), out tipLock, out tournamentlock)).Returns("1"); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd { OutcomeId = 1, OddId = { Value = 1 }, OddView = new TestOddVw() { Value = 1 }, BetDomain = new TestBetDomain { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 1, Match = new TestMatchLn { MatchId = 1, Code = { Value = 1 }, MatchView = new TestMatchVw { LineObject = new MatchLn() } } }, Value = { Value = 1.14M } }) { IsBank = true }); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd { OutcomeId = 2, OddId = { Value = 2 }, OddView = new TestOddVw() { Value = 2 }, BetDomain = new TestBetDomain { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 2, Match = new TestMatchLn { MatchId = 2, Code = { Value = 2 }, MatchView = new TestMatchVw { LineObject = new MatchLn() } } }, Value = { Value = 1.40M } })); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd { OutcomeId = 3, OddId = { Value = 3 }, OddView = new TestOddVw() { Value = 3 }, BetDomain = new TestBetDomain { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 3, Match = new TestMatchLn { MatchId = 3, Code = { Value = 3 }, MatchView = new TestMatchVw { LineObject = new MatchLn() } } }, Value = { Value = 1.50M } })); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd { OutcomeId = 4, OddId = { Value = 4 }, OddView = new TestOddVw() { Value = 4 }, BetDomain = new TestBetDomain { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 4, Match = new TestMatchLn { MatchId = 4, Code = { Value = 4 }, MatchView = new TestMatchVw { LineObject = new MatchLn() } } }, Value = { Value = 1.25M } })); stationRepository.BonusRangeList.Add(new BonusRangeWS { tipSize = 1, bonus = 3 }); TicketHandler.TicketsInBasket[0].Stake = 10; ChangeTracker.CurrentUser = new LoggedInUser(0, "", 100, 10, 10, 10); TicketHandler.TicketState = TicketStates.System; TicketHandler.TicketsInBasket[0].SystemX = 2; TicketHandler.TicketsInBasket[0].Stake = 5; TicketWS newticket = new TicketWS(); TicketActions.Setup(x => x.CreateNewTicketWS(It.IsAny <Ticket>())).Returns(newticket); TicketHandler.UpdateTicket(); Assert.AreEqual(2, TicketHandler.TicketsInBasket[0].SystemX); Assert.AreEqual(3, TicketHandler.TicketsInBasket[0].SystemY); Assert.AreEqual(5m, TicketHandler.Stake); Assert.AreEqual(11.203824999999999999999999999m, TicketHandler.CurrentTicketPossibleWin); var ticketActions = new TicketActions(); TicketWS ticket = ticketActions.CreateNewTicketWS(TicketHandler.TicketsInBasket[0]); ticketActions.SaveTicket(ref ticket, ChangeTracker.CurrentUser); Assert.AreEqual(1.03m, ticket.superBonus); Assert.AreEqual(5m, ticket.stake); Assert.AreEqual(2.17m, ticket.bets[0].maxOdd); Assert.AreEqual(11.203824999999999999999999999m, TicketHandler.CurrentTicketPossibleWin); Assert.AreEqual(11.203824999999999999999999999m, ticket.bets[0].maxWin); Assert.AreEqual(3m, TicketHandler.BonusPercentage); if (CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator == ".") { Assert.AreEqual("0.32", SportBetting.WPF.Prism.OldCode.PrinterHandler.Decimal2String(TicketHandler.BonusValue, 2)); } if (CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator == ",") { Assert.AreEqual("0,32", SportBetting.WPF.Prism.OldCode.PrinterHandler.Decimal2String(TicketHandler.BonusValue, 2)); } }
public static bool Test (BigInteger n, ConfidenceFactor confidence) { // Rabin-Miller fails with smaller primes (at least with our BigInteger code) if (n.BitCount () < 33) return SmallPrimeSppTest (n, confidence); else return RabinMillerTest (n, confidence); }
public void PrintdublicateTest() { IoCContainer.Kernel.Rebind <IStationRepository>().To <StationRepository>().InSingletonScope(); var rep = IoCContainer.Kernel.Get <IStationRepository>(); //rep.Init(); rep.UsePrinter = true; IoCContainer.Kernel.Unbind <IConfidenceFactor>(); IoCContainer.Kernel.Bind <IConfidenceFactor>().ToConstant <IConfidenceFactor>(ConfidenceFactor.Object).InSingletonScope(); ConfidenceFactor.Setup(x => x.CalculateFactor(It.IsAny <Ticket>())).Returns(1000000); IoCContainer.Kernel.Unbind <IStationRepository>(); IoCContainer.Kernel.Unbind <IChangeTracker>(); var ChangeTracker = new ChangeTracker(); IoCContainer.Kernel.Bind <IChangeTracker>().ToConstant <IChangeTracker>(ChangeTracker).InSingletonScope(); IoCContainer.Kernel.Unbind <IDataBinding>(); var DataBinding = new DataBinding(); IoCContainer.Kernel.Bind <IDataBinding>().ToConstant <IDataBinding>(DataBinding).InSingletonScope(); IoCContainer.Kernel.Unbind <ITicketHandler>(); var TicketHandler = new TicketHandler(); IoCContainer.Kernel.Bind <ITicketHandler>().ToConstant <ITicketHandler>(TicketHandler).InSingletonScope(); BusinessPropsHelper.Setup(x => x.GetNextTransactionId()).Returns("123"); var stationRepository = new StationRepository(); IoCContainer.Kernel.Bind <IStationRepository>().ToConstant <IStationRepository>(stationRepository).InSingletonScope(); stationRepository.MaxOdd = 1000; stationRepository.MaxCombination = 1000; stationRepository.MaxStakeSystemBet = 1000; stationRepository.MaxStakeCombi = 1000; stationRepository.MaxSystemBet = 1000; stationRepository.MaxWinSystemBet = 10000; stationRepository.MaxWinSingleBet = 10000; stationRepository.IsReady = true; stationRepository.BonusFromOdd = 1.30m; stationRepository.UsePrinter = true; StationSettings.Setup(x => x.UsePrinter).Returns(true); long[] tipLock; long[] tournamentlock; TicketHandler.TicketsInBasket.Add(new Ticket()); WsdlRepository.Setup(x => x.SaveTicket(It.IsAny <string>(), It.IsAny <uid>(), It.IsAny <TicketWS>(), It.IsAny <bool>(), It.IsAny <string>(), out tipLock, out tournamentlock)).Returns("1"); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd { OutcomeId = 1, OddId = { Value = 1 }, OddView = new TestOddVw() { Value = 1 }, BetDomain = new TestBetDomain { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 1, Match = new TestMatchLn { MatchId = 1, Code = { Value = 1 }, MatchView = new TestMatchVw { LineObject = new MatchLn() } } }, Value = { Value = 1.14M } }) { IsBank = true }); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd { OutcomeId = 2, OddId = { Value = 2 }, OddView = new TestOddVw() { Value = 2 }, BetDomain = new TestBetDomain { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 2, Match = new TestMatchLn { MatchId = 2, Code = { Value = 2 }, MatchView = new TestMatchVw { LineObject = new MatchLn() } } }, Value = { Value = 1.40M } })); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd { OutcomeId = 3, OddId = { Value = 3 }, OddView = new TestOddVw() { Value = 3 }, BetDomain = new TestBetDomain { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 3, Match = new TestMatchLn { MatchId = 3, Code = { Value = 3 }, MatchView = new TestMatchVw { LineObject = new MatchLn() } } }, Value = { Value = 1.50M } })); TicketHandler.TicketsInBasket[0].TipItems.Add(new TipItemVw(new TestOdd { OutcomeId = 4, OddId = { Value = 4 }, OddView = new TestOddVw() { Value = 4 }, BetDomain = new TestBetDomain { BetDomainNumber = new ObservableProperty <int>(new BetDomainLn(), new ObservablePropertyList(), "test"), BetDomainId = 4, Match = new TestMatchLn { MatchId = 4, Code = { Value = 4 }, MatchView = new TestMatchVw { LineObject = new MatchLn() } } }, Value = { Value = 1.25M } })); stationRepository.BonusRangeList.Add(new BonusRangeWS { tipSize = 1, bonus = 3 }); TicketHandler.TicketsInBasket[0].Stake = 10; ChangeTracker.CurrentUser = new LoggedInUser(0, "", 100, 10, 10, 10); TicketHandler.TicketState = TicketStates.System; TicketHandler.TicketsInBasket[0].SystemX = 2; TicketHandler.TicketsInBasket[0].Stake = 5; TicketHandler.UpdateTicket(); var ticketActions = new TicketActions(); TicketWS ticket = ticketActions.CreateNewTicketWS(TicketHandler.TicketsInBasket[0]); ticketActions.SaveTicket(ref ticket, ChangeTracker.CurrentUser); var PrinterHandler = new PrinterHandler(); stationRepository.UsePrinter = true; PrinterHandler.PrintTicket(ticket, false); Assert.AreEqual(PrinterHandler.NotPrintedItemsCount, 1); PrinterHandler.PrintTicket(ticket, false); Assert.AreEqual(PrinterHandler.NotPrintedItemsCount, 2); PrinterHandler.DeleteAllPrinterObjects(); Assert.AreEqual(0, PrinterHandler.NotPrintedItemsCount); }