Example #1
0
 def test_mismatch_dimensions(self):
     part1 = SnapCircuitPart(0, "first part")
     part2 = SnapCircuitPart(2, "second part")
     state = SnapCircuitState((2, 3), [((1, 2, WEST), part1),
                                       ((0, 1, NORTH), part2)])
     part1 = SnapCircuitPart(0, "first part")
     part2 = SnapCircuitPart(2, "second part")
     state_bis = SnapCircuitState((2, 4), [((1, 2, WEST), part1),
                                           ((0, 1, NORTH), part2)])
     self.assertNotEqual(state, state_bis)
Example #2
0
 def test_str(self):
     part1 = SnapCircuitPart(5, "first-part")
     part2 = SnapCircuitPart(2, "second part")
     state = SnapCircuitState((2, 3), [((1, 2, WEST), part1)])
     self.assertEqual(str(state), "{first-part<5> at (1, 2) oriented west}")
     state = SnapCircuitState((2, 3), [((1, 2, WEST), part1),
                                       ((0, 1, NORTH), part2)])
     self.assertEqual(
         str(state), "{first-part<5> at (1, 2) oriented west, "
         "second part<2> at (0, 1) oriented north}")
Example #3
0
 def test_parts(self):
     part1 = SnapCircuitPart(0, "first part")
     part2 = SnapCircuitPart(2, "second part")
     state = SnapCircuitState((2, 3), [((1, 2, WEST), part1),
                                       ((0, 1, NORTH), part2)])
     state.N_PARTS = 3
     expected_features = np.zeros((state.n_dim))
     i = WEST + state.N_ORIENTATIONS * (2 + state.board_cols *
                                        (1 + state.board_rows * part1.id))
     expected_features[i] = 1
     i = NORTH + state.N_ORIENTATIONS * (1 + state.board_cols *
                                         (0 + state.board_rows * part2.id))
     expected_features[i] = 1
     np.testing.assert_equal(expected_features, state.get_features())
Example #4
0
def path_make_L(position):
    assert (position[0] < BOARD[0] - 2)  # L impossible on last two rows
    assert (position[1] < BOARD[1] - 1)  # L impossible on last column
    part0 = SnapCircuitPart(0, '2')
    part1 = SnapCircuitPart(1, '2')
    location0 = (position[0], position[1], NORTH)
    location1 = (position[0] + 2, position[1], EAST)
    return [
        SnapCircuitState(BOARD, []),
        PlaceAction(BOARD, part0, location0),
        SnapCircuitState(BOARD, [(location0, part0)]),
        PlaceAction(BOARD, part1, location1),
        SnapCircuitState(BOARD, [(location0, part0), (location1, part1)]),
    ]
Example #5
0
 def test_features_one_part(self):
     part1 = SnapCircuitPart(5, "first part")
     state = SnapCircuitState((2, 3), [((1, 2, WEST), part1)])
     features = state.features
     self.assertEqual(features[5, 1, 2, WEST], 1)
     features[5, 1, 2, WEST] = 0
     self.assertTrue((features == 0).all())
Example #6
0
 def setUp(self):
     self.part = SnapCircuitPart(1, '2')
     self.location = (2, 3, NORTH)
Example #7
0
 def test_is_there_false_wrong_part(self):
     cond = PartPresenceCondition(BOARD, self.part, self.location)
     state = SnapCircuitState(BOARD,
                              [(self.location, SnapCircuitPart(0, '2'))])
     self.assertFalse(cond.check(state))