diff --git a/tests/test_data/tilesets/image/tileset.tsx b/tests/test_data/tilesets/image/tileset.tsx
new file mode 100644
index 0000000..8aee17a
--- /dev/null
+++ b/tests/test_data/tilesets/image/tileset.tsx
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/tests/test_data/tilesets/image_background_color/tileset.tsx b/tests/test_data/tilesets/image_background_color/tileset.tsx
new file mode 100644
index 0000000..25cae9b
--- /dev/null
+++ b/tests/test_data/tilesets/image_background_color/tileset.tsx
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/tests/test_data/tilesets/image_grid/tileset.tsx b/tests/test_data/tilesets/image_grid/tileset.tsx
new file mode 100644
index 0000000..62ef87e
--- /dev/null
+++ b/tests/test_data/tilesets/image_grid/tileset.tsx
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/tests/test_data/tilesets/image_properties/tileset.tsx b/tests/test_data/tilesets/image_properties/tileset.tsx
new file mode 100644
index 0000000..42478ae
--- /dev/null
+++ b/tests/test_data/tilesets/image_properties/tileset.tsx
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/test_data/tilesets/image_tile_offset/tileset.tsx b/tests/test_data/tilesets/image_tile_offset/tileset.tsx
new file mode 100644
index 0000000..7c0c1bc
--- /dev/null
+++ b/tests/test_data/tilesets/image_tile_offset/tileset.tsx
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/tests/test_data/tilesets/image_transformations/tileset.tsx b/tests/test_data/tilesets/image_transformations/tileset.tsx
new file mode 100644
index 0000000..5b20f69
--- /dev/null
+++ b/tests/test_data/tilesets/image_transformations/tileset.tsx
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/tests/test_data/tilesets/image_transparent_color/tileset.tsx b/tests/test_data/tilesets/image_transparent_color/tileset.tsx
new file mode 100644
index 0000000..5ab0346
--- /dev/null
+++ b/tests/test_data/tilesets/image_transparent_color/tileset.tsx
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/tests/test_data/tilesets/individual_images/tileset.tsx b/tests/test_data/tilesets/individual_images/tileset.tsx
new file mode 100644
index 0000000..877cf79
--- /dev/null
+++ b/tests/test_data/tilesets/individual_images/tileset.tsx
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/test_data/tilesets/terrain/tileset.tsx b/tests/test_data/tilesets/terrain/tileset.tsx
new file mode 100644
index 0000000..2a57297
--- /dev/null
+++ b/tests/test_data/tilesets/terrain/tileset.tsx
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/test_tileset.py b/tests/test_tileset.py
index c5b8f7c..9f88f78 100644
--- a/tests/test_tileset.py
+++ b/tests/test_tileset.py
@@ -2,11 +2,14 @@
import importlib.util
import json
import os
+import xml.etree.ElementTree as etree
from pathlib import Path
import pytest
-from pytiled_parser.parsers.json.tileset import parse
+from pytiled_parser.common_types import OrderedPair, Size
+from pytiled_parser.parsers.json.tileset import parse as parse_json
+from pytiled_parser.parsers.tmx.tileset import parse as parse_tmx
TESTS_DIR = Path(os.path.dirname(os.path.abspath(__file__)))
TEST_DATA = TESTS_DIR / "test_data"
@@ -26,8 +29,26 @@ ALL_TILESET_DIRS = [
]
+def fix_object(my_object):
+ my_object.coordinates = OrderedPair(
+ round(my_object.coordinates[0], 4), round(my_object.coordinates[1], 4)
+ )
+ my_object.size = Size(round(my_object.size[0], 4), round(my_object.size[1], 4))
+
+
+def fix_tileset(tileset):
+ tileset.version = None
+ tileset.tiled_version = None
+ if tileset.tiles:
+ for tile in tileset.tiles.values():
+ if tile.objects:
+ for my_object in tile.objects.tiled_objects:
+ fix_object(my_object)
+
+
+@pytest.mark.parametrize("parser_type", ["json", "tmx"])
@pytest.mark.parametrize("tileset_dir", ALL_TILESET_DIRS)
-def test_tilesets_integration(tileset_dir):
+def test_tilesets_integration(parser_type, tileset_dir):
# it's a PITA to import like this, don't do it
# https://stackoverflow.com/a/67692/1342874
spec = importlib.util.spec_from_file_location(
@@ -36,9 +57,16 @@ def test_tilesets_integration(tileset_dir):
expected = importlib.util.module_from_spec(spec)
spec.loader.exec_module(expected)
- raw_tileset_path = tileset_dir / "tileset.json"
+ if parser_type == "json":
+ raw_tileset_path = tileset_dir / "tileset.json"
+ with open(raw_tileset_path) as raw_tileset:
+ tileset_ = parse_json(json.loads(raw_tileset.read()), 1)
+ elif parser_type == "tmx":
+ raw_tileset_path = tileset_dir / "tileset.tsx"
+ with open(raw_tileset_path) as raw_tileset:
+ tileset_ = parse_tmx(etree.parse(raw_tileset).getroot(), 1)
- with open(raw_tileset_path) as raw_tileset:
- tileset_ = parse(json.loads(raw_tileset.read()), 1)
+ fix_tileset(tileset_)
+ fix_tileset(expected.EXPECTED)
assert tileset_ == expected.EXPECTED