def test_ai_handles_two_pathways_with_multiple_elements(): m = genmap.MagnitudeMap(canvas_size=(16, 8), sum_of_magnitudes=84, building_min=1) m.add(24, 'a') m.add(30, 'b', shape_choice=0) m.add(30, 'c') assert str(m) == """\ ---------------- ---------------- --##--########-- --##------------ --##------------ --##--########-- ---------------- ----------------""" assert m.assignments == {} solutions = m.assign_ids({'art': ['x', 'y'], 'science': ['z']}, take_first=False) assert solutions == [ {'art': [('a', 'x'), ('b', 'y')], 'science': [('c', 'z')]} , {'art': [('a', 'x'), ('c', 'y')], 'science': [('b', 'z')]} , {'art': [('a', 'y'), ('b', 'x')], 'science': [('c', 'z')]} , {'art': [('a', 'y'), ('c', 'x')], 'science': [('b', 'z')]} , {'art': [('b', 'x'), ('c', 'y')], 'science': [('a', 'z')]} , {'art': [('b', 'y'), ('c', 'x')], 'science': [('a', 'z')]} , {'art': [('c', 'x'), ('b', 'y')], 'science': [('a', 'z')]} , {'art': [('c', 'y'), ('b', 'x')], 'science': [('a', 'z')]} , {'art': [('b', 'x'), ('a', 'y')], 'science': [('c', 'z')]} , {'art': [('b', 'y'), ('a', 'x')], 'science': [('c', 'z')]} , {'art': [('c', 'x'), ('a', 'y')], 'science': [('b', 'z')]} , {'art': [('c', 'y'), ('a', 'x')], 'science': [('b', 'z')]} ] assert tuple(sorted(m.assignments.items())) in [tuple(sorted(flatten(s))) for s in solutions]
def test_ai_assigns_ids(): m = genmap.MagnitudeMap(canvas_size=(16, 8), sum_of_magnitudes=10, building_min=1) m.add(5, 'a', shape_choice=1) m.add(5, 'b') assert str(m) == """\ ---------------- ---------------- --#####--#####-- --#####--#####-- --#####--#####-- --#####--#####-- ---------------- ----------------""" assert m.assignments == {} solutions = m.assign_ids({'art': ['deadbeef', 'beeffeed']}, take_first=False) assert solutions == [{ 'art': [('a', 'deadbeef'), ('b', 'beeffeed')] }, { 'art': [('a', 'beeffeed'), ('b', 'deadbeef')] }, { 'art': [('b', 'deadbeef'), ('a', 'beeffeed')] }, { 'art': [('b', 'beeffeed'), ('a', 'deadbeef')] }] assert tuple(sorted(m.assignments.items())) in [ tuple(sorted(flatten(s))) for s in solutions ]
def assign_ids(self, pathways, take_first=True): """Given a pathways data structure, assign resources to shapes. """ solutions = pathways_solver.solve( self.shapes , pathways , take_first , relax_crossings_until=1e8 ) self.assignments = dict(pathways_solver.flatten(random.choice(solutions))) assert len(set(self.assignments.values())) == len(self.assignments) return solutions
def test_ai_assigns_ids(): m = genmap.MagnitudeMap(canvas_size=(16, 8), sum_of_magnitudes=10, building_min=1) m.add(5, 'a', shape_choice=1) m.add(5, 'b') assert str(m) == """\ ---------------- ---------------- --#####--#####-- --#####--#####-- --#####--#####-- --#####--#####-- ---------------- ----------------""" assert m.assignments == {} solutions = m.assign_ids({'art': ['deadbeef', 'beeffeed']}, take_first=False) assert solutions == [ {'art': [('a', 'deadbeef'), ('b', 'beeffeed')]} , {'art': [('a', 'beeffeed'), ('b', 'deadbeef')]} , {'art': [('b', 'deadbeef'), ('a', 'beeffeed')]} , {'art': [('b', 'beeffeed'), ('a', 'deadbeef')]} ] assert tuple(sorted(m.assignments.items())) in [tuple(sorted(flatten(s))) for s in solutions]
def test_ai_handles_two_simple_pathways(): m = genmap.MagnitudeMap(canvas_size=(16, 8), sum_of_magnitudes=10, building_min=1) m.add(5, 'a', shape_choice=1) m.add(5, 'b') assert str(m) == """\ ---------------- ---------------- --#####--#####-- --#####--#####-- --#####--#####-- --#####--#####-- ---------------- ----------------""" assert m.assignments == {} solutions = m.assign_ids({ 'art': ['x'], 'science': ['y'] }, take_first=False) assert solutions == [ { 'art': [('a', 'x')], 'science': [('b', 'y')] } #, {'art': [('a', 'y')], 'science': [('b', 'x')]} , { 'art': [('b', 'x')], 'science': [('a', 'y')] } #, {'art': [('b', 'y')], 'science': [('a', 'x')]} ] assert tuple(sorted(m.assignments.items())) in [ tuple(sorted(flatten(s))) for s in solutions ]