public VendorValue CalculateCombination(Dictionary <Match, string> matchOutcomes) { IEnumerable <Vendor> vendors = GetVendorsFromMatches(matchOutcomes.Keys); VendorValue highest = new VendorValue(); foreach (var currVendor in vendors) { double combRes = 1; foreach (var item in matchOutcomes) { Match currMatch = item.Key; string currOutcome = item.Value; double oddsForOutcome = currMatch.GetOddsByVendor(currVendor).GetOddsByStringTag(currOutcome); combRes = combRes * oddsForOutcome; } if (combRes > highest.Value) { highest.Vendor = currVendor; highest.Value = Math.Round(combRes, 2); } } return(highest); }
public void TestMethod1() { Vendor vendorA = new Vendor() { Name = "VENDOR-A" }; Vendor vendorB = new Vendor() { Name = "VENDOR-B" }; Odds o1 = new Odds() { Odds1 = 2.1, OddsX = 2.2, Odds2 = 2.3, Vendor = vendorA }; Odds o2 = new Odds() { Odds1 = 3.1, OddsX = 3.2, Odds2 = 3.3, Vendor = vendorB }; List <Odds> odds1 = new List <Odds>(); odds1.Add(o1); odds1.Add(o2); Odds o3 = new Odds() { Odds1 = 2.1, OddsX = 2.2, Odds2 = 2.3, Vendor = vendorA }; Odds o4 = new Odds() { Odds1 = 3.1, OddsX = 3.2, Odds2 = 3.3, Vendor = vendorB }; List <Odds> odds2 = new List <Odds>(); odds2.Add(o3); odds2.Add(o4); Match m1 = new Match() { Odds = odds1 }; Match m2 = new Match() { Odds = odds2 }; Dictionary <Match, string> matchOutcomes = new Dictionary <Match, string>(); matchOutcomes.Add(m1, "1"); matchOutcomes.Add(m2, "x"); CombinationCalculator combCalc = new CombinationCalculator(); VendorValue res = combCalc.CalculateCombination(matchOutcomes); Assert.AreEqual("VENDOR-B", res.Vendor.Name); }