import pytest
import pandas as pd
from clean_gapminder import number_to_float, format_numbers
@pytest.mark.parametrize("input_value, expected", [
("10k", 10000.0),
("1.5M", 1500000.0),
("2B", 2000000000.0),
(1000, 1000),
("500", 500),
('test', None)
])
def test_number_to_float(input_value, expected):
if isinstance(expected, float):
assert number_to_float(input_value) == pytest.approx(expected)
else:
assert number_to_float(input_value) == expected
def test_format_numbers():
df = pd.DataFrame({
'gdp': ['1M', '2M'],
'pop': ['10k', '20k'],
'year': ['2000', '2001']
})
formatted = format_numbers(df)
assert formatted['gdp'].tolist() == [1_000_000.0, 2_000_000.0]
assert formatted['pop'].tolist() == [10000, 20000]
assert formatted['year'].dtype == 'int64'