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)
Esempio n. 3
0
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)