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)