turner-townsend-backend-ass.../roman/test_roman.py

39 lines
1.4 KiB
Python

import pytest
from roman import convert_to_number
def test_valid_single_numerals():
assert convert_to_number("I") == "I = 1"
assert convert_to_number("V") == "V = 5"
assert convert_to_number("X") == "X = 10"
assert convert_to_number("C") == "C = 100"
assert convert_to_number("M") == "M = 1000"
def test_valid_multiple_numerals():
assert convert_to_number("IV") == "IV = 1 + 5 = 6"
assert convert_to_number("XCM") == "XCM = 10 + 100 + 1000 = 1110"
assert convert_to_number("MCMXCIV") == "MCMXCIV = 1000 + 100 + 1000 + 10 + 100 + 1 + 5 = 2216"
def test_lowercase_input():
assert convert_to_number("ivxcm") == "IVXCM = 1 + 5 + 10 + 100 + 1000 = 1116"
def test_mixed_case_input():
assert convert_to_number("iVxCm") == "IVXCM = 1 + 5 + 10 + 100 + 1000 = 1116"
def test_invalid_characters():
assert convert_to_number("EFGH") == "Invalid input"
assert convert_to_number("123") == "Invalid input"
assert convert_to_number("!@#") == "Invalid input"
def test_mixed_valid_and_invalid_characters():
assert convert_to_number("AIXB") == "IX = 1 + 10 = 11"
assert convert_to_number("M1C2") == "MC = 1000 + 100 = 1100"
def test_empty_string():
assert convert_to_number("") == "Invalid input"
def test_only_spaces():
assert convert_to_number(" ") == "Invalid input"
def test_spaces_and_valid_numerals():
assert convert_to_number(" I V ") == "IV = 1 + 5 = 6"