mirror of
https://github.com/OMGeeky/pytiled_parser.git
synced 2025-12-26 17:02:28 +01:00
Bunch of test coverage improvements
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
17
tests/test_data/layer_tests/b64_zstd/map.tmx
Normal file
17
tests/test_data/layer_tests/b64_zstd/map.tmx
Normal 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>
|
||||
@@ -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"
|
||||
}
|
||||
77
tests/test_data/layer_tests/unknown_type/map.json
Normal file
77
tests/test_data/layer_tests/unknown_type/map.json
Normal 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
|
||||
}
|
||||
17
tests/test_data/layer_tests/unknown_type/map.tmx
Normal file
17
tests/test_data/layer_tests/unknown_type/map.tmx
Normal 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>
|
||||
@@ -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={
|
||||
|
||||
@@ -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":[
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user