public void Setup()
        {
            _googleSearchApiClientMockBuilder = new CommonSearchApiClientMockBuilder();
            _bingSearchApiClientMockBuilder   = new CommonSearchApiClientMockBuilder();
            IEnumerable <ICommonSearchApiClient> clients = BuildIEnumerableSearchClients();
            var searchFightService = new SearchFightService(clients);

            _queryReportService = new QueryReportService(searchFightService);
        }
        public async Task SearchFight()
        {
            string cSharp            = "C#";
            int    cSharpGoogleTotal = 25000;
            int    cSharpBingTotal   = 50000;

            string js            = "JavaScript";
            int    jsGoogleTotal = 30000;
            int    jsBingTotal   = 40000;

            var programmingLanguages = new string[]
            {
                cSharp,
                js
            };

            var searchHttpClient = new Mock <ISearchHttpClient>();

            searchHttpClient
            .Setup(x => x.GetGoogleResults(cSharp))
            .Returns(Task.FromResult(cSharpGoogleTotal));
            searchHttpClient
            .Setup(x => x.GetBingResults(cSharp))
            .Returns(Task.FromResult(cSharpBingTotal));

            searchHttpClient
            .Setup(x => x.GetGoogleResults(js))
            .Returns(Task.FromResult(jsGoogleTotal));
            searchHttpClient
            .Setup(x => x.GetBingResults(js))
            .Returns(Task.FromResult(jsBingTotal));

            var searchService      = new SearchService(searchHttpClient.Object);
            var searchFightService = new SearchFightService(searchService);

            var result = await searchFightService.SearchFight(programmingLanguages);

            var cSharpResult = result.ProgrammingLanguageResults[0];
            var jsResult     = result.ProgrammingLanguageResults[1];

            Assert.AreEqual(cSharp, cSharpResult.ProgrammingLanguage);
            Assert.AreEqual(cSharpGoogleTotal, cSharpResult.GoogleTotal);
            Assert.AreEqual(cSharpBingTotal, cSharpResult.BingTotal);

            Assert.AreEqual(js, jsResult.ProgrammingLanguage);
            Assert.AreEqual(jsGoogleTotal, jsResult.GoogleTotal);
            Assert.AreEqual(jsBingTotal, jsResult.BingTotal);

            Assert.AreEqual(js, result.GoogleWinner);
            Assert.AreEqual(cSharp, result.BingWinner);
            Assert.AreEqual(cSharp, result.TotalWinner);
        }
Пример #3
0
        static async Task Main(string[] args)
        {
            if (args.Length == 0)
            {
                Console.WriteLine("No valid arguments have been passed.");
                return;
            }

            Console.WriteLine("Loading results...");

            ISearchFightService searchFightService = new SearchFightService();
            await searchFightService.ExecuteSearchFight(args);

            searchFightService.Reports.ForEach(report => Console.WriteLine(report));

            Console.ReadLine();
        }
Пример #4
0
        static async Task Main(string[] args)
        {
            try
            {
                var collection = new ServiceCollection();
                collection.AddHttpClient();
                collection.AddLogging();
                collection.AddScoped <ISearchEngine, GoogleSearch>();
                collection.AddScoped <ISearchEngine, BingSearch>();
                var serviceProvider = collection.BuildServiceProvider();
                var services        = serviceProvider.GetServices <ISearchEngine>();

                var service = new SearchFightService(services);
                var result  = await service.Fight(args);

                foreach (var queryResult in result.QueryResults)
                {
                    Console.Write($"{queryResult.Query}: ");
                    foreach (var response in queryResult.EnginesResponses)
                    {
                        Console.Write($" {response.SearchEngine}: {response.Entries}");
                    }
                    Console.WriteLine();
                }

                foreach (var winner in result.Winners)
                {
                    Console.WriteLine($"{winner.SearchEngine} winner: {winner.Query}");
                }

                Console.WriteLine($"Total Winner : {result.TotalWinner}");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
 public SearchFightServiceTests()
 {
     _service = new SearchFightService();
 }