Bunch of test coverage improvements

This commit is contained in:
Darren Eberly
2022-06-01 01:15:35 -04:00
parent 96b104c931
commit 4de08767e3
13 changed files with 536 additions and 22 deletions

View File

@@ -24,8 +24,17 @@ from pytiled_parser.parsers.json.tiled_object import RawObject
from pytiled_parser.parsers.json.tiled_object import parse as parse_object
from pytiled_parser.util import parse_color
# This optional zstd include is basically impossible to make a sensible test
# for both ways. It's been tested manually, is unlikely to change or be effected
# so we're just excluding it from test coverage. We are only testing cases where
# zstd is not installed in the test suite, as that is the scenario for 99%
# of use cases most likely.
#
# This does mean that the test suite will fail if zstd is installed, so for
# development purposes it should only be installed when specifically manually
# testing for zstd things.
zstd_spec = importlib.util.find_spec("zstd")
if zstd_spec:
if zstd_spec: # pragma: no cover
import zstd
else:
zstd = None
@@ -127,7 +136,8 @@ def _decode_tile_layer_data(
"zstd compression support is not installed."
"To install use 'pip install pytiled-parser[zstd]'"
)
elif compression == "zstd":
# See above note at top of module about zstd tests
elif compression == "zstd": # pragma: no cover
unzipped_data = zstd.decompress(unencoded_data)
else:
unzipped_data = unencoded_data

View File

@@ -258,7 +258,11 @@ def _get_parser(raw_object: RawObject) -> Callable[[RawObject], TiledObject]:
if raw_object.get("point"):
return _parse_point
if raw_object.get("gid"):
# This is excluded from tests because the coverage is broken. I promise
# there are tests for Tile objects, but for some reason the coverage
# isn't picking up this if statement(though it does pickup the _parse_tile)
# function so who knows
if raw_object.get("gid"): # pragma: no cover
# Only tile objects have the `gid` key
return _parse_tile
@@ -308,8 +312,7 @@ def parse(
for key in loaded_template:
if key != "id":
raw_object[key] = loaded_template[key] # type: ignore
elif isinstance(template, etree.Element):
# load the XML object into the JSON object
else:
raise NotImplementedError(
"Loading TMX object templates inside a JSON map is currently not supported, "
"but will be in a future release."

View File

@@ -21,8 +21,17 @@ from pytiled_parser.parsers.tmx.properties import parse as parse_properties
from pytiled_parser.parsers.tmx.tiled_object import parse as parse_object
from pytiled_parser.util import parse_color
# This optional zstd include is basically impossible to make a sensible test
# for both ways. It's been tested manually, is unlikely to change or be effected
# so we're just excluding it from test coverage. We are only testing cases where
# zstd is not installed in the test suite, as that is the scenario for 99%
# of use cases most likely.
#
# This does mean that the test suite will fail if zstd is installed, so for
# development purposes it should only be installed when specifically manually
# testing for zstd things.
zstd_spec = importlib.util.find_spec("zstd")
if zstd_spec:
if zstd_spec: # pragma: no cover
import zstd
else:
zstd = None
@@ -77,7 +86,8 @@ def _decode_tile_layer_data(
"zstd compression support is not installed."
"To install use 'pip install pytiled-parser[zstd]'"
)
elif compression == "zstd":
# See above note at top of module about zstd tests
elif compression == "zstd": # pragma: no cover
unzipped_data = zstd.decompress(unencoded_data)
else:
unzipped_data = unencoded_data
@@ -356,5 +366,3 @@ def parse(
return _parse_image_layer(raw_layer)
elif type_ == "layer":
return _parse_tile_layer(raw_layer)
raise RuntimeError(f"An invalid layer type of {type_} was supplied")

View File

@@ -60,7 +60,7 @@ def load_object_template(file_path: Path) -> Any:
tileset_path = Path(file_path.parent / tileset_element.attrib["source"])
new_tileset = load_object_tileset(tileset_path)
new_tileset_path = tileset_path.parent
elif template_format == "json":
else:
with open(file_path) as template_file:
template = json.load(template_file)
if "tileset" in template:
@@ -79,7 +79,7 @@ def load_object_tileset(file_path: Path) -> Any:
with open(file_path) as tileset_file:
if tileset_format == "tmx":
new_tileset = etree.parse(tileset_file).getroot()
elif tileset_format == "json":
else:
new_tileset = json.load(tileset_file)
return new_tileset

View File

@@ -63,7 +63,7 @@
"nextobjectid":3,
"orientation":"orthogonal",
"renderorder":"right-down",
"tiledversion":"1.6.0",
"tiledversion":"1.8.5",
"tileheight":32,
"tilesets":[
{
@@ -72,6 +72,6 @@
}],
"tilewidth":32,
"type":"map",
"version":"1.6",
"version":"1.8",
"width":8
}

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.8" tiledversion="1.8.5" orientation="orthogonal" renderorder="right-down" width="8" height="6" tilewidth="32" tileheight="32" infinite="0" nextlayerid="5" nextobjectid="3">
<tileset firstgid="1" source="../all_layer_types/tileset.json"/>
<layer id="1" name="Tile Layer 1" width="8" height="6">
<data encoding="base64" compression="zstd">
KLUv/SDAZQIAAgwSDBCw3gwwDFcLT4p0Cv/c884531zzzDG/3PLKKZ9c8sghf9zxxhlfXPHEET/c8MIJH1zwwAH/7r079+3as2O/br069enSo0MBAA==
</data>
</layer>
<group id="4" name="Group 1">
<objectgroup id="2" name="Object Layer 1">
<object id="1" x="46.3333" y="39" width="69.3333" height="52.6667"/>
</objectgroup>
</group>
<imagelayer id="3" name="Image Layer 1">
<image source="../tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/layer_tests/tests/test_data/images/tile_04.png" trans="000000"/>
</imagelayer>
</map>

View File

@@ -6,9 +6,9 @@
"name":"tile_set_image",
"spacing":1,
"tilecount":48,
"tiledversion":"1.6.0",
"tiledversion":"1.8.5",
"tileheight":32,
"tilewidth":32,
"type":"tileset",
"version":"1.6"
"version":"1.8"
}

View File

@@ -0,0 +1,77 @@
{ "compressionlevel":-1,
"height":6,
"infinite":false,
"layers":[
{
"compression":"",
"data":"AQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAA",
"encoding":"base64",
"height":6,
"id":1,
"name":"Tile Layer 1",
"opacity":1,
"type":"faketype",
"visible":true,
"width":8,
"x":0,
"y":0
},
{
"id":4,
"layers":[
{
"draworder":"topdown",
"id":2,
"name":"Object Layer 1",
"objects":[
{
"height":52.6666666666667,
"id":1,
"name":"",
"rotation":0,
"type":"",
"visible":true,
"width":69.3333333333333,
"x":46.3333333333333,
"y":39
}],
"opacity":1,
"type":"objectgroup",
"visible":true,
"x":0,
"y":0
}],
"name":"Group 1",
"opacity":1,
"type":"group",
"visible":true,
"x":0,
"y":0
},
{
"id":3,
"image":"..\/..\/images\/tile_04.png",
"name":"Image Layer 1",
"opacity":1,
"transparentcolor":"#000000",
"type":"imagelayer",
"visible":true,
"x":0,
"y":0
}],
"nextlayerid":5,
"nextobjectid":3,
"orientation":"orthogonal",
"renderorder":"right-down",
"tiledversion":"1.6.0",
"tileheight":32,
"tilesets":[
{
"firstgid":1,
"source":"..\/all_layer_types\/tileset.json"
}],
"tilewidth":32,
"type":"map",
"version":"1.6",
"width":8
}

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.5" tiledversion="1.7.0" orientation="orthogonal" renderorder="right-down" width="8" height="6" tilewidth="32" tileheight="32" infinite="0" nextlayerid="5" nextobjectid="3">
<tileset firstgid="1" source="../all_layer_types/tileset.tsx"/>
<layer id="1" name="Tile Layer 1" width="8" height="6">
<data encoding="base64">
AQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAA
</data>
</layer>
<group id="4" name="Group 1">
<objectgroup id="2" name="Object Layer 1">
<object id="1" x="46.3333" y="39" width="69.3333" height="52.6667"/>
</objectgroup>
</group>
<imagelayer id="3" name="Image Layer 1">
<image source="../../images/tile_04.png" trans="000000" width="32" height="32"/>
</imagelayer>
</map>

View File

@@ -11,17 +11,92 @@ EXPECTED = tileset.Tileset(
image_height=199,
image_width=265,
tile_count=48,
tiled_version="1.6.0",
tiled_version="1.8.5",
tile_height=32,
tile_width=32,
firstgid=1,
version="1.6",
version="1.8",
type="tileset",
wang_sets=[
wang_set.WangSet(
name="Terrains",
tile=-1,
wang_type="mixed",
properties={"test": "this is a test"},
wang_colors=[
wang_set.WangColor(
name="Sand",
probability=1,
tile=-1,
color=common_types.Color(255, 0, 0, 255),
),
wang_set.WangColor(
name="Cobblestone",
probability=1,
tile=-1,
color=common_types.Color(0, 255, 0, 255),
),
wang_set.WangColor(
name="Pavement",
probability=1,
tile=-1,
color=common_types.Color(0, 0, 255, 255),
),
wang_set.WangColor(
name="Dirt",
probability=1,
tile=-1,
color=common_types.Color(255, 119, 0, 255),
properties={"test": "this is a test"},
),
],
wang_tiles={
0: wang_set.WangTile(tile_id=0, wang_id=[1, 1, 0, 2, 0, 1, 1, 1]),
1: wang_set.WangTile(tile_id=1, wang_id=[1, 1, 0, 2, 2, 2, 0, 1]),
2: wang_set.WangTile(tile_id=2, wang_id=[1, 1, 1, 1, 0, 2, 0, 1]),
3: wang_set.WangTile(tile_id=3, wang_id=[4, 4, 0, 1, 0, 4, 4, 4]),
4: wang_set.WangTile(tile_id=4, wang_id=[4, 4, 4, 4, 0, 1, 0, 4]),
5: wang_set.WangTile(tile_id=5, wang_id=[1, 1, 0, 4, 0, 1, 1, 1]),
6: wang_set.WangTile(tile_id=6, wang_id=[1, 1, 0, 4, 4, 4, 0, 1]),
7: wang_set.WangTile(tile_id=7, wang_id=[1, 1, 1, 1, 0, 4, 0, 1]),
8: wang_set.WangTile(tile_id=8, wang_id=[0, 2, 2, 2, 0, 1, 1, 1]),
9: wang_set.WangTile(tile_id=9, wang_id=[2, 2, 2, 2, 2, 2, 2, 2]),
10: wang_set.WangTile(tile_id=10, wang_id=[0, 1, 1, 1, 0, 2, 2, 2]),
11: wang_set.WangTile(tile_id=11, wang_id=[0, 1, 0, 4, 4, 4, 4, 4]),
12: wang_set.WangTile(tile_id=12, wang_id=[0, 4, 4, 4, 4, 4, 0, 1]),
13: wang_set.WangTile(tile_id=13, wang_id=[0, 4, 4, 4, 0, 1, 1, 1]),
14: wang_set.WangTile(tile_id=14, wang_id=[4, 4, 4, 4, 4, 4, 4, 4]),
15: wang_set.WangTile(tile_id=15, wang_id=[0, 1, 1, 1, 0, 4, 4, 4]),
16: wang_set.WangTile(tile_id=16, wang_id=[0, 2, 0, 1, 1, 1, 1, 1]),
17: wang_set.WangTile(tile_id=17, wang_id=[2, 2, 0, 1, 1, 1, 0, 2]),
18: wang_set.WangTile(tile_id=18, wang_id=[0, 1, 1, 1, 1, 1, 0, 2]),
19: wang_set.WangTile(tile_id=19, wang_id=[2, 2, 0, 1, 0, 2, 2, 2]),
20: wang_set.WangTile(tile_id=20, wang_id=[2, 2, 2, 2, 0, 1, 0, 2]),
21: wang_set.WangTile(tile_id=21, wang_id=[0, 4, 0, 1, 1, 1, 1, 1]),
22: wang_set.WangTile(tile_id=22, wang_id=[4, 4, 0, 1, 1, 1, 0, 4]),
23: wang_set.WangTile(tile_id=23, wang_id=[0, 1, 1, 1, 1, 1, 0, 4]),
24: wang_set.WangTile(tile_id=24, wang_id=[1, 1, 0, 3, 0, 1, 1, 1]),
25: wang_set.WangTile(tile_id=25, wang_id=[1, 1, 0, 3, 3, 3, 0, 1]),
26: wang_set.WangTile(tile_id=26, wang_id=[1, 1, 1, 1, 0, 3, 0, 1]),
27: wang_set.WangTile(tile_id=27, wang_id=[0, 1, 0, 2, 2, 2, 2, 2]),
28: wang_set.WangTile(tile_id=28, wang_id=[0, 2, 2, 2, 2, 2, 0, 1]),
29: wang_set.WangTile(tile_id=29, wang_id=[1, 1, 1, 1, 1, 1, 1, 1]),
32: wang_set.WangTile(tile_id=32, wang_id=[0, 3, 3, 3, 0, 1, 1, 1]),
33: wang_set.WangTile(tile_id=33, wang_id=[3, 3, 3, 3, 3, 3, 3, 3]),
34: wang_set.WangTile(tile_id=34, wang_id=[0, 1, 1, 1, 0, 3, 3, 3]),
35: wang_set.WangTile(tile_id=35, wang_id=[3, 3, 0, 1, 0, 3, 3, 3]),
36: wang_set.WangTile(tile_id=36, wang_id=[3, 3, 3, 3, 0, 1, 0, 3]),
40: wang_set.WangTile(tile_id=40, wang_id=[0, 3, 0, 1, 1, 1, 1, 1]),
41: wang_set.WangTile(tile_id=41, wang_id=[3, 3, 0, 1, 1, 1, 0, 3]),
42: wang_set.WangTile(tile_id=42, wang_id=[0, 1, 1, 1, 1, 1, 0, 3]),
43: wang_set.WangTile(tile_id=43, wang_id=[0, 1, 0, 3, 3, 3, 3, 3]),
44: wang_set.WangTile(tile_id=44, wang_id=[0, 3, 3, 3, 3, 3, 0, 1]),
},
),
wang_set.WangSet(
name="Copy of Terrains",
tile=-1,
wang_type="mixed",
wang_colors=[
wang_set.WangColor(
name="Sand",
@@ -46,6 +121,7 @@ EXPECTED = tileset.Tileset(
probability=1,
tile=-1,
color=common_types.Color(255, 119, 0, 255),
properties={"test": "this is a test"},
),
],
wang_tiles={

View File

@@ -6,11 +6,11 @@
"name":"tileset",
"spacing":1,
"tilecount":48,
"tiledversion":"1.6.0",
"tiledversion":"1.8.5",
"tileheight":32,
"tilewidth":32,
"type":"tileset",
"version":"1.6",
"version":"1.8",
"wangsets":[
{
"colors":[
@@ -36,9 +36,218 @@
"color":"#ff7700",
"name":"Dirt",
"probability":1,
"properties":[
{
"name":"test",
"type":"string",
"value":"this is a test"
}],
"tile":-1
}],
"name":"Terrains",
"properties":[
{
"name":"test",
"type":"string",
"value":"this is a test"
}],
"tile":-1,
"type":"mixed",
"wangtiles":[
{
"tileid":0,
"wangid":[1, 1, 0, 2, 0, 1, 1, 1]
},
{
"tileid":1,
"wangid":[1, 1, 0, 2, 2, 2, 0, 1]
},
{
"tileid":2,
"wangid":[1, 1, 1, 1, 0, 2, 0, 1]
},
{
"tileid":3,
"wangid":[4, 4, 0, 1, 0, 4, 4, 4]
},
{
"tileid":4,
"wangid":[4, 4, 4, 4, 0, 1, 0, 4]
},
{
"tileid":5,
"wangid":[1, 1, 0, 4, 0, 1, 1, 1]
},
{
"tileid":6,
"wangid":[1, 1, 0, 4, 4, 4, 0, 1]
},
{
"tileid":7,
"wangid":[1, 1, 1, 1, 0, 4, 0, 1]
},
{
"tileid":8,
"wangid":[0, 2, 2, 2, 0, 1, 1, 1]
},
{
"tileid":9,
"wangid":[2, 2, 2, 2, 2, 2, 2, 2]
},
{
"tileid":10,
"wangid":[0, 1, 1, 1, 0, 2, 2, 2]
},
{
"tileid":11,
"wangid":[0, 1, 0, 4, 4, 4, 4, 4]
},
{
"tileid":12,
"wangid":[0, 4, 4, 4, 4, 4, 0, 1]
},
{
"tileid":13,
"wangid":[0, 4, 4, 4, 0, 1, 1, 1]
},
{
"tileid":14,
"wangid":[4, 4, 4, 4, 4, 4, 4, 4]
},
{
"tileid":15,
"wangid":[0, 1, 1, 1, 0, 4, 4, 4]
},
{
"tileid":16,
"wangid":[0, 2, 0, 1, 1, 1, 1, 1]
},
{
"tileid":17,
"wangid":[2, 2, 0, 1, 1, 1, 0, 2]
},
{
"tileid":18,
"wangid":[0, 1, 1, 1, 1, 1, 0, 2]
},
{
"tileid":19,
"wangid":[2, 2, 0, 1, 0, 2, 2, 2]
},
{
"tileid":20,
"wangid":[2, 2, 2, 2, 0, 1, 0, 2]
},
{
"tileid":21,
"wangid":[0, 4, 0, 1, 1, 1, 1, 1]
},
{
"tileid":22,
"wangid":[4, 4, 0, 1, 1, 1, 0, 4]
},
{
"tileid":23,
"wangid":[0, 1, 1, 1, 1, 1, 0, 4]
},
{
"tileid":24,
"wangid":[1, 1, 0, 3, 0, 1, 1, 1]
},
{
"tileid":25,
"wangid":[1, 1, 0, 3, 3, 3, 0, 1]
},
{
"tileid":26,
"wangid":[1, 1, 1, 1, 0, 3, 0, 1]
},
{
"tileid":27,
"wangid":[0, 1, 0, 2, 2, 2, 2, 2]
},
{
"tileid":28,
"wangid":[0, 2, 2, 2, 2, 2, 0, 1]
},
{
"tileid":29,
"wangid":[1, 1, 1, 1, 1, 1, 1, 1]
},
{
"tileid":32,
"wangid":[0, 3, 3, 3, 0, 1, 1, 1]
},
{
"tileid":33,
"wangid":[3, 3, 3, 3, 3, 3, 3, 3]
},
{
"tileid":34,
"wangid":[0, 1, 1, 1, 0, 3, 3, 3]
},
{
"tileid":35,
"wangid":[3, 3, 0, 1, 0, 3, 3, 3]
},
{
"tileid":36,
"wangid":[3, 3, 3, 3, 0, 1, 0, 3]
},
{
"tileid":40,
"wangid":[0, 3, 0, 1, 1, 1, 1, 1]
},
{
"tileid":41,
"wangid":[3, 3, 0, 1, 1, 1, 0, 3]
},
{
"tileid":42,
"wangid":[0, 1, 1, 1, 1, 1, 0, 3]
},
{
"tileid":43,
"wangid":[0, 1, 0, 3, 3, 3, 3, 3]
},
{
"tileid":44,
"wangid":[0, 3, 3, 3, 3, 3, 0, 1]
}]
},
{
"colors":[
{
"color":"#ff0000",
"name":"Sand",
"probability":1,
"tile":-1
},
{
"color":"#00ff00",
"name":"Cobblestone",
"probability":1,
"tile":-1
},
{
"color":"#0000ff",
"name":"Pavement",
"probability":1,
"tile":-1
},
{
"color":"#ff7700",
"name":"Dirt",
"probability":1,
"properties":[
{
"name":"test",
"type":"string",
"value":"this is a test"
}],
"tile":-1
}],
"name":"Copy of Terrains",
"tile":-1,
"type":"mixed",
"wangtiles":[

View File

@@ -1,12 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<tileset version="1.5" tiledversion="1.7.0" name="tileset" tilewidth="32" tileheight="32" spacing="1" margin="1" tilecount="48" columns="8">
<tileset version="1.8" tiledversion="1.8.5" name="tileset" tilewidth="32" tileheight="32" spacing="1" margin="1" tilecount="48" columns="8">
<image source="../../images/tmw_desert_spacing.png" width="265" height="199"/>
<wangsets>
<wangset name="Terrains" type="mixed" tile="-1">
<wangcolor name="Sand" color="#ff0000" tile="-1" probability="1"/>
<wangcolor name="Cobblestone" color="#00ff00" tile="-1" probability="1"/>
<wangcolor name="Pavement" color="#0000ff" tile="-1" probability="1"/>
<wangcolor name="Dirt" color="#ff7700" tile="-1" probability="1"/>
<wangcolor name="Dirt" color="#ff7700" tile="-1" probability="1">
<properties>
<property name="test" value="this is a test"/>
</properties>
</wangcolor>
<wangtile tileid="0" wangid="1,1,0,2,0,1,1,1"/>
<wangtile tileid="1" wangid="1,1,0,2,2,2,0,1"/>
<wangtile tileid="2" wangid="1,1,1,1,0,2,0,1"/>
<wangtile tileid="3" wangid="4,4,0,1,0,4,4,4"/>
<wangtile tileid="4" wangid="4,4,4,4,0,1,0,4"/>
<wangtile tileid="5" wangid="1,1,0,4,0,1,1,1"/>
<wangtile tileid="6" wangid="1,1,0,4,4,4,0,1"/>
<wangtile tileid="7" wangid="1,1,1,1,0,4,0,1"/>
<wangtile tileid="8" wangid="0,2,2,2,0,1,1,1"/>
<wangtile tileid="9" wangid="2,2,2,2,2,2,2,2"/>
<wangtile tileid="10" wangid="0,1,1,1,0,2,2,2"/>
<wangtile tileid="11" wangid="0,1,0,4,4,4,4,4"/>
<wangtile tileid="12" wangid="0,4,4,4,4,4,0,1"/>
<wangtile tileid="13" wangid="0,4,4,4,0,1,1,1"/>
<wangtile tileid="14" wangid="4,4,4,4,4,4,4,4"/>
<wangtile tileid="15" wangid="0,1,1,1,0,4,4,4"/>
<wangtile tileid="16" wangid="0,2,0,1,1,1,1,1"/>
<wangtile tileid="17" wangid="2,2,0,1,1,1,0,2"/>
<wangtile tileid="18" wangid="0,1,1,1,1,1,0,2"/>
<wangtile tileid="19" wangid="2,2,0,1,0,2,2,2"/>
<wangtile tileid="20" wangid="2,2,2,2,0,1,0,2"/>
<wangtile tileid="21" wangid="0,4,0,1,1,1,1,1"/>
<wangtile tileid="22" wangid="4,4,0,1,1,1,0,4"/>
<wangtile tileid="23" wangid="0,1,1,1,1,1,0,4"/>
<wangtile tileid="24" wangid="1,1,0,3,0,1,1,1"/>
<wangtile tileid="25" wangid="1,1,0,3,3,3,0,1"/>
<wangtile tileid="26" wangid="1,1,1,1,0,3,0,1"/>
<wangtile tileid="27" wangid="0,1,0,2,2,2,2,2"/>
<wangtile tileid="28" wangid="0,2,2,2,2,2,0,1"/>
<wangtile tileid="29" wangid="1,1,1,1,1,1,1,1"/>
<wangtile tileid="32" wangid="0,3,3,3,0,1,1,1"/>
<wangtile tileid="33" wangid="3,3,3,3,3,3,3,3"/>
<wangtile tileid="34" wangid="0,1,1,1,0,3,3,3"/>
<wangtile tileid="35" wangid="3,3,0,1,0,3,3,3"/>
<wangtile tileid="36" wangid="3,3,3,3,0,1,0,3"/>
<wangtile tileid="40" wangid="0,3,0,1,1,1,1,1"/>
<wangtile tileid="41" wangid="3,3,0,1,1,1,0,3"/>
<wangtile tileid="42" wangid="0,1,1,1,1,1,0,3"/>
<wangtile tileid="43" wangid="0,1,0,3,3,3,3,3"/>
<wangtile tileid="44" wangid="0,3,3,3,3,3,0,1"/>
<properties>
<property name="test" value="this is a test"/>
</properties>
</wangset>
<wangset name="Copy of Terrains" type="mixed" tile="-1">
<wangcolor name="Sand" color="#ff0000" tile="-1" probability="1"/>
<wangcolor name="Cobblestone" color="#00ff00" tile="-1" probability="1"/>
<wangcolor name="Pavement" color="#0000ff" tile="-1" probability="1"/>
<wangcolor name="Dirt" color="#ff7700" tile="-1" probability="1">
<properties>
<property name="test" value="this is a test"/>
</properties>
</wangcolor>
<wangtile tileid="0" wangid="1,1,0,2,0,1,1,1"/>
<wangtile tileid="1" wangid="1,1,0,2,2,2,0,1"/>
<wangtile tileid="2" wangid="1,1,1,1,0,2,0,1"/>

View File

@@ -21,12 +21,14 @@ ALL_LAYER_TESTS = [
LAYER_TESTS / "b64",
LAYER_TESTS / "b64_gzip",
LAYER_TESTS / "b64_zlib",
# LAYER_TESTS / "b64_zstd",
LAYER_TESTS / "no_layers",
LAYER_TESTS / "infinite_map",
LAYER_TESTS / "infinite_map_b64",
]
ZSTD_LAYER_TEST = LAYER_TESTS / "b64_zstd"
UNKNOWN_LAYER_TYPE_TEST = LAYER_TESTS / "unknown_type"
def fix_object(my_object):
my_object.coordinates = OrderedPair(
@@ -96,3 +98,41 @@ def test_layer_integration(parser_type, layer_test):
print(layer.size)
assert layers == expected.EXPECTED
@pytest.mark.parametrize("parser_type", ["json", "tmx"])
def test_zstd_not_installed(parser_type):
if parser_type == "json":
raw_layers_path = ZSTD_LAYER_TEST / "map.json"
with open(raw_layers_path) as raw_layers_file:
raw_layers = json.load(raw_layers_file)["layers"]
with pytest.raises(ValueError):
layers = [parse_json(raw_layer) for raw_layer in raw_layers]
elif parser_type == "tmx":
raw_layers_path = ZSTD_LAYER_TEST / "map.tmx"
with open(raw_layers_path) as raw_layers_file:
with pytest.raises(ValueError):
raw_layer = etree.parse(raw_layers_file).getroot()
layers = []
for layer in raw_layer.findall("./layer"):
layers.append(parse_tmx(layer))
for layer in raw_layer.findall("./objectgroup"):
layers.append(parse_tmx(layer))
for layer in raw_layer.findall("./group"):
layers.append(parse_tmx(layer))
for layer in raw_layer.findall("./imagelayer"):
layers.append(parse_tmx(layer))
def test_unknown_layer_type():
# We only test JSON here because due to the nature of the TMX format
# there does not exist a scenario where pytiled_parser can attempt to
# parse an unknown layer type. In JSON a RuntimeError error will be
# raised if an unknown type is provided. In TMX the layer will just
# be ignored.
raw_layers_path = UNKNOWN_LAYER_TYPE_TEST / "map.json"
with open(raw_layers_path) as raw_layers_file:
raw_layers = json.load(raw_layers_file)["layers"]
with pytest.raises(RuntimeError):
layers = [parse_json(raw_layer) for raw_layer in raw_layers]