|
| 1 | +import pandas as pd |
| 2 | +import pytest |
| 3 | + |
| 4 | +from pydantic_extra_types.pandas_types import Series |
| 5 | + |
| 6 | + |
| 7 | +@pytest.mark.parametrize( |
| 8 | + 'data, expected', |
| 9 | + [ |
| 10 | + ([1, 2, 3], [1, 2, 3]), |
| 11 | + ([], []), |
| 12 | + ([10, 20, 30, 40], [10, 20, 30, 40]), |
| 13 | + ], |
| 14 | +) |
| 15 | +def test_series_creation(data, expected): |
| 16 | + s = Series(data) |
| 17 | + assert isinstance(s, Series) |
| 18 | + assert isinstance(s.value, pd.Series) |
| 19 | + assert s.value.tolist() == expected |
| 20 | + |
| 21 | + |
| 22 | +def test_series_repr(): |
| 23 | + data = [1, 2, 3] |
| 24 | + s = Series(data) |
| 25 | + assert repr(s) == repr(pd.Series(data)) |
| 26 | + |
| 27 | + |
| 28 | +def test_series_attribute_access(): |
| 29 | + data = [1, 2, 3] |
| 30 | + s = Series(data) |
| 31 | + assert s.sum() == pd.Series(data).sum() |
| 32 | + |
| 33 | + |
| 34 | +def test_series_equality(): |
| 35 | + data = [1, 2, 3] |
| 36 | + s1 = Series(data) |
| 37 | + s2 = Series(data) |
| 38 | + assert s1 == s2 |
| 39 | + assert s2 == pd.Series(data) |
| 40 | + |
| 41 | + |
| 42 | +def test_series_addition(): |
| 43 | + data1 = [1, 2, 3] |
| 44 | + data2 = [4, 5, 6] |
| 45 | + s1 = Series(data1) |
| 46 | + s2 = Series(data2) |
| 47 | + s3 = s1 + s2 |
| 48 | + assert isinstance(s3, Series) |
| 49 | + assert s3.value.tolist() == [5, 7, 9] |
| 50 | + |
| 51 | + |
| 52 | +@pytest.mark.parametrize( |
| 53 | + 'data, other, expected', |
| 54 | + [ |
| 55 | + ([1, 2, 3], [4, 5, 6], [5, 7, 9]), |
| 56 | + ([10, 20, 30], (1, 2, 3), [11, 22, 33]), |
| 57 | + ([5, 10, 15], pd.Series([1, 2, 3]), [6, 12, 18]), |
| 58 | + ], |
| 59 | +) |
| 60 | +def test_series_addition_with_types(data, other, expected): |
| 61 | + s = Series(data) |
| 62 | + result = s + other |
| 63 | + assert isinstance(result, Series) |
| 64 | + assert result.value.tolist() == expected |
| 65 | + |
| 66 | + |
| 67 | +@pytest.mark.parametrize( |
| 68 | + 'data, other', |
| 69 | + [ |
| 70 | + ([1, 2, 3], 'invalid'), # Invalid type for addition |
| 71 | + ([1, 2, 3], {'a': 1, 'b': 2}), # Invalid type for addition |
| 72 | + ], |
| 73 | +) |
| 74 | +def test_series_addition_invalid_type_error(data, other) -> None: |
| 75 | + s = Series(data) |
| 76 | + with pytest.raises(TypeError): |
| 77 | + s + other |
| 78 | + |
| 79 | + |
| 80 | +@pytest.mark.parametrize( |
| 81 | + 'data, other', |
| 82 | + [ |
| 83 | + ([1, 2, 3], []), |
| 84 | + ], |
| 85 | +) |
| 86 | +def test_series_addition_invalid_value_error(data, other) -> None: |
| 87 | + s = Series(data) |
| 88 | + with pytest.raises(ValueError): |
| 89 | + s + other |
0 commit comments