예제 #1
0
        public void When_Unusual_Customers_Exist_Then_Customer_Count_Is_Correct()
        {
            var highWinRate = new HighWinRate(new List <CustomerModel>
            {
                new CustomerModel {
                    Id = 1, Fullname = string.Empty, AverageBet = 100
                },
                new CustomerModel {
                    Id = 2, Fullname = string.Empty, AverageBet = 50
                }
            },
                                              new List <SettledBetModel>
            {
                new SettledBetModel  {
                    Id = 3, CustomerId = 1, CustomerName = string.Empty, EventId = 5, ParticipantId = 8, Stake = 50, Win = 200
                },
                new SettledBetModel {
                    Id = 3, CustomerId = 2, CustomerName = string.Empty, EventId = 5, ParticipantId = 8, Stake = 50, Win = 400
                },
                new SettledBetModel {
                    Id = 5, CustomerId = 2, CustomerName = string.Empty, EventId = 5, ParticipantId = 8, Stake = 50, Win = 0
                }
            }
                                              );

            var calculator = new CustomerCalculatorService();
            var result     = calculator.DoCalculation(highWinRate);

            Assert.AreEqual(result.Count, 1, "Incorrect number of customers with high win rate returned");
        }
예제 #2
0
        public void Test_HighWinRateForOneCustomer_Success()
        {
            var riskMetrics = new HighWinRate(mConfig.HighWinRateThreshold);

            Bet[] bets =
            {
                new Bet {
                    Customer = 1, Stake = 1, Win = 1
                },
                new Bet {
                    Customer = 1, Stake = 1, Win = 2
                },
                new Bet {
                    Customer = 1, Stake = 1, Win = 3
                },
                new Bet {
                    Customer = 1, Stake = 1, Win = 0
                },
                new Bet {
                    Customer = 1, Stake = 1, Win = 10
                },
                new Bet {
                    Customer = 1, Stake = 1, Win = 0
                },
                new Bet {
                    Customer = 2, Stake = 1, Win = 0
                },
                new Bet {
                    Customer = 2, Stake = 1, Win = 0
                },
                new Bet {
                    Customer = 2, Stake = 1, Win = 1
                },
                new Bet {
                    Customer = 3, Stake = 1, Win = 1
                }
            };
            var results = riskMetrics.Evaluate(bets, new Bet[] {});

            Assert.AreEqual(1, results.Count(), "Only customer 1 has a high win rate");
            Assert.IsTrue(results.Single().StartsWith($"UNUSUAL: Customer {bets[0].Customer} has a win rate of "));
        }
        public List <CustomerModel> GetUnusualCustomers(IEnumerable <CustomerModel> customers, IEnumerable <SettledBetModel> settledBets)
        {
            var highWinRate = new HighWinRate(customers, settledBets);

            return(_calculator.DoCalculation(highWinRate));
        }