39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
import pytest
|
|
from roman_numerals 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"
|