public void Should_retrieve_data_from_petowner_api() { var path = ConfigurationManager.AppSettings["PetOwnerAPI.Url"]; var uri = new Uri(path); IJsonToPetOwnerConverter converter = new JsonToPetOwnerConverter(); var httpClient = new HttpClient(); IPetOwnerApiService apiService = new PetOwnerApiService(httpClient, uri); IPetFinder petFinder = new CatFinder(); IPetOwnerFinder petOwnerFinder = new PetOwnerFinder(); IPetOwnerFilter petOwnerFilter = new PetOwnerFilter(petOwnerFinder, petFinder); IComparer <string> comparer = new AlphabeticComparer(); IPetSorter petSorter = new PetNameAlphabeticalSorter(comparer); IPetOwnerGrouper grouper = new PetOwnerGrouper(); var apiClient = new PetOwnerApiClient.Client.PetOwnerApiClient(converter, apiService, petOwnerFilter, petSorter, grouper); var apiResult = apiClient.GetPetsByPetOwnerGender().Result; Assert.IsTrue(apiResult != null); Assert.IsTrue(string.IsNullOrEmpty(apiResult.Error)); if (apiResult.PetsByGender != null) { var distinctGenders = apiResult.PetsByGender.Select(x => x.Gender).Distinct().ToList(); var allGenders = apiResult.PetsByGender.Select(x => x.Gender).ToList(); Assert.IsTrue(distinctGenders.SequenceEqual(allGenders)); foreach (var pet in apiResult.PetsByGender) { Assert.IsTrue(pet.PetNames.Count() > 0); } } }
public void Should_return_1_when_Garfield_x_Compare_With_Fido_y() { var comparer = new AlphabeticComparer(); var actual = comparer.Compare("Garfield", "Fido"); Assert.AreEqual(1, actual); }
private async void UpdateGameListAsync() { updateGameListWorking = true; var task = SteamServiceExt.GetOwnedGamesAsync(steamList.SteamID); await task.ContinueWith((result) => { //After web response is received, continue here var newList = result.Result.Games; var itemsTasks = 0; var itemsAdded = 0; object itemsLock = new object(); var comparator = new AlphabeticComparer(); //Start adding games to the game list lock (itemsLock) { foreach (Game item in newList) { // If item is in another list already, don't add it if (ignoreList.BinarySearch(item, comparator) < 0) { itemsTasks++; Application.Current.Dispatcher.BeginInvoke((ThreadStart) delegate { bool added = false; lock (gameList) { if (gameList.Count == 0) { gameList.Add(item); GameList.Add(item); OnPropertyChanged("GameList"); added = true; } if (comparator.Compare(gameList[gameList.Count - 1], item) < 0) { gameList.Add(item); GameList.Add(item); OnPropertyChanged("GameList"); added = true; } if (comparator.Compare(gameList[0], item) > 0) { gameList.Insert(0, item); GameList.Insert(0, item); OnPropertyChanged("GameList"); added = true; } int index = gameList.BinarySearch(item, comparator); // If index is negative, item is not present in list. Positive index means item is present in the list. if (index < 0) { index = ~index; gameList.Insert(index, item); GameList.Insert(index, item); OnPropertyChanged("GameList"); added = true; } } lock (itemsLock) { itemsTasks--; if (added) { itemsAdded++; } } }); } } //Create thread to show message when all tasks are done new Thread(() => { bool finished = false; while (!finished) { Thread.Sleep(100); lock (itemsLock) { if (itemsTasks == 0) { FileService.SaveFile(steamList); MessageBox.Show(itemsAdded + " games added to game list"); updateGameListWorking = false; finished = true; } } } }).Start(); } }); return; }