class RulesTest(unittest.TestCase): def setUp(self): self.matrix = np.zeros((3, 3)) self.index = (1, 1) self.matrix[self.index] = 1 self.mock_life = mock.create_autospec(LifeCounter, spec_set=True, instance=True) self.rules = Rules(self.mock_life) def test_if_alive_will_return_death_for_less_than_2_living_neighbors(self): self.mock_life.count.return_value = 1.0 nt.assert_equals(self.rules.apply(self.index, self.matrix), 0) def test_if_alive_will_return_life_for_2_living_neighbors(self): self.mock_life.count.return_value = 2.0 nt.assert_equals(self.rules.apply(self.index, self.matrix), 1) def test_if_alive_will_return_life_for_3_living_neighbors(self): self.mock_life.count.return_value = 3.0 nt.assert_equals(self.rules.apply(self.index, self.matrix), 1) def test_if_alive_will_return_death_for_4_living_neighbors(self): self.mock_life.count.return_value = 4.0 nt.assert_equals(self.rules.apply(self.index, self.matrix), 0) def test_if_dead_will_return_dead_for_2_living_neighbors(self): self.matrix[self.index] = 0 self.mock_life.count.return_value = 2.0 nt.assert_equals(self.rules.apply(self.index, self.matrix), 0) def test_if_dead_but_has_3_living_neighbors_then_comes_alive(self): self.matrix[self.index] = 0 self.mock_life.count.return_value = 3.0 nt.assert_equals(self.rules.apply(self.index, self.matrix), 1)
def setUp(self): self.matrix = np.zeros((3, 3)) self.index = (1, 1) self.matrix[self.index] = 1 self.mock_life = mock.create_autospec(LifeCounter, spec_set=True, instance=True) self.rules = Rules(self.mock_life)
from game import board from game.rules import Rules if __name__=='__main__': parser = argparse.ArgumentParser(description='Conway`s Game of Life') parser.add_argument('boardfile', type=str) parser.add_argument('-g', '--max-gens', type=int, help='maximum number of generations (default: no limit)', default=None) parser.add_argument('-s', '--sleep-time', type=int, help='sleep time (default: 200 ms)', default=200) parser.add_argument('-w', '--wrap-edges', action='store_true', default=False, help='enable wrapping on board edges') args = parser.parse_args() try: b = board.from_file(args.boardfile) except IOError: print "Could not find board file:", sys.argv[1] sys.exit(1) rules = Rules(wrap=args.wrap_edges) iterations = rules.generations(b) if args.max_gens: iterations = islice(iterations, args.max_gens) for b in rules.take_while_changing(iterations): try: os.system('cls' if os.name == 'nt' else 'clear') print board.to_string(b) time.sleep(args.sleep_time / 1000.) except KeyboardInterrupt: sys.exit(0)