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) } }) } }