Beispiel #1
0
 def test_validate(self):
     teemap = Teemap()
     self.assertRaises(MapError, teemap.validate)
     group = items.Group()
     group.layers.append(items.TileLayer(game=True))
     teemap.groups.append(group)
     self.assertTrue(teemap.validate())
     group.layers.append(items.TileLayer(game=True))
     self.assertRaises(MapError, teemap.validate)
Beispiel #2
0
 def test_validate(self):
     teemap = Teemap()
     self.assertRaises(MapError, teemap.validate)
     group = items.Group()
     group.layers.append(items.TileLayer(game=True))
     teemap.groups.append(group)
     self.assertTrue(teemap.validate())
     group.layers.append(items.TileLayer(game=True))
     self.assertRaises(MapError, teemap.validate)
Beispiel #3
0
 def setUp(self):
     os.mkdir('test_tmp')
     self.teemap = Teemap('tml/test_maps/vanilla')
Beispiel #4
0
class TestTeemap(unittest.TestCase):
    def setUp(self):
        os.mkdir('test_tmp')
        self.teemap = Teemap('tml/test_maps/vanilla')

    def tearDown(self):
        if os.path.isdir('test_tmp'):
            shutil.rmtree('test_tmp')

    def test_load(self):
        pass
        #with warnings.catch_warnings(record=True) as w:
        #    warnings.simplefilter('always')
        #    Teemap('tml/test_maps/vanilla')
        #    self.assertEqual(len(w), 1)
        #    self.assertTrue(issubclass(w[0].category, UserWarning))
        #    self.assertIn(str(w[0].message), 'External image „test2“ does not exist')
        #assert Teemap('tml/maps/dm1.map')
        #assert Teemap('tml/maps/dm1')

    def test_groups(self):
        self.assertEqual(len(self.teemap.groups), 7)
        names = [None, None, 'Game', 'NamedGroup', None, None, 'OtherGroup']
        for i, group in enumerate(self.teemap.groups):
            self.assertEqual(group.name, names[i])

    def test_layers(self):
        self.assertEqual(len(self.teemap.layers), 6)
        for i, num in enumerate([1, 2, 1, 0, 2, 0, 0]):
            self.assertEqual(len(self.teemap.groups[i].layers), num)

        self.assertIs(self.teemap.groups[0].layers[0], self.teemap.layers[0])
        self.assertIs(self.teemap.groups[1].layers[0], self.teemap.layers[1])
        self.assertIs(self.teemap.groups[1].layers[1], self.teemap.layers[2])
        self.assertIs(self.teemap.groups[2].layers[0], self.teemap.layers[3])
        self.assertIs(self.teemap.groups[4].layers[0], self.teemap.layers[4])
        self.assertIs(self.teemap.groups[4].layers[1], self.teemap.layers[5])

        names = ['TestQuads', 'Quads', 'TestTiles', 'Game', None, 'LastTiles']
        types = [
            'quadlayer', 'quadlayer', 'tilelayer', 'tilelayer', 'tilelayer',
            'tilelayer'
        ]
        for i, layer in enumerate(self.teemap.layers):
            self.assertEqual(layer.type, types[i])
            self.assertEqual(layer.name, names[i])

        for layer in self.teemap.layers:
            if layer.type == 'tilelayer':
                if layer.name == 'TestTiles':
                    self.assertEqual(layer.width, 5)
                    self.assertEqual(layer.height, 3)
                else:
                    self.assertEqual(layer.width, 50)
                    self.assertEqual(layer.height, 50)

        self.assertIs(self.teemap.layers[3], self.teemap.gamelayer)

    def test_envelopes(self):
        self.assertEqual(len(self.teemap.envelopes), 2)
        self.assertEqual(self.teemap.envelopes[0].name, 'PosEnv')
        self.assertEqual(self.teemap.envelopes[1].name, 'ColorEnv')

    def test_envpoints(self):
        self.assertEqual(len(self.teemap.envpoints), 9)
        self.assertEqual(len(self.teemap.envelopes[0].envpoints), 4)
        self.assertEqual(len(self.teemap.envelopes[1].envpoints), 5)

        for i, envpoint in enumerate(self.teemap.envelopes[0].envpoints):
            self.assertIs(envpoint, self.teemap.envpoints[i])
        for i, envpoint in enumerate(self.teemap.envelopes[1].envpoints):
            self.assertIs(envpoint, self.teemap.envpoints[i + 4])

    def test_images(self):
        images = [None, 'grass_main', 'grass_main', None, 'grass_main', 'test']
        for i, layer in enumerate(self.teemap.layers):
            if images[i] is None:
                self.assertIs(layer.image_id, -1)
            else:
                self.assertEqual(self.teemap.images[layer.image_id].name,
                                 images[i])

        self.assertIs(self.teemap.layers[2].image_id, 0)
        self.assertIs(self.teemap.layers[4].image_id, 0)
        self.assertIs(self.teemap.layers[5].image_id, 1)
        self.assertTrue(self.teemap.images[0].external)
        self.assertFalse(self.teemap.images[1].external)
        self.assertTrue(self.teemap.images[2].external)
        self.teemap.images[0].save('test_tmp/grass_main.png')
        self.teemap.images[1].save('test_tmp/test.png')
        self.assertRaises(ValueError, self.teemap.images[2].save,
                          'test_tmp/test2.png')
        self.assertTrue(
            filecmp.cmp('test_tmp/grass_main.png',
                        'tml/mapres/grass_main.png'))
        self.assertTrue(
            filecmp.cmp('test_tmp/test.png', 'tml/test_mapres/test.png'))

    def test_tiles(self):
        layer = self.teemap.layers[2]
        tiles = layer.tiles
        self.assertEqual(len(tiles), 15)

        # XXX: wouldn't be coordinates in layer make more sense?
        for i, tile in enumerate(tiles[:5]):
            self.assertEqual(tile.index, i)
            self.assertEqual(tile.coords, (i, 0))
        for tile in tiles[5:10]:
            self.assertEqual(tile.index, 0)
            self.assertEqual(tile.coords, (0, 0))
        for i, tile in enumerate(tiles[10:]):
            self.assertEqual(tile.index, i + 251)
            self.assertEqual(tile.coords, (11 + i, 15))

        flags = [
            {
                'rotation': False,
                'hflip': True,
                'vflip': False
            },
            {
                'rotation': False,
                'hflip': False,
                'vflip': True
            },
            {
                'rotation': False,
                'hflip': True,
                'vflip': True
            },
            {
                'rotation': True,
                'hflip': True,
                'vflip': True
            },
            {
                'rotation': True,
                'hflip': False,
                'vflip': False
            },
            {
                'rotation': False,
                'hflip': False,
                'vflip': False
            },
        ]
        for i, tile in enumerate(tiles[:6]):
            self.assertEqual(tile.flags, flags[i])

    def test_quads(self):
        self.assertEqual(len(self.teemap.layers[0].quads), 1)
        self.assertEqual(len(self.teemap.layers[1].quads), 2)
        pos_envs = [-1, -1, 0]
        pos_env_offsets = [0, 0, 0]
        color_envs = [-1, -1, 1]
        color_env_offsets = [0, 0, 0]
        points = [[(-800000, -600000), (800000, -600000), (-800000, 600000),
                   (800000, 600000), (32768, 32768)],
                  [(329099, 208820), (608709, 162163), (304402, 515873),
                   (773381, 589973), (361867, 241588)],
                  [(-194633, 306165), (-13007, 301225), (-286028, 556954),
                   (-13007, 492731), (-111637, 400134)]]
        texcoords = [[(0, 0), (1024, 0), (0, 1024), (1024, 1024)],
                     [(0, 0), (1024, 0), (0, 1024), (1024, 1024)],
                     [(2215, -1076), (3204, -1076), (2215, 946), (3204, 946)]]

        quads = []
        for layer in self.teemap.layers:
            if layer.type == 'quadlayer':
                quads.extend(layer.quads)
        for i, quad in enumerate(quads):
            self.assertEqual(quad.pos_env, pos_envs[i])
            self.assertEqual(quad.pos_env_offset, pos_env_offsets[i])
            self.assertEqual(quad.color_env, color_envs[i])
            self.assertEqual(quad.color_env_offset, color_env_offsets[i])
            self.assertEqual(quad.texcoords, texcoords[i])
            self.assertEqual(quad.points, points[i])

    def test_envpoints(self):
        times = [0, 722, 835, 2062, 0, 99, 643, 861, 1000]
        curvetypes = [4, 0, 4, 1, 1, 1, 1, 1, 1]
        values = [[0, 0, 0, 0], [0, 0, 207678, 9600], [0, 0, 213958, 9600],
                  [0, 0, -3105, 0], [1, 1, 1, 767], [1, 355, 514, 843],
                  [1, 289, 995, 959], [824, 143, 86, 597], [1, 1, 1, 1]]
        for i, envpoint in enumerate(self.teemap.envpoints):
            self.assertEqual(envpoint.time, times[i])
            self.assertEqual(envpoint.curvetype, curvetypes[i])
            self.assertEqual(envpoint.values, values[i])

    def test_save(self):
        self.teemap.save('test_tmp/copy.map')
        self.teemap.save('test_tmp/copy2')
        self.assertTrue(
            filecmp.cmp('tml/test_maps/vanilla.map', 'test_tmp/copy.map'))
        self.assertTrue(
            filecmp.cmp('tml/test_maps/vanilla.map', 'test_tmp/copy2.map'))

    def test_validate(self):
        teemap = Teemap()
        self.assertRaises(MapError, teemap.validate)
        group = items.Group()
        group.layers.append(items.TileLayer(game=True))
        teemap.groups.append(group)
        self.assertTrue(teemap.validate())
        group.layers.append(items.TileLayer(game=True))
        self.assertRaises(MapError, teemap.validate)
Beispiel #5
0
 def setUp(self):
     os.mkdir('test_tmp')
     self.teemap = Teemap('tml/test_maps/vanilla')
Beispiel #6
0
class TestTeemap(unittest.TestCase):

    def setUp(self):
        os.mkdir('test_tmp')
        self.teemap = Teemap('tml/test_maps/vanilla')

    def tearDown(self):
        if os.path.isdir('test_tmp'):
            shutil.rmtree('test_tmp')

    def test_load(self):
        pass
        #with warnings.catch_warnings(record=True) as w:
        #    warnings.simplefilter('always')
        #    Teemap('tml/test_maps/vanilla')
        #    self.assertEqual(len(w), 1)
        #    self.assertTrue(issubclass(w[0].category, UserWarning))
        #    self.assertIn(str(w[0].message), 'External image „test2“ does not exist')
        #assert Teemap('tml/maps/dm1.map')
        #assert Teemap('tml/maps/dm1')

    def test_groups(self):
        self.assertEqual(len(self.teemap.groups), 7)
        names = [None, None, 'Game', 'NamedGroup', None, None, 'OtherGroup']
        for i, group in enumerate(self.teemap.groups):
            self.assertEqual(group.name, names[i])

    def test_layers(self):
        self.assertEqual(len(self.teemap.layers), 6)
        for i, num in enumerate([1,2,1,0,2,0,0]):
            self.assertEqual(len(self.teemap.groups[i].layers), num)

        self.assertIs(self.teemap.groups[0].layers[0], self.teemap.layers[0])
        self.assertIs(self.teemap.groups[1].layers[0], self.teemap.layers[1])
        self.assertIs(self.teemap.groups[1].layers[1], self.teemap.layers[2])
        self.assertIs(self.teemap.groups[2].layers[0], self.teemap.layers[3])
        self.assertIs(self.teemap.groups[4].layers[0], self.teemap.layers[4])
        self.assertIs(self.teemap.groups[4].layers[1], self.teemap.layers[5])

        names = ['TestQuads', 'Quads', 'TestTiles', 'Game', None, 'LastTiles']
        types = ['quadlayer', 'quadlayer', 'tilelayer', 'tilelayer',
                   'tilelayer', 'tilelayer']
        for i, layer in enumerate(self.teemap.layers):
            self.assertEqual(layer.type, types[i])
            self.assertEqual(layer.name, names[i])

        for layer in self.teemap.layers:
            if layer.type == 'tilelayer':
                if layer.name == 'TestTiles':
                    self.assertEqual(layer.width, 5)
                    self.assertEqual(layer.height, 3)
                else:
                    self.assertEqual(layer.width, 50)
                    self.assertEqual(layer.height, 50)

        self.assertIs(self.teemap.layers[3], self.teemap.gamelayer)

    def test_envelopes(self):
        self.assertEqual(len(self.teemap.envelopes), 2)
        self.assertEqual(self.teemap.envelopes[0].name, 'PosEnv')
        self.assertEqual(self.teemap.envelopes[1].name, 'ColorEnv')

    def test_envpoints(self):
        self.assertEqual(len(self.teemap.envpoints), 9)
        self.assertEqual(len(self.teemap.envelopes[0].envpoints), 4)
        self.assertEqual(len(self.teemap.envelopes[1].envpoints), 5)

        for i, envpoint in enumerate(self.teemap.envelopes[0].envpoints):
            self.assertIs(envpoint, self.teemap.envpoints[i])
        for i, envpoint in enumerate(self.teemap.envelopes[1].envpoints):
            self.assertIs(envpoint, self.teemap.envpoints[i+4])

    def test_images(self):
        images = [None, 'grass_main', 'grass_main', None, 'grass_main', 'test']
        for i, layer in enumerate(self.teemap.layers):
            if images[i] is None:
                self.assertIs(layer.image_id, -1)
            else:
                self.assertEqual(self.teemap.images[layer.image_id].name,
                                 images[i])

        self.assertIs(self.teemap.layers[2].image_id, 0)
        self.assertIs(self.teemap.layers[4].image_id, 0)
        self.assertIs(self.teemap.layers[5].image_id, 1)
        self.assertTrue(self.teemap.images[0].external)
        self.assertFalse(self.teemap.images[1].external)
        self.assertTrue(self.teemap.images[2].external)
        self.teemap.images[0].save('test_tmp/grass_main.png')
        self.teemap.images[1].save('test_tmp/test.png')
        self.assertRaises(ValueError, self.teemap.images[2].save,
                          'test_tmp/test2.png')
        self.assertTrue(filecmp.cmp('test_tmp/grass_main.png',
                                    'tml/mapres/grass_main.png'))
        self.assertTrue(filecmp.cmp('test_tmp/test.png',
                                    'tml/test_mapres/test.png'))

    def test_tiles(self):
        layer = self.teemap.layers[2]
        tiles = layer.tiles
        self.assertEqual(len(tiles), 15)

        # XXX: wouldn't be coordinates in layer make more sense?
        for i, tile in enumerate(tiles[:5]):
            self.assertEqual(tile.index, i)
            self.assertEqual(tile.coords, (i, 0))
        for tile in tiles[5:10]:
            self.assertEqual(tile.index, 0)
            self.assertEqual(tile.coords, (0, 0))
        for i, tile in enumerate(tiles[10:]):
            self.assertEqual(tile.index, i + 251)
            self.assertEqual(tile.coords, (11 + i, 15))

        flags = [
            {'rotation': False, 'hflip': True, 'vflip': False},
            {'rotation': False, 'hflip': False, 'vflip': True},
            {'rotation': False, 'hflip': True, 'vflip': True},
            {'rotation': True, 'hflip': True, 'vflip': True},
            {'rotation': True, 'hflip': False, 'vflip': False},
            {'rotation': False, 'hflip': False, 'vflip': False},
        ]
        for i, tile in enumerate(tiles[:6]):
            self.assertEqual(tile.flags, flags[i])

    def test_quads(self):
        self.assertEqual(len(self.teemap.layers[0].quads), 1)
        self.assertEqual(len(self.teemap.layers[1].quads), 2)
        pos_envs = [-1, -1, 0]
        pos_env_offsets = [0, 0, 0]
        color_envs = [-1, -1, 1]
        color_env_offsets = [0, 0, 0]
        points = [
            [
                (-800000, -600000),
                (800000, -600000),
                (-800000, 600000),
                (800000, 600000),
                (32768, 32768)
            ], [
                (329099, 208820),
                (608709, 162163),
                (304402, 515873),
                (773381, 589973),
                (361867, 241588)
            ], [
                (-194633, 306165),
                (-13007, 301225),
                (-286028, 556954),
                (-13007, 492731),
                (-111637, 400134)
            ]
        ]
        texcoords = [
            [
                (0, 0),
                (1024, 0),
                (0, 1024),
                (1024, 1024)
            ], [
                (0, 0),
                (1024, 0),
                (0, 1024),
                (1024, 1024)
            ], [
                (2215, -1076),
                (3204, -1076),
                (2215, 946),
                (3204, 946)
            ]
        ]

        quads = []
        for layer in self.teemap.layers:
            if layer.type == 'quadlayer':
                quads.extend(layer.quads)
        for i, quad in enumerate(quads):
            self.assertEqual(quad.pos_env, pos_envs[i])
            self.assertEqual(quad.pos_env_offset, pos_env_offsets[i])
            self.assertEqual(quad.color_env, color_envs[i])
            self.assertEqual(quad.color_env_offset, color_env_offsets[i])
            self.assertEqual(quad.texcoords, texcoords[i])
            self.assertEqual(quad.points, points[i])

    def test_envpoints(self):
        times = [0, 722, 835, 2062, 0, 99, 643, 861, 1000]
        curvetypes = [4, 0, 4, 1, 1, 1, 1, 1, 1]
        values = [
            [0, 0, 0, 0],
            [0, 0, 207678, 9600],
            [0, 0, 213958, 9600],
            [0, 0, -3105, 0],
            [1, 1, 1, 767],
            [1, 355, 514, 843],
            [1,  289, 995, 959],
            [824, 143, 86, 597],
            [1, 1, 1, 1]
        ]
        for i, envpoint in enumerate(self.teemap.envpoints):
            self.assertEqual(envpoint.time, times[i])
            self.assertEqual(envpoint.curvetype, curvetypes[i])
            self.assertEqual(envpoint.values, values[i])

    def test_save(self):
        self.teemap.save('test_tmp/copy.map')
        self.teemap.save('test_tmp/copy2')
        self.assertTrue(filecmp.cmp('tml/test_maps/vanilla.map',
                                    'test_tmp/copy.map'))
        self.assertTrue(filecmp.cmp('tml/test_maps/vanilla.map',
                                    'test_tmp/copy2.map'))
    def test_validate(self):
        teemap = Teemap()
        self.assertRaises(MapError, teemap.validate)
        group = items.Group()
        group.layers.append(items.TileLayer(game=True))
        teemap.groups.append(group)
        self.assertTrue(teemap.validate())
        group.layers.append(items.TileLayer(game=True))
        self.assertRaises(MapError, teemap.validate)