def test_reversi__demo(self): class TestWindow: def __init__(self): class Start: def __init__(self): class Event: def __init__(self): self.is_set = None def clear(self): print('clear') self.event = Event() self.start = Start() def demo_animation_false(): return False app = Reversi() app.window = TestWindow() # event is_set True and demo_anumation_true app.window.start.event.is_set = lambda: True with captured_stdout() as stdout: app._Reversi__demo() lines = stdout.getvalue().splitlines() self.assertEqual(lines[0], 'clear') self.assertEqual(app.state, Reversi.PLAY) # event is_set False and demo_anumation_false app.window.start.event.is_set = lambda: False app._demo_animation = demo_animation_false with captured_stdout() as stdout: app._Reversi__demo() lines = stdout.getvalue().splitlines() with self.assertRaises(IndexError): print(lines[0]) self.assertEqual(app.state, Reversi.INIT)
def test_reversi_demo_animation(self): class TestWindow: def __init__(self): class Board: def __init__(self): self.size = 8 def remove_disc(self, color, x, y): print('remove_disc', color, x, y) def put_disc(self, color, x, y): print('put_disc', color, x, y) self.board = Board() app = Reversi(turn_disc_wait=0.001) app.window = TestWindow() # setting_changed Falase app._setting_changed = lambda: False with captured_stdout() as stdout: ret = app._demo_animation() lines = stdout.getvalue().splitlines() self.assertEqual(lines[0], 'remove_disc black 4 3') self.assertEqual(lines[1], 'put_disc turnblack 4 3') self.assertEqual(lines[2], 'remove_disc turnblack 4 3') self.assertEqual(lines[3], 'put_disc white 4 3') self.assertEqual(lines[4], 'remove_disc white 4 3') self.assertEqual(lines[5], 'put_disc turnwhite 4 3') self.assertEqual(lines[6], 'remove_disc turnwhite 4 3') self.assertEqual(lines[7], 'put_disc black 4 3') self.assertEqual(lines[8], 'remove_disc black 3 4') self.assertEqual(lines[9], 'put_disc turnblack 3 4') self.assertEqual(lines[10], 'remove_disc turnblack 3 4') self.assertEqual(lines[11], 'put_disc white 3 4') self.assertEqual(lines[12], 'remove_disc white 3 4') self.assertEqual(lines[13], 'put_disc turnwhite 3 4') self.assertEqual(lines[14], 'remove_disc turnwhite 3 4') self.assertEqual(lines[15], 'put_disc black 3 4') self.assertEqual(lines[16], 'remove_disc white 3 3') self.assertEqual(lines[17], 'put_disc turnwhite 3 3') self.assertEqual(lines[18], 'remove_disc turnwhite 3 3') self.assertEqual(lines[19], 'put_disc black 3 3') self.assertEqual(lines[20], 'remove_disc black 3 3') self.assertEqual(lines[21], 'put_disc turnblack 3 3') self.assertEqual(lines[22], 'remove_disc turnblack 3 3') self.assertEqual(lines[23], 'put_disc white 3 3') self.assertEqual(lines[24], 'remove_disc white 4 4') self.assertEqual(lines[25], 'put_disc turnwhite 4 4') self.assertEqual(lines[26], 'remove_disc turnwhite 4 4') self.assertEqual(lines[27], 'put_disc black 4 4') self.assertEqual(lines[28], 'remove_disc black 4 4') self.assertEqual(lines[29], 'put_disc turnblack 4 4') self.assertEqual(lines[30], 'remove_disc turnblack 4 4') self.assertEqual(lines[31], 'put_disc white 4 4') with self.assertRaises(IndexError): print(lines[32]) self.assertEqual(ret, True) # setting_changed True app._setting_changed = lambda: True with captured_stdout() as stdout: ret = app._demo_animation() lines = stdout.getvalue().splitlines() with self.assertRaises(IndexError): print(lines[0]) self.assertEqual(ret, False)