summaryrefslogtreecommitdiff
path: root/roman_test.go
blob: 4ad62cf56c6ff2d27d18d042053f655029012c8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package roman

import (
	"testing"
)

func TestRoman(t *testing.T) {
	testCases := []struct {
		r Roman
		s string
	}{
		{0, ""},
		{1, "I"},
		{2, "II"},
		{3, "III"},
		{5, "V"},
		{8, "VIII"},
		{13, "XIII"},
		{21, "XXI"},
		{34, "XXXIV"},
		{55, "LV"},
		{89, "LXXXIX"},
		{100, "C"},
		{200, "CC"},
		{500, "D"},
		{1e3 - 1, "CMXCIX"},
		{2e3 - 1, "MCMXCIX"},
		{4e3 - 1, "MMMCMXCIX"},
		{1e6 - 1, "C̅M̅X̅C̅I̅X̅CMXCIX"},
		{2e6 - 1, "M̅C̅M̅X̅C̅I̅X̅CMXCIX"},
		{4e6 - 1, "M̅M̅M̅C̅M̅X̅C̅I̅X̅CMXCIX"},
	}
	for _, tc := range testCases {
		t.Run(tc.s, func(t *testing.T) {
			if tc.r.String() != tc.s {
				t.Errorf("got %v, want %v", tc.r, tc.s)
			}
		})
	}
}