import unittest

from roman_numerals import (
    roman,
)

# Tests adapted from `problem-specifications//canonical-data.json`
class RomanNumeralsTest(unittest.TestCase):
    def test_1_is_a_single_i(self):
        self.assertEqual(roman(1), "I")

    def test_2_is_two_i_s(self):
        self.assertEqual(roman(2), "II")

    def test_3_is_three_i_s(self):
        self.assertEqual(roman(3), "III")

    def test_4_being_5_1_is_iv(self):
        self.assertEqual(roman(4), "IV")

    def test_5_is_a_single_v(self):
        self.assertEqual(roman(5), "V")

    def test_6_being_5_1_is_vi(self):
        self.assertEqual(roman(6), "VI")

    def test_9_being_10_1_is_ix(self):
        self.assertEqual(roman(9), "IX")

    def test_20_is_two_x_s(self):
        self.assertEqual(roman(27), "XXVII")

    def test_48_is_not_50_2_but_rather_40_8(self):
        self.assertEqual(roman(48), "XLVIII")

    def test_49_is_not_40_5_4_but_rather_50_10_10_1(self):
        self.assertEqual(roman(49), "XLIX")

    def test_50_is_a_single_l(self):
        self.assertEqual(roman(59), "LIX")

    def test_90_being_100_10_is_xc(self):
        self.assertEqual(roman(93), "XCIII")

    def test_100_is_a_single_c(self):
        self.assertEqual(roman(141), "CXLI")

    def test_60_being_50_10_is_lx(self):
        self.assertEqual(roman(163), "CLXIII")

    def test_400_being_500_100_is_cd(self):
        self.assertEqual(roman(402), "CDII")

    def test_500_is_a_single_d(self):
        self.assertEqual(roman(575), "DLXXV")

    def test_900_being_1000_100_is_cm(self):
        self.assertEqual(roman(911), "CMXI")

    def test_1000_is_a_single_m(self):
        self.assertEqual(roman(1024), "MXXIV")

    def test_3000_is_three_m_s(self):
        self.assertEqual(roman(3000), "MMM")


if __name__ == "__main__":
    unittest.main()

@@ -182,25 +182,16 @@
 st_1_is_
-a_single_
 i(self):
@@ -254,15 +254,10 @@
 _is_
-two_i_s
+ii
 (sel
@@ -324,17 +324,11 @@
 _is_
-three_i_s
+iii
 (sel
@@ -389,26 +389,16 @@
  test_4_
-being_5_1_
 is_iv(se
@@ -462,25 +462,16 @@
 st_5_is_
-a_single_
 v(self):
@@ -531,18 +531,8 @@
 t_6_
-being_5_1_
 is_v
@@ -601,19 +601,8 @@
 t_9_
-being_10_1_
 is_i
@@ -670,20 +670,18 @@
 st_2
-0
+7
 _is_
-two_x_s
+xxvii
 (sel
@@ -753,32 +753,14 @@
 _is_
-not_50_2_but_rather_40_8
+xlviii
 (sel
@@ -833,40 +833,12 @@
 _is_
-not_40_5_4_but_rather_50_10_10_1
+xlix
 (sel
@@ -904,23 +904,16 @@
 st_5
-0
+9
 _is_
-a_single_l
+lix
 (sel
@@ -978,28 +978,18 @@
 st_9
-0_being_100_10
+3
 _is_xc
+iii
 (sel
@@ -1056,24 +1056,18 @@
 st_1
-00
+41
 _is_
-a_single_c
+cxli
 (sel
@@ -1133,28 +1133,21 @@
 est_
-60_being_50_10
+163
 _is_
+c
 lx
+iii
 (sel
@@ -1217,29 +1217,17 @@
 t_40
-0_being_500_100
+2
 _is_cd
+ii
 (sel
@@ -1294,24 +1294,19 @@
 st_5
-00
+75
 _is_
-a_single_d
+dlxxv
 (sel
@@ -1374,31 +1374,18 @@
 st_9
-00_being_1000_100
+11
 _is_cm
+xi
 (sel
@@ -1453,24 +1453,19 @@
 t_10
-00
+24
 _is_
-a_single_m
+mxxiv
 (sel
@@ -1541,17 +1541,11 @@
 _is_
-three_m_s
+mmm
 (sel

rename tests for clarity