private static void SearchFork() { var parsers = new List<Tuple<string, IParser>> { new Tuple<string, IParser>("Marathon", new MarathonParser(new List<GameParser>{ new FootballParser() }, new MarketsProviderManager(new List<IMarketsProvider> { new LocalMarketsProvider() }))), new Tuple<string, IParser>("Zenit", new ZenitBetParser(new WebPageProvider(new ZenitDomainProvider()), new List<IGameParser> { new FootballGameParser() })), }; var activeParsers = SelectParserMenu(parsers); var grouper = new GameGrouper(); var parserManager = new ParserManager(new StubParserProvider(activeParsers), grouper); var forkSearcherManager = new ForkSearcherManager(new ForkSearcher(new TextRulesProvider(File.ReadAllText(Settings.Default.PathToRules)))); var core = new Core(parserManager, forkSearcherManager); core.OnReceivedMainForks += ViewForks; core.Run(new List<SportType> { "Футбол" }); // .Where(x => x.ProfitRate > 1) // .OrderBy(x => x.ProfitRate) // .Reverse() // .ToList(); //if (forks.Count == 0) //{ // Console.WriteLine("The forks not found"); //} //else //{ // for (var i = 0; i < forks.Count; i++) // { // var fork = forks[i]; // const int BetToFirstOne = 100; // var betTosecondOne = BetToFirstOne * fork.CoefsOfFirstBets.ElementAt(0).Value.Get() // / fork.CoefsOfSecondBets.ElementAt(0).Value.Get(); // decimal sum; // Console.WriteLine($"{i + 1}. {fork.SportType} - Profit = {fork.ProfitRate}"); // if (fork.CoefsOfFirstBets.Count < 2 && (fork.CoefsOfSecondBets.Count < 2)) // { // Console.WriteLine( // $"Ставка в 1-ой конторе = {BetToFirstOne}; " + $"Во 2-ой конторе = {betTosecondOne: #0.###}"); // sum = (betTosecondOne + BetToFirstOne) / 100 * fork.ProfitRate; // } // else if ((fork.CoefsOfFirstBets.Count > 1) && (fork.CoefsOfSecondBets.Count < 2)) // { // var betTofirstTwo = BetToFirstOne * fork.CoefsOfFirstBets.ElementAt(0).Value.Get() // / fork.CoefsOfFirstBets.ElementAt(1).Value.Get(); // Console.WriteLine( // $"Cтавка в 1-ой конторе на 1-ое событие = {BetToFirstOne}, " // + $"на 2-ое событие = {betTofirstTwo: #0.###}; " // + $"Во 2-ой конторе = {betTosecondOne: #0.###}"); // sum = (betTofirstTwo + BetToFirstOne + betTosecondOne) / 100 * fork.ProfitRate; // } // else // { // var betTosecondTwo = BetToFirstOne * fork.CoefsOfFirstBets.ElementAt(0).Value.Get() // / fork.CoefsOfSecondBets.ElementAt(1).Value.Get(); // Console.WriteLine( // $"Cтавка в 1-ой конторе на 1-ое событие = {BetToFirstOne}" // + $"Во 2-ой конторе на 1-ое событие = {betTosecondOne: #0.###}, " // + $"на 2-ое событие = {betTosecondTwo: #0.###}"); // sum = (betTosecondTwo + betTosecondOne + BetToFirstOne) / 100 * fork.ProfitRate; // } // Console.WriteLine($"Cумма прибыли: {sum: #0.##}р."); // Console.WriteLine($"{fork.FirstGame.Info}"); // Console.WriteLine($"Имя конторы - {fork.FirstBetsName}:"); // foreach (var type in fork.CoefsOfFirstBets.Keys) // { // Console.WriteLine( // $"{string.Empty.PadRight(5)}Тип ставки: {type.ToString().PadRight(20)}| Коэффициент {fork.CoefsOfFirstBets[type]}"); // } // Console.WriteLine($"Имя конторы - {fork.SecondBetsName}:"); // foreach (var type in fork.CoefsOfSecondBets.Keys) // { // Console.WriteLine( // $"{string.Empty.PadRight(5)}Тип ставки: {type.ToString().PadRight(20)}| Коэффициент {fork.CoefsOfSecondBets[type]}"); // } // Console.WriteLine(); // } //} }
public void GroupGamesByTypeSportTest() { var inputDictionary = new Dictionary<BetsName, Dictionary<SportType, List<Game>>>(); var inputInnerDictionary1 = new Dictionary<SportType, List<Game>>(); var listInputGameFootballMarathon = new List<string> { "Ливерпуль", "Барселона", "Бавария", "МЮ" }; inputInnerDictionary1.Add("Футбол", CreateListGames(listInputGameFootballMarathon)); var listInputGameHockeyMarathon = new List<string> { "Детроит", "Цска", "Акбарс", "Атлант" }; inputInnerDictionary1.Add("Хоккей", CreateListGames(listInputGameHockeyMarathon)); inputDictionary.Add("Марафон", inputInnerDictionary1); var inputInnerDictionary2 = new Dictionary<SportType, List<Game>>(); var listInputGameFootballZenit = new List<string> { "Спартак", "Локомотив", "Динамо", "Ростов" }; inputInnerDictionary2.Add("Футбол", CreateListGames(listInputGameFootballZenit)); var listInputGameHockeyZenit = new List<string> { "Вашингтон", "Ренаут", "Металург", "Салават" }; inputInnerDictionary2.Add("Хоккей", CreateListGames(listInputGameHockeyZenit)); inputDictionary.Add("Зенит", inputInnerDictionary2); var outputDictionary = new Dictionary<SportType, Dictionary<BetsName, List<Game>>>(); var outputInnerDictionary1 = new Dictionary<BetsName, List<Game>> { { "Марафон", CreateListGames(listInputGameFootballMarathon) }, { "Зенит", CreateListGames(listInputGameFootballZenit) } }; outputDictionary.Add("Футбол", outputInnerDictionary1); var outputInnerDictionary2 = new Dictionary<BetsName, List<Game>> { { "Марафон", CreateListGames(listInputGameHockeyMarathon) }, { "Зенит", CreateListGames(listInputGameHockeyZenit) } }; outputDictionary.Add("Хоккей", outputInnerDictionary2); var tagList = new List<SportType> {new SportType("Футбол"), new SportType("Хоккей")}; var grouper = new GameGrouper(); var a = grouper.GroupGamesByTypeSport(inputDictionary, tagList); CollectionAssert.AreEqual(a, outputDictionary, "Uncorrect grouping"); }