# Path: string_utils/manipulation.py
# def roman_decode(input_string: str) -> int:
#     """
#     Decode a roman number string into an integer if the provided string is valid.
# 
#     *Example:*
# 
#     >>> roman_decode('VII') # returns 7
# 
#     :param input_string: (Assumed) Roman number
#     :type input_string: str
#     :return: Integer value
#     """
#     return __RomanNumbers.decode(input_string)


from unittest import TestCase
from string_utils.manipulation import roman_decode
        self.assertEqual(73, roman_decode('LXXIII'))
        self.assertEqual(74, roman_decode('LXXIV'))
        self.assertEqual(75, roman_decode('LXXV'))
        self.assertEqual(76, roman_decode('LXXVI'))
        self.assertEqual(77, roman_decode('LXXVII'))
        self.assertEqual(78, roman_decode('LXXVIII'))
        self.assertEqual(79, roman_decode('LXXIX'))

        # 8x
        self.assertEqual(81, roman_decode('LXXXI'))
        self.assertEqual(82, roman_decode('LXXXII'))
        self.assertEqual(83, roman_decode('LXXXIII'))
        self.assertEqual(84, roman_decode('LXXXIV'))
        self.assertEqual(85, roman_decode('LXXXV'))
        self.assertEqual(86, roman_decode('LXXXVI'))
        self.assertEqual(87, roman_decode('LXXXVII'))
        self.assertEqual(88, roman_decode('LXXXVIII'))
        self.assertEqual(89, roman_decode('LXXXIX'))

        # 9x
        self.assertEqual(91, roman_decode('XCI'))
        self.assertEqual(92, roman_decode('XCII'))
        self.assertEqual(93, roman_decode('XCIII'))
        self.assertEqual(94, roman_decode('XCIV'))
        self.assertEqual(95, roman_decode('XCV'))
        self.assertEqual(96, roman_decode('XCVI'))
        self.assertEqual(97, roman_decode('XCVII'))
        self.assertEqual(98, roman_decode('XCVIII'))
        self.assertEqual(99, roman_decode('XCIX'))


# Path: string_utils/manipulation.py
# def roman_decode(input_string: str) -> int:
#     """
#     Decode a roman number string into an integer if the provided string is valid.
# 
#     *Example:*
# 
#     >>> roman_decode('VII') # returns 7
# 
#     :param input_string: (Assumed) Roman number
#     :type input_string: str
#     :return: Integer value
#     """
#     return __RomanNumbers.decode(input_string)


# Path: tests/test_roman_decode.py
from unittest import TestCase
from string_utils.manipulation import roman_decode

        self.assertEqual(73, roman_decode('LXXIII'))
        self.assertEqual(74, roman_decode('LXXIV'))
        self.assertEqual(75, roman_decode('LXXV'))
        self.assertEqual(76, roman_decode('LXXVI'))
        self.assertEqual(77, roman_decode('LXXVII'))
        self.assertEqual(78, roman_decode('LXXVIII'))
        self.assertEqual(79, roman_decode('LXXIX'))

        # 8x
        self.assertEqual(81, roman_decode('LXXXI'))
        self.assertEqual(82, roman_decode('LXXXII'))
        self.assertEqual(83, roman_decode('LXXXIII'))
        self.assertEqual(84, roman_decode('LXXXIV'))
        self.assertEqual(85, roman_decode('LXXXV'))
        self.assertEqual(86, roman_decode('LXXXVI'))
        self.assertEqual(87, roman_decode('LXXXVII'))
        self.assertEqual(88, roman_decode('LXXXVIII'))
        self.assertEqual(89, roman_decode('LXXXIX'))

        # 9x
        self.assertEqual(91, roman_decode('XCI'))
        self.assertEqual(92, roman_decode('XCII'))
        self.assertEqual(93, roman_decode('XCIII'))
        self.assertEqual(94, roman_decode('XCIV'))
        self.assertEqual(95, roman_decode('XCV'))
        self.assertEqual(96, roman_decode('XCVI'))
        self.assertEqual(97, roman_decode('XCVII'))
        self.assertEqual(98, roman_decode('XCVIII'))
        self.assertEqual(99, roman_decode('XCIX'))


    def test_hundreds_are_decoded_as_expected(self):