51 lines
1.4 KiB
Python
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)
|