def test_dict_import(filename, has_gzip, out_filename): dct = json.load(open(get_test_filename(filename.replace('.tmx', '.json')))) map = tmxlib.Map.from_dict(dct, base_path=base_path) # Check JSON roundtrip result_dct = map.to_dict() assert_json_safe_almost_equal(result_dct, dct) # Check XML roundtrip if has_gzip and sys.version_info < (2, 7): raise pytest.skip('Cannot test gzip on Python 2.6: missing mtime arg') xml = file_contents(get_test_filename(filename)) xml_map = tmxlib.Map.load(xml, base_path=base_path) xml = file_contents(get_test_filename(out_filename)) # Have to copy presentation attrs, since those aren't in the JSON # Also, load images for layer, xml_layer in zip(map.layers, xml_map.layers): layer.compression = getattr(xml_layer, 'compression', None) layer.mtime = 0 if map_loadable(filename) and layer.type == 'image': layer.image.load_image() for tileset, xml_tileset in zip(map.tilesets, xml_map.tilesets): tileset.source = xml_tileset.source if map_loadable( filename) and tileset.type == 'image' and tileset.image: tileset.image.load_image() dumped = map.dump() assert_xml_compare(xml, dumped)
def test_dict_import(filename, has_gzip, out_filename, map_loadable): dct = json.load(open(get_test_filename(filename.replace('.tmx', '.json')))) map = tmxlib.Map.from_dict(dct, base_path=base_path) # Check JSON roundtrip result_dct = map.to_dict() assert_json_safe_almost_equal(result_dct, dct) # Check XML roundtrip if has_gzip and sys.version_info < (2, 7): raise pytest.skip('Cannot test gzip on Python 2.6: missing mtime arg') xml = file_contents(get_test_filename(filename)) xml_map = tmxlib.Map.load(xml, base_path=base_path) xml = file_contents(get_test_filename(out_filename)) # Have to copy presentation attrs, since those aren't in the JSON # Also, load images for layer, xml_layer in zip(map.layers, xml_map.layers): layer.compression = getattr(xml_layer, 'compression', None) layer.mtime = 0 if map_loadable and layer.type == 'image': layer.image.load_image() for tileset, xml_tileset in zip(map.tilesets, xml_map.tilesets): tileset.source = xml_tileset.source if map_loadable and tileset.type == 'image' and tileset.image: tileset.image.load_image() dumped = map.dump() assert_xml_compare(xml, dumped)
def test_roundtrip_readwrite(filename, has_gzip, out_filename): if has_gzip and sys.version_info < (2, 7): raise pytest.skip('Cannot test gzip on Python 2.6: missing mtime arg') xml = file_contents(get_test_filename(filename)) map = tmxlib.Map.load(xml, base_path=base_path) for layer in map.layers: # normalize mtime, for Gzip layer.mtime = 0 dumped = map.dump() if out_filename != filename: xml = file_contents(get_test_filename(out_filename)) assert_xml_compare(xml, dumped)
def test_dict_export(test_map_data): filename, has_gzip, output_filename = test_map_data xml = file_contents(get_test_filename(filename)) map = tmxlib.Map.load(xml, base_path=base_path) dct = json.load(open(get_test_filename(filename.replace('.tmx', '.json')))) result = map.to_dict() assert_json_safe_almost_equal(result, dct)
def test_roundtrip_opensave(filename, has_gzip, out_filename): if has_gzip and sys.version_info < (2, 7): raise pytest.skip('Cannot test gzip on Python 2.6: missing mtime arg') filename = get_test_filename(filename) out_filename = get_test_filename(out_filename) map = tmxlib.Map.open(filename) for layer in map.layers: # normalize mtime, for Gzip layer.mtime = 0 temporary_file = tempfile.NamedTemporaryFile(delete=False) map.check_consistency() try: temporary_file.close() map.save(temporary_file.name) assert_xml_compare(file_contents(out_filename), file_contents(temporary_file.name)) finally: os.unlink(temporary_file.name)
def test_del_tileset(): filename = get_test_filename('walls_and_desert.tmx') testmap = tmxlib.Map.open(filename) with pytest.raises(tmxlib.UsedTilesetError): del testmap.tilesets['Walls'] # Ensure deleting did not mess up anything dumped = testmap.dump() xml = file_contents(filename) assert_xml_compare(xml, dumped)
def load_image(image_class, name): filename = get_test_filename(name) data = file_contents(filename) return image_class(data=data, source=filename)
def colorcorners_image(image_class): filename = get_test_filename('colorcorners.png') data = file_contents(filename) return image_class(data=data, source=filename)