def test_sizes(deck3x4, deck4x5): match_size = 4 size_4_sets = list(set_solver.solution_generator( deck3x4, dimensions=3, feature_size=4, match_size=match_size)) assert size_4_sets == [ [[3, 1, 1], [2, 0, 3], [0, 2, 0], [1, 3, 2]], [[3, 1, 1], [0, 1, 0], [2, 1, 2], [1, 1, 3]] ] for entry, cardinalities in zip( size_4_sets, [[match_size, match_size, match_size], [match_size, 1, match_size]] ): for dim in range(3): assert len(set([card[dim] for card in entry])) \ == cardinalities[dim] match_size = 5 dimensions = 4 size_5_sets = list(set_solver.solution_generator( deck4x5, dimensions=dimensions, feature_size=5, match_size=match_size)) assert size_5_sets == [ [[3, 2, 1, 2], [0, 0, 3, 3], [2, 3, 2, 1], [4, 1, 4, 0], [1, 4, 0, 4]] ] for entry, cardinalities in zip(size_5_sets, [[match_size] * dimensions]): for dim in range(4): assert len(set([card[dim] for card in entry])) \ == cardinalities[dim] assert all(map(set_solver.is_set, size_4_sets + size_5_sets)) assert not list(set_solver.solution_generator( deck3x4, dimensions=3, feature_size=4, match_size=5))
def test_sizes(deck3x4, deck4x5): match_size = 4 size_4_sets = list( set_solver.solution_generator(deck3x4, dimensions=3, feature_size=4, match_size=match_size)) assert size_4_sets == [[[3, 1, 1], [2, 0, 3], [0, 2, 0], [1, 3, 2]], [[3, 1, 1], [0, 1, 0], [2, 1, 2], [1, 1, 3]]] for entry, cardinalities in zip( size_4_sets, [[match_size, match_size, match_size], [match_size, 1, match_size]]): for dim in range(3): assert len(set([card[dim] for card in entry])) \ == cardinalities[dim] match_size = 5 dimensions = 4 size_5_sets = list( set_solver.solution_generator(deck4x5, dimensions=dimensions, feature_size=5, match_size=match_size)) assert size_5_sets == [[[3, 2, 1, 2], [0, 0, 3, 3], [2, 3, 2, 1], [4, 1, 4, 0], [1, 4, 0, 4]]] for entry, cardinalities in zip(size_5_sets, [[match_size] * dimensions]): for dim in range(4): assert len(set([card[dim] for card in entry])) \ == cardinalities[dim] assert all(map(set_solver.is_set, size_4_sets + size_5_sets)) assert not list( set_solver.solution_generator( deck3x4, dimensions=3, feature_size=4, match_size=5))
def test_solver_input_validation(deck3x4): with pytest.raises(AssertionError): set_solver.solution_generator(deck3x4, 4, 5, 6).next() with pytest.raises(AssertionError): set_solver.solution_generator(deck3x4, 3, 4, 0).next() with pytest.raises(AssertionError): set_solver.solution_generator(deck3x4, 3, 4, 20).next()