diff --git a/exercises/nth-prime/Example.cs b/exercises/nth-prime/Example.cs index 75cbe6347f..d0968fd815 100644 --- a/exercises/nth-prime/Example.cs +++ b/exercises/nth-prime/Example.cs @@ -4,8 +4,11 @@ public static class NthPrime { - public static int Nth(int nth) + public static int Prime(int nth) { + if (nth < 1) + throw new ArgumentOutOfRangeException(); + return Primes().Skip(nth - 1).First(); } diff --git a/exercises/nth-prime/NthPrime.cs b/exercises/nth-prime/NthPrime.cs index 66af194b1e..eb32bd86f7 100644 --- a/exercises/nth-prime/NthPrime.cs +++ b/exercises/nth-prime/NthPrime.cs @@ -4,7 +4,7 @@ public static class NthPrime { - public static int Nth(int nth) + public static int Prime(int nth) { throw new NotImplementedException("You need to implement this function."); } diff --git a/exercises/nth-prime/NthPrimeTest.cs b/exercises/nth-prime/NthPrimeTest.cs index bbb33a6955..9910b427ff 100644 --- a/exercises/nth-prime/NthPrimeTest.cs +++ b/exercises/nth-prime/NthPrimeTest.cs @@ -1,21 +1,35 @@ -using Xunit; +using Xunit; +using System; public class NthPrimeTest { - [Theory] - [InlineData(1, 2)] - [InlineData(2, 3)] - [InlineData(3, 5)] - [InlineData(4, 7)] - [InlineData(5, 11)] - [InlineData(6, 13)] - [InlineData(7, 17)] - [InlineData(8, 19)] - [InlineData(1000, 7919)] - [InlineData(10000, 104729)] - [InlineData(10001, 104743)] - public void Nth_prime_calculated(int nth, int expected) + [Fact] + public void First_prime() { - Assert.Equal(expected, NthPrime.Nth(nth)); + Assert.Equal(2, NthPrime.Prime(1)); + } + + [Fact(Skip = "Remove to run test")] + public void Second_prime() + { + Assert.Equal(3, NthPrime.Prime(2)); + } + + [Fact(Skip = "Remove to run test")] + public void Sixth_prime() + { + Assert.Equal(13, NthPrime.Prime(6)); + } + + [Fact(Skip = "Remove to run test")] + public void Big_prime() + { + Assert.Equal(104743, NthPrime.Prime(10001)); + } + + [Fact(Skip = "Remove to run test")] + public void There_is_no_zeroth_prime() + { + Assert.Throws(() => NthPrime.Prime(0)); } } \ No newline at end of file diff --git a/generators/Exercises/NthPrimeExercise.cs b/generators/Exercises/NthPrimeExercise.cs new file mode 100644 index 0000000000..dabe7cbbb8 --- /dev/null +++ b/generators/Exercises/NthPrimeExercise.cs @@ -0,0 +1,25 @@ +using System; +using Generators.Data; +using Generators.Methods; +using Humanizer; + +namespace Generators.Exercises +{ + public class NthPrimeExercise : EqualityExercise + { + public NthPrimeExercise() : base("nth-prime") + { + } + + protected override TestMethod CreateTestMethod(TestMethodData testMethodData) + { + if (testMethodData.CanonicalDataCase.Expected is bool b) + { + testMethodData.Options.ExceptionType = typeof(ArgumentOutOfRangeException); + return CreateExceptionTestMethod(testMethodData); + } + + return CreateEqualityTestMethod(testMethodData); + } + } +} \ No newline at end of file