diff --git a/05/PrintQueue.Tests/UpdateValidatorTests.cs b/05/PrintQueue.Tests/UpdateValidatorTests.cs index cafb524..8fb779c 100644 --- a/05/PrintQueue.Tests/UpdateValidatorTests.cs +++ b/05/PrintQueue.Tests/UpdateValidatorTests.cs @@ -47,56 +47,52 @@ public class UpdateValidatorTests } [Test] - public async Task Validate_WhenGivenValidUpdate_ItShouldReturnTrue() + [MethodDataSource(nameof(TestCases))] + public async Task Validate_WhenUpdate_ItShouldReturnExpectedResult(TestCase testCase) { - var updateOne = new Update([75, 47, 61, 53, 29]); - var updateTwo = new Update([97,61,53,29,13]); - var updateThree = new Update([75,29,13]); + var update = new Update(testCase.Pages); var validator = new UpdateValidator(_exampleRules); - var resultOne = validator.Validate(updateOne); - var resultTwo = validator.Validate(updateTwo); - var resultThree = validator.Validate(updateThree); + var result = validator.Validate(update); - await Assert.That(resultOne).IsTrue(); - await Assert.That(resultTwo).IsTrue(); - await Assert.That(resultThree).IsTrue(); + await Assert.That(result).IsEquivalentTo(testCase.ExpectedValidateResult); } [Test] - public async Task Validate_WhenGivenInvalidUpdate_ItShouldReturnFalse() + [MethodDataSource(nameof(TestCases))] + public async Task Sort_WhenGivenUpdate_ItShouldReturnUpdateSorted(TestCase testCase) { - var updateOne = new Update([75,97,47,61,53]); - var updateTwo = new Update([61,13,29]); - var updateThree = new Update([97,13,75,29,47]); + var update = new Update(testCase.Pages); var validator = new UpdateValidator(_exampleRules); - var resultOne = validator.Validate(updateOne); - var resultTwo = validator.Validate(updateTwo); - var resultThree = validator.Validate(updateThree); - - await Assert.That(resultOne).IsFalse(); - await Assert.That(resultTwo).IsFalse(); - await Assert.That(resultThree).IsFalse(); - } + var result = validator.Sort(update); - [Test] - public async Task Sort_WhenGivenInvalidUpdate_ItShouldReturnNewUpdateSorted() + await Assert.That(result).IsEquivalentTo(new Update(testCase.SortedPages)); + } + + public static IEnumerable> TestCases() { - var updateOne = new Update([75,97,47,61,53]); - var updateTwo = new Update([61,13,29]); - var updateThree = new Update([97,13,75,29,47]); - - var validator = new UpdateValidator(_exampleRules); - - var resultOne = validator.Sort(updateOne); - var resultTwo = validator.Sort(updateTwo); - var resultThree = validator.Sort(updateThree); - - await Assert.That(resultOne).IsEquivalentTo(new Update([97,75,47,61,53])); - await Assert.That(resultTwo).IsEquivalentTo(new Update([61,29,13])); - await Assert.That(resultThree).IsEquivalentTo(new Update([97,75,47,29,13])); + yield return () => + { + List pages = [ 75, 47, 61, 53, 29 ]; + return new TestCase(pages, true, pages); + }; + yield return () => + { + List pages = [ 97,61,53,29,13 ]; + return new TestCase(pages, true, pages); + }; + yield return () => + { + List pages = [ 75,29,13 ]; + return new TestCase(pages, true, pages); + }; + yield return () => new TestCase([75,97,47,61,53], false, [97,75,47,61,53]); + yield return () => new TestCase([61,13,29], false, [61,29,13]); + yield return () => new TestCase([97,13,75,29,47], false, [97,75,47,29,13]); } + + public record TestCase(List Pages, bool ExpectedValidateResult, List SortedPages); } \ No newline at end of file diff --git a/05/PrintQueue/UpdateValidator.cs b/05/PrintQueue/UpdateValidator.cs index d5fd516..aba2537 100644 --- a/05/PrintQueue/UpdateValidator.cs +++ b/05/PrintQueue/UpdateValidator.cs @@ -22,8 +22,6 @@ class UpdateValidator } } - // NOTE: This is basically a bubble sort - // public Update Sort(Update update) { var sortedUpdate = new Update(update.Pages.ToList());