Exemple #1
0
    def test_single_ca(self):
        """
        Test single CA model.

        Run vanilla GoL for 1000 steps and make sure board checksum is correct.

        """
        for _ in range(self.num_runs):
            model = GameOfLife(GOLExperiment)
            for _ in range(self.num_steps):
                model.step()
            cells = model.gpu.arrays.cells.get()[:model.cells_num]
            checksum = binascii.crc32(cells)
            self.assertEqual(2981695958, checksum, "Wrong field checksum.")
 def test_random_full(self):
     """Test omitted size and position behavior."""
     bsca = GameOfLife(TestExperiment)
     vals = {'state': RandInt(0, 1)}
     pattern = BigBang(vals=vals)
     cells = np.zeros((10000, ), dtype=np.int32)
     pattern.generate(cells, bsca)
     self.assertGreater(np.sum(cells), 0, "Empty board.")
 def test_wrong_pos(self):
     """Test position auto-correction to make area fit to field."""
     bsca = GameOfLife(TestExperiment)
     vals = {'state': RandInt(0, 1)}
     pattern = BigBang(pos=(90, 90), size=(20, 20), vals=vals)
     cells = np.zeros((10000, ), dtype=np.int32)
     pattern.generate(cells, bsca)
     self.assertEqual(pattern.pos[0], 80, "Wrong X position.")
     self.assertEqual(pattern.pos[1], 80, "Wrong Y position.")
Exemple #4
0
 def test_multiple_ca(self):
     """Test two CellularAutomaton instances could be ran in parallel."""
     mod1 = GameOfLife(GOLExperiment)
     mod2 = GameOfLife(GOLExperiment)
     for _ in range(self.num_steps):
         mod1.step()
         mod2.step()
     checksum = binascii.crc32(mod1.gpu.arrays.cells.get()[:mod1.cells_num])
     self.assertEqual(2981695958, checksum, "Wrong field checksum (CA #1).")
     checksum = binascii.crc32(mod2.gpu.arrays.cells.get()[:mod2.cells_num])
     self.assertEqual(2981695958, checksum, "Wrong field checksum (CA #2).")
 def test_2d(self):
     """Test same field is generated with same seed."""
     bsca = GameOfLife(TestExperiment)
     vals = {'state': RandInt(0, 1)}
     seed = PrimordialSoup(vals=vals)
     cells = np.zeros((10000, ), dtype=np.int32)
     seed.random = LocalRandom("test")
     seed.generate(cells, bsca)
     self.assertEqual(binascii.crc32(cells[:10000]), 1648433356,
                      "Wrong field checksum.")
Exemple #6
0
 def test_load_random(self):
     """Save CA and test it's RNG state is identical after load."""
     ca1 = GameOfLife(GOLExperiment)
     ca1.save("test.ca")
     ca2 = GameOfLife(GOLExperiment)
     ca2.load("test.ca")
     self.assertEqual(ca1.random.standard.randint(1, 1000),
                      ca2.random.standard.randint(1, 1000),
                      "Wrong standard RNG state.")
     self.assertEqual(ca1.random.numpy.randint(1, 1000),
                      ca2.random.numpy.randint(1, 1000),
                      "Wrong numpy RNG state.")
     os.remove("test.ca")
 def test_2d(self):
     """Test all cells are inside region after generation."""
     bsca = GameOfLife(TestExperiment)
     cells = bsca.gpu.arrays.cells.get()[:bsca.cells_num]
     pos = (32, 20)
     size = (10, 10)
     for i in np.where(cells == 1)[0]:
         coord_x, coord_y = self.index_to_coord(i)
         self.assertGreaterEqual(coord_x, pos[0], "Wrong right bound.")
         self.assertGreaterEqual(coord_y, pos[1], "Wrong upper bound.")
         self.assertLessEqual(coord_x, size[0] + pos[0],
                              "Wrong left bound.")
         self.assertLessEqual(coord_y, size[1] + pos[1],
                              "Wrong lower bound.")
Exemple #8
0
 def test_pause(self):
     """Test CA is not evolving when paused."""
     model = GameOfLife(GOLExperiment)
     model.paused = False
     cells_num = model.cells_num
     cells = model.gpu.arrays.cells.get()[:cells_num]
     checksum_before = binascii.crc32(cells)
     model.step()
     cells = model.gpu.arrays.cells.get()[:cells_num]
     checksum_after = binascii.crc32(cells)
     self.assertNotEqual(checksum_before, checksum_after, "CA is paused.")
     model.paused = True
     checksum_before = checksum_after
     model.step()
     cells = model.gpu.arrays.cells.get()[:cells_num]
     checksum_after = binascii.crc32(cells)
     self.assertEqual(checksum_before, checksum_after, "CA is not paused.")
Exemple #9
0
    def test_render(self):
        """
        Test basic rendering working.

        Run vanilla GoL for 1000 steps and check resulting image's checksum.

        """
        experiment = GOLExperiment
        experiment.zoom = 1
        model = GameOfLife(experiment)
        model.set_viewport(experiment.size)
        for _ in range(self.num_steps):
            model.step()
        img = model.render()
        self.assertEqual(1955702083, binascii.crc32(img / 255),
                         "Wrong image checksum.")
Exemple #10
0
 def test_wrong_field_size(self):
     """Test wrong field size set in experiment."""
     with self.assertRaises(XenticaException):
         GameOfLife(GOLExperimentBroken)
Exemple #11
0
 def test_save_load(self):
     """Save CA and test it's state is identical after load."""
     ca1 = GameOfLife(GOLExperiment)
     for _ in range(self.num_steps // 2):
         ca1.step()
     ca1.save("test.ca")
     ca2 = GameOfLife(GOLExperiment)
     ca2.load("test.ca")
     for _ in range(self.num_steps // 2):
         ca2.step()
     checksum = binascii.crc32(ca2.gpu.arrays.cells.get()[:ca2.cells_num])
     self.assertEqual(2981695958, checksum, "Wrong field checksum.")
     os.remove("test.ca")
Exemple #12
0
 def setUp(self):
     """Set up necessary things before each test."""
     self.model = GameOfLife(GOLExperiment)
     self.gui = DummyGui()