public async Task VerifySortingOptions(SortingOption sortingOption) { //Fail all tests if the DefaultSortingOption has changed Assert.AreEqual(MobileSortingService.DefaultSortingOption, SortingOption.Views); //Arrange string floatingActionTextButtonStatistic1Text, floatingActionTextButtonStatistic2Text, floatingActionTextButtonStatistic3Text; Repository finalFirstRepository, finalSecondTopRepository, finalLastRepository; Repository initialFirstRepository = RepositoryPage.VisibleCollection.First(); Repository initialSecondTopRepository = RepositoryPage.VisibleCollection.Skip(1).First(); Repository initialLastRepository = RepositoryPage.VisibleCollection.Last(); //Act await RepositoryPage.SetSortingOption(sortingOption).ConfigureAwait(false); floatingActionTextButtonStatistic1Text = RepositoryPage.InformationButtonStatistic1Text; floatingActionTextButtonStatistic2Text = RepositoryPage.InformationButtonStatistic2Text; floatingActionTextButtonStatistic3Text = RepositoryPage.InformationButtonStatistic3Text; RepositoryPage.TapInformationButton(); //Assert finalFirstRepository = RepositoryPage.VisibleCollection.First(); finalSecondTopRepository = RepositoryPage.VisibleCollection.Skip(1).First(); finalLastRepository = RepositoryPage.VisibleCollection.Last(); if (initialFirstRepository.IsTrending == initialSecondTopRepository.IsTrending) { Assert.GreaterOrEqual(initialFirstRepository.TotalViews, initialSecondTopRepository.TotalViews); } Assert.GreaterOrEqual(initialFirstRepository.TotalViews, initialLastRepository.TotalViews); var floatingActionTextButtonStatistic1Text_Expected = StatisticsService.GetFloatingActionTextButtonText(MobileSortingService.GetSortingCategory(sortingOption), RepositoryPage.VisibleCollection, FloatingActionButtonType.Statistic1); var floatingActionTextButtonStatistic2Text_Expected = StatisticsService.GetFloatingActionTextButtonText(MobileSortingService.GetSortingCategory(sortingOption), RepositoryPage.VisibleCollection, FloatingActionButtonType.Statistic2); var floatingActionTextButtonStatistic3Text_Expected = StatisticsService.GetFloatingActionTextButtonText(MobileSortingService.GetSortingCategory(sortingOption), RepositoryPage.VisibleCollection, FloatingActionButtonType.Statistic3); Assert.AreEqual(floatingActionTextButtonStatistic1Text_Expected, floatingActionTextButtonStatistic1Text); Assert.AreEqual(floatingActionTextButtonStatistic2Text_Expected, floatingActionTextButtonStatistic2Text); Assert.AreEqual(floatingActionTextButtonStatistic3Text_Expected, floatingActionTextButtonStatistic3Text); switch (sortingOption) { case SortingOption.Views when finalFirstRepository.IsTrending == finalSecondTopRepository.IsTrending: Assert.LessOrEqual(finalFirstRepository.TotalViews, finalSecondTopRepository.TotalViews); break; case SortingOption.Views: Assert.LessOrEqual(finalSecondTopRepository.TotalViews, finalLastRepository.TotalViews); break; case SortingOption.Stars when finalFirstRepository.IsTrending == finalSecondTopRepository.IsTrending: Assert.GreaterOrEqual(finalFirstRepository.StarCount, finalSecondTopRepository.StarCount); break; case SortingOption.Stars: Assert.GreaterOrEqual(finalSecondTopRepository.StarCount, finalLastRepository.StarCount); break; case SortingOption.Forks when finalFirstRepository.IsTrending == finalSecondTopRepository.IsTrending: Assert.GreaterOrEqual(finalFirstRepository.ForkCount, finalSecondTopRepository.ForkCount); break; case SortingOption.Forks: Assert.GreaterOrEqual(finalSecondTopRepository.ForkCount, finalLastRepository.ForkCount); break; case SortingOption.Issues when finalFirstRepository.IsTrending == finalSecondTopRepository.IsTrending: Assert.GreaterOrEqual(finalFirstRepository.IssuesCount, finalSecondTopRepository.IssuesCount); break; case SortingOption.Issues: Assert.GreaterOrEqual(finalSecondTopRepository.IssuesCount, finalLastRepository.IssuesCount); break; case SortingOption.Clones when finalFirstRepository.IsTrending == finalSecondTopRepository.IsTrending: Assert.GreaterOrEqual(finalFirstRepository.TotalClones, finalSecondTopRepository.TotalClones); break; case SortingOption.Clones: Assert.GreaterOrEqual(finalSecondTopRepository.TotalClones, finalLastRepository.TotalClones); break; case SortingOption.UniqueClones when finalFirstRepository.IsTrending == finalSecondTopRepository.IsTrending: Assert.GreaterOrEqual(finalFirstRepository.TotalUniqueClones, finalSecondTopRepository.TotalUniqueClones); break; case SortingOption.UniqueClones: Assert.GreaterOrEqual(finalSecondTopRepository.TotalUniqueClones, finalLastRepository.TotalUniqueClones); break; case SortingOption.UniqueViews when finalFirstRepository.IsTrending == finalSecondTopRepository.IsTrending: Assert.GreaterOrEqual(finalFirstRepository.TotalUniqueViews, finalSecondTopRepository.TotalUniqueViews); break; case SortingOption.UniqueViews: Assert.GreaterOrEqual(finalSecondTopRepository.TotalUniqueViews, finalLastRepository.TotalUniqueViews); break; default: throw new NotSupportedException(); } ; }