From ccadfee2c7b415a5b74473cab274dc45f46d5a1d Mon Sep 17 00:00:00 2001 From: Ryan Kurz Date: Sat, 2 May 2026 17:29:04 -0400 Subject: [PATCH 1/3] Added mapreader tileset tests --- tests/data/assets/tilesets/env/dummy.png | Bin 0 -> 37017 bytes tests/data/assets/tilesets/env/dummy.tsx | 4 ++++ tests/data/internal_tileset.tmx | 12 ++++++++++ tests/data/missing_tileset.tmx | 10 ++++++++ tests/data/nested_tileset.tmx | 10 ++++++++ tests/mapreader/test_mapreader.cpp | 28 +++++++++++++++++++++++ 6 files changed, 64 insertions(+) create mode 100644 tests/data/assets/tilesets/env/dummy.png create mode 100644 tests/data/assets/tilesets/env/dummy.tsx create mode 100644 tests/data/internal_tileset.tmx create mode 100644 tests/data/missing_tileset.tmx create mode 100644 tests/data/nested_tileset.tmx diff --git a/tests/data/assets/tilesets/env/dummy.png b/tests/data/assets/tilesets/env/dummy.png new file mode 100644 index 0000000000000000000000000000000000000000..0a8a3261bd79be6f28d1b6857fc5874c591a3bc1 GIT binary patch literal 37017 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 + + + \ No newline at end of file diff --git a/tests/data/internal_tileset.tmx b/tests/data/internal_tileset.tmx new file mode 100644 index 0000000000..f4d8846248 --- /dev/null +++ b/tests/data/internal_tileset.tmx @@ -0,0 +1,12 @@ + + + + + + + +11,0, +0,0 + + + diff --git a/tests/data/missing_tileset.tmx b/tests/data/missing_tileset.tmx new file mode 100644 index 0000000000..4afae2ed0b --- /dev/null +++ b/tests/data/missing_tileset.tmx @@ -0,0 +1,10 @@ + + + + + +1,0, +0,1 + + + \ No newline at end of file diff --git a/tests/data/nested_tileset.tmx b/tests/data/nested_tileset.tmx new file mode 100644 index 0000000000..c0cc3a7ae8 --- /dev/null +++ b/tests/data/nested_tileset.tmx @@ -0,0 +1,10 @@ + + + + + +1,0, +0,1 + + + \ No newline at end of file diff --git a/tests/mapreader/test_mapreader.cpp b/tests/mapreader/test_mapreader.cpp index d599cbf6f6..5517668c4a 100644 --- a/tests/mapreader/test_mapreader.cpp +++ b/tests/mapreader/test_mapreader.cpp @@ -14,8 +14,36 @@ class test_MapReader : public QObject private slots: void loadMap(); + void loadMap_missingExternalTileset(); + void loadMap_nestedExternalTileset(); + void loadMap_internalTileset(); }; +void test_MapReader::loadMap_missingExternalTileset() +{ + MapReader reader; + auto map = reader.readMap("../data/missing_tileset.tmx"); + + QVERIFY(map.get()); + QVERIFY(!reader.errorString().isEmpty()); +} + +void test_MapReader::loadMap_nestedExternalTileset() +{ + MapReader reader; + auto map = reader.readMap("../data/nested_tileset.tmx"); + + QVERIFY(map.get()); +} + +void test_MapReader::loadMap_internalTileset() +{ + MapReader reader; + auto map = reader.readMap("../data/internal_tileset.tmx"); + + QVERIFY(map.get()); +} + void test_MapReader::loadMap() { MapReader reader; From 6dda05586be31941c98b99580df4f06cbcfc162b Mon Sep 17 00:00:00 2001 From: Ryan Kurz Date: Sat, 2 May 2026 17:35:33 -0400 Subject: [PATCH 2/3] trigger pipeline From dcd600f36fdc940d4b58a55f086c65f7f70ff5ac Mon Sep 17 00:00:00 2001 From: Ryan Kurz Date: Sat, 2 May 2026 17:41:01 -0400 Subject: [PATCH 3/3] Trigger CI workflow