sums/tests/test_sums.py

51 lines
1.4 KiB
Python

import pytest
from sums.pairs import PotentialPairs, DiscoveredPairs, NumberPair, find_pairs
PairsTestCase = tuple[PotentialPairs, DiscoveredPairs]
SHORT_TEST: PairsTestCase = (
[4, 23, 65, 67, 24, 12, 86],
{90: set([NumberPair((4, 86)), NumberPair((23, 67))])},
)
LONG_TEST: PairsTestCase = (
[6, 4, 12, 10, 22, 54, 32, 42, 21, 11],
{
16: set([NumberPair((4, 12)), NumberPair((6, 10))]),
32: set([NumberPair((10, 22)), NumberPair((21, 11))]),
33: set([NumberPair((12, 21)), NumberPair((22, 11))]),
43: set([NumberPair((22, 21)), NumberPair((32, 11))]),
53: set([NumberPair((32, 21)), NumberPair((42, 11))]),
54: set([NumberPair((12, 42)), NumberPair((22, 32))]),
64: set([NumberPair((10, 54)), NumberPair((22, 42))]),
},
)
HAS_DUPLICATE_SUMS: PairsTestCase = (
[33, 33, 32, 34],
{
66: set([NumberPair((33, 33)), NumberPair((32, 34))]),
},
)
HAS_DUPLICATE_PAIRS: PairsTestCase = (
[33, 33, 33],
{},
)
@pytest.mark.parametrize(
("numbers", "expected"),
[SHORT_TEST, LONG_TEST, HAS_DUPLICATE_SUMS, HAS_DUPLICATE_PAIRS],
)
def test_pairs(numbers: PotentialPairs, expected: DiscoveredPairs):
discovered = find_pairs(numbers)
assert discovered == expected
def test_number_pair_only_equals_self():
a = NumberPair((3, 4))
b = (3, 4)
assert not a.__eq__(b)