summaryrefslogtreecommitdiff
path: root/go/nth-prime/nth_prime_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/nth-prime/nth_prime_test.go')
-rw-r--r--go/nth-prime/nth_prime_test.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/go/nth-prime/nth_prime_test.go b/go/nth-prime/nth_prime_test.go
new file mode 100644
index 0000000..03f23e8
--- /dev/null
+++ b/go/nth-prime/nth_prime_test.go
@@ -0,0 +1,39 @@
+package prime
+
+import "testing"
+
+var tests = []struct {
+ n int
+ p int
+ ok bool
+}{
+ {1, 2, true},
+ {2, 3, true},
+ {3, 5, true},
+ {4, 7, true},
+ {5, 11, true},
+ {6, 13, true},
+ {10001, 104743, true},
+ {0, 0, false},
+}
+
+func TestNth(t *testing.T) {
+ for _, test := range tests {
+ switch p, ok := Nth(test.n); {
+ case !ok:
+ if test.ok {
+ t.Fatalf("Nth(%d) returned !ok. Expecting ok.", test.n)
+ }
+ case !test.ok:
+ t.Fatalf("Nth(%d) = %d, ok = %t. Expecting !ok.", test.n, p, ok)
+ case p != test.p:
+ t.Fatalf("Nth(%d) = %d, want %d.", test.n, p, test.p)
+ }
+ }
+}
+
+func BenchmarkNth(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ Nth(10001)
+ }
+}