def test_inverse(self): s = cube2x2.initial_state for a in cube2x2.Action: s = cube2x2.transform(s, a) r = cube2x2.render(s) s = cube2x2.transform(s, cube2x2.inverse_action(a)) r2 = cube2x2.render(s) self.assertEqual(s, cube2x2.initial_state)
def test_inverse_back(self): s = cube2x2.initial_state s = cube2x2.transform(s, cube2x2.Action.B) s = cube2x2.transform(s, cube2x2.Action.b) self.assertEqual(s, cube2x2.initial_state) s = cube2x2.initial_state s = cube2x2.transform(s, cube2x2.Action.b) s = cube2x2.transform(s, cube2x2.Action.B) self.assertEqual(s, cube2x2.initial_state)
def test_inverse_down(self): s = cube2x2.initial_state s = cube2x2.transform(s, cube2x2.Action.D) s = cube2x2.transform(s, cube2x2.Action.d) self.assertEqual(s, cube2x2.initial_state) s = cube2x2.initial_state s = cube2x2.transform(s, cube2x2.Action.d) s = cube2x2.transform(s, cube2x2.Action.D) self.assertEqual(s, cube2x2.initial_state)
def test_inverse_front(self): s = cube2x2.initial_state s = cube2x2.transform(s, cube2x2.Action.F) s = cube2x2.transform(s, cube2x2.Action.f) self.assertEqual(s, cube2x2.initial_state) s = cube2x2.initial_state s = cube2x2.transform(s, cube2x2.Action.f) s = cube2x2.transform(s, cube2x2.Action.F) self.assertEqual(s, cube2x2.initial_state)
def test_inverse_top(self): s = cube2x2.initial_state s = cube2x2.transform(s, cube2x2.Action.T) s = cube2x2.transform(s, cube2x2.Action.t) self.assertEqual(s, cube2x2.initial_state) s = cube2x2.initial_state s = cube2x2.transform(s, cube2x2.Action.t) s = cube2x2.transform(s, cube2x2.Action.T) self.assertEqual(s, cube2x2.initial_state)
def test_inverse_left(self): s = cube2x2.initial_state s = cube2x2.transform(s, cube2x2.Action.L) s = cube2x2.transform(s, cube2x2.Action.l) self.assertEqual(s, cube2x2.initial_state) s = cube2x2.initial_state s = cube2x2.transform(s, cube2x2.Action.l) s = cube2x2.transform(s, cube2x2.Action.L) self.assertEqual(s, cube2x2.initial_state)
def test_inverse_right(self): s = cube2x2.initial_state s = cube2x2.transform(s, cube2x2.Action.R) s = cube2x2.transform(s, cube2x2.Action.r) self.assertEqual(s, cube2x2.initial_state) s = cube2x2.initial_state s = cube2x2.transform(s, cube2x2.Action.r) s = cube2x2.transform(s, cube2x2.Action.R) self.assertEqual(s, cube2x2.initial_state)
def test_sequence(self): acts = [cube2x2.Action.R, cube2x2.Action.t, cube2x2.Action.R, cube2x2.Action.D, cube2x2.Action.F, cube2x2.Action.d, cube2x2.Action.T, cube2x2.Action.R, cube2x2.Action.D, cube2x2.Action.F] s = cube2x2.initial_state for a in acts: s = cube2x2.transform(s, a) r = cube2x2.render(s) for a in reversed(acts): s = cube2x2.transform(s, cube2x2.inverse_action(a)) r = cube2x2.render(s) self.assertEqual(s, cube2x2.initial_state)
def test_random(self): s = cube2x2.initial_state for _ in range(200): a = cube2x2.Action(random.randrange(len(cube2x2.Action))) s = cube2x2.transform(s, a) tgt = np.zeros(shape=cube2x2.encoded_shape) cube2x2.encode_inplace(tgt, s) self.assertEqual(tgt.sum(), 8)
def test_left_rev(self): s = cube2x2.initial_state s = cube2x2.transform(s, cube2x2.Action.l) r = cube2x2.render(s) self.assertEqual(r.back, ["O", "W"] * 2) self.assertEqual(r.bottom, ["O", "Y"] * 2) self.assertEqual(r.front, ["Y", "R"] * 2) self.assertEqual(r.left, ["G"] * 4) self.assertEqual(r.right, ["B"] * 4) self.assertEqual(r.top, ["R", "W"] * 2)
def test_left_rev(self): s = cube2x2.initial_state s = cube2x2.transform(s, cube2x2.Action.l) r = cube2x2.render(s) self.assertEqual(r.back, ['O', 'W'] * 2) self.assertEqual(r.bottom, ['O', 'Y'] * 2) self.assertEqual(r.front, ['Y', 'R'] * 2) self.assertEqual(r.left, ['G'] * 4) self.assertEqual(r.right, ['B'] * 4) self.assertEqual(r.top, ['R', 'W'] * 2)