summaryrefslogtreecommitdiff
path: root/go/roman-numerals/roman_numerals_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/roman-numerals/roman_numerals_test.go')
-rw-r--r--go/roman-numerals/roman_numerals_test.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/go/roman-numerals/roman_numerals_test.go b/go/roman-numerals/roman_numerals_test.go
new file mode 100644
index 0000000..637e52e
--- /dev/null
+++ b/go/roman-numerals/roman_numerals_test.go
@@ -0,0 +1,39 @@
+package romannumerals
+
+import "testing"
+
+const targetTestVersion = 2
+
+func TestRomanNumerals(t *testing.T) {
+ if testVersion != targetTestVersion {
+ t.Fatalf("Found testVersion = %v, want %v", testVersion, targetTestVersion)
+ }
+ tc := append(romanNumeralTests, []romanNumeralTest{
+ {0, "", true},
+ {-1, "", true},
+ {4000, "", true},
+ {3999, "MMMCMXCIX", false},
+ }...)
+ for _, test := range tc {
+ actual, err := ToRomanNumeral(test.arabic)
+ if err == nil && test.hasError {
+ t.Errorf("ToRomanNumeral(%d) should return an error.", test.arabic)
+ continue
+ }
+ if err != nil && !test.hasError {
+ t.Errorf("ToRomanNumeral(%d) should not return an error.", test.arabic)
+ continue
+ }
+ if actual != test.roman {
+ t.Errorf("ToRomanNumeral(%d): %s, expected %s", test.arabic, actual, test.roman)
+ }
+ }
+}
+
+func BenchmarkRomanNumerals(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ for _, test := range romanNumeralTests {
+ ToRomanNumeral(test.arabic)
+ }
+ }
+}