diff --git a/binaries/data/mods/public/maps/random/tests/test_Constraint.js b/binaries/data/mods/public/maps/random/tests/test_Constraint.js index e2c84a0edb..b7f724c079 100644 --- a/binaries/data/mods/public/maps/random/tests/test_Constraint.js +++ b/binaries/data/mods/public/maps/random/tests/test_Constraint.js @@ -10,10 +10,11 @@ Engine.GetTemplate = (path) => { Engine.LoadLibrary("rmgen"); -var g_MapSettings = { "Size": 512 }; -var g_Map = new RandomMap(0, "blackness"); - +function* GenerateMap() { + g_MapSettings = { "Size": 512 }; + globalThis.g_Map = new RandomMap(0, "blackness"); + let tileClass = new TileClass(g_Map.getSize()); let addedPos = new Vector2D(5, 0); diff --git a/binaries/data/mods/public/maps/random/tests/test_DiskPlacer.js b/binaries/data/mods/public/maps/random/tests/test_DiskPlacer.js index 8dbcb62131..23a881d4e5 100644 --- a/binaries/data/mods/public/maps/random/tests/test_DiskPlacer.js +++ b/binaries/data/mods/public/maps/random/tests/test_DiskPlacer.js @@ -10,64 +10,67 @@ Engine.GetTemplate = (path) => { Engine.LoadLibrary("rmgen"); +function* GenerateMap() { - var g_MapSettings = { "Size": 512 }; - var g_Map = new RandomMap(0, "blackness"); - let center = new Vector2D(10, 10); - let area = createArea(new DiskPlacer(3, center)); + { + g_MapSettings = { "Size": 512 }; + globalThis.g_Map = new RandomMap(0, "blackness"); + const center = new Vector2D(10, 10); + let area = createArea(new DiskPlacer(3, center)); - // Contains center - TS_ASSERT(area.contains(center)); + // Contains center + TS_ASSERT(area.contains(center)); - // Contains disk boundaries - TS_ASSERT(area.contains(new Vector2D(10, 13))); - TS_ASSERT(area.contains(new Vector2D(10, 7))); - TS_ASSERT(area.contains(new Vector2D(7, 10))); - TS_ASSERT(area.contains(new Vector2D(13, 10))); + // Contains disk boundaries + TS_ASSERT(area.contains(new Vector2D(10, 13))); + TS_ASSERT(area.contains(new Vector2D(10, 7))); + TS_ASSERT(area.contains(new Vector2D(7, 10))); + TS_ASSERT(area.contains(new Vector2D(13, 10))); - // Does not contain rectangle vertices - TS_ASSERT(!area.contains(new Vector2D(13, 13))); - TS_ASSERT(!area.contains(new Vector2D(7, 7))); - TS_ASSERT(!area.contains(new Vector2D(13, 7))); - TS_ASSERT(!area.contains(new Vector2D(7, 13))); + // Does not contain rectangle vertices + TS_ASSERT(!area.contains(new Vector2D(13, 13))); + TS_ASSERT(!area.contains(new Vector2D(7, 7))); + TS_ASSERT(!area.contains(new Vector2D(13, 7))); + TS_ASSERT(!area.contains(new Vector2D(7, 13))); - // Does not contain points outside disk range - TS_ASSERT(!area.contains(new Vector2D(10, 14))); - TS_ASSERT(!area.contains(new Vector2D(10, 6))); - TS_ASSERT(!area.contains(new Vector2D(6, 10))); - TS_ASSERT(!area.contains(new Vector2D(14, 10))); + // Does not contain points outside disk range + TS_ASSERT(!area.contains(new Vector2D(10, 14))); + TS_ASSERT(!area.contains(new Vector2D(10, 6))); + TS_ASSERT(!area.contains(new Vector2D(6, 10))); + TS_ASSERT(!area.contains(new Vector2D(14, 10))); - area = createArea(new DiskPlacer(3, new Vector2D(0, 0))); + area = createArea(new DiskPlacer(3, new Vector2D(0, 0))); - // Does not allow points out of map boundaries - TS_ASSERT(!area.contains(new Vector2D(-1, -1))); - // Contains map edge - TS_ASSERT(area.contains(new Vector2D(0, 0))); -} - -{ - // Contains points outside map disk range on CircularMap - var g_MapSettings = { "Size": 512, "CircularMap": true }; - var g_Map = new RandomMap(0, "blackness"); - var area = createArea(new DiskPlacer(10, new Vector2D(436, 436))); - - TS_ASSERT(area.contains(new Vector2D(438, 438))); - TS_ASSERT(area.contains(new Vector2D(437, 436))); - TS_ASSERT(area.contains(new Vector2D(436, 437))); - TS_ASSERT(area.contains(new Vector2D(435, 435))); - - area = createArea(new DiskPlacer(3, new Vector2D(0, 0))); - // Does not allow points out of map boundaries - TS_ASSERT(!area.contains(new Vector2D(-1, -1))); -} - -{ - var g_MapSettings = { "Size": 320, "CircularMap": true }; - var g_Map = new RandomMap(0, "blackness"); - // Does not error with floating point radius - var area = createArea(new DiskPlacer(86.4, new Vector2D(160, 160))); - // Does not error with extreme out of bounds disk - area = createArea(new DiskPlacer(86.4, new Vector2D(800, 800))); - // Does not error when disk on edge - area = createArea(new DiskPlacer(10, new Vector2D(321, 321))); + // Does not allow points out of map boundaries + TS_ASSERT(!area.contains(new Vector2D(-1, -1))); + // Contains map edge + TS_ASSERT(area.contains(new Vector2D(0, 0))); + } + + { + // Contains points outside map disk range on CircularMap + g_MapSettings = { "Size": 512, "CircularMap": true }; + g_Map = new RandomMap(0, "blackness"); + let area = createArea(new DiskPlacer(10, new Vector2D(436, 436))); + + TS_ASSERT(area.contains(new Vector2D(438, 438))); + TS_ASSERT(area.contains(new Vector2D(437, 436))); + TS_ASSERT(area.contains(new Vector2D(436, 437))); + TS_ASSERT(area.contains(new Vector2D(435, 435))); + + area = createArea(new DiskPlacer(3, new Vector2D(0, 0))); + // Does not allow points out of map boundaries + TS_ASSERT(!area.contains(new Vector2D(-1, -1))); + } + + { + g_MapSettings = { "Size": 320, "CircularMap": true }; + g_Map = new RandomMap(0, "blackness"); + // Does not error with floating point radius + var area = createArea(new DiskPlacer(86.4, new Vector2D(160, 160))); + // Does not error with extreme out of bounds disk + area = createArea(new DiskPlacer(86.4, new Vector2D(800, 800))); + // Does not error when disk on edge + area = createArea(new DiskPlacer(10, new Vector2D(321, 321))); + } } diff --git a/binaries/data/mods/public/maps/random/tests/test_LayeredPainter.js b/binaries/data/mods/public/maps/random/tests/test_LayeredPainter.js index 3894c36795..f9007da33c 100644 --- a/binaries/data/mods/public/maps/random/tests/test_LayeredPainter.js +++ b/binaries/data/mods/public/maps/random/tests/test_LayeredPainter.js @@ -10,10 +10,11 @@ Engine.GetTemplate = (path) => { Engine.LoadLibrary("rmgen"); -var g_MapSettings = { "Size": 512 }; -var g_Map = new RandomMap(0, "blackness"); - +function* GenerateMap() { + g_MapSettings = { "Size": 512 }; + globalThis.g_Map = new RandomMap(0, "blackness"); + let min = new Vector2D(4, 4); let max = new Vector2D(10, 10); diff --git a/binaries/data/mods/public/maps/random/tests/test_RecoverableError.js b/binaries/data/mods/public/maps/random/tests/test_RecoverableError.js index 9b7a2272ba..032b0cdd31 100644 --- a/binaries/data/mods/public/maps/random/tests/test_RecoverableError.js +++ b/binaries/data/mods/public/maps/random/tests/test_RecoverableError.js @@ -3,14 +3,11 @@ function* GenerateMap() try { yield; + TS_FAIL("The yield statement didn't throw."); } catch (error) { TS_ASSERT(error instanceof Error); TS_ASSERT_EQUALS(error.message, "Failed to convert the yielded value to an integer."); - yield 50; - return; } - - TS_FAIL("The yield statement didn't throw."); } diff --git a/binaries/data/mods/public/maps/random/tests/test_RectPlacer.js b/binaries/data/mods/public/maps/random/tests/test_RectPlacer.js index b254fc9715..bd75ee1342 100644 --- a/binaries/data/mods/public/maps/random/tests/test_RectPlacer.js +++ b/binaries/data/mods/public/maps/random/tests/test_RectPlacer.js @@ -10,10 +10,11 @@ Engine.GetTemplate = (path) => { Engine.LoadLibrary("rmgen"); -var g_MapSettings = { "Size": 512 }; -var g_Map = new RandomMap(0, "blackness"); - +function* GenerateMap() { + g_MapSettings = { "Size": 512 }; + globalThis.g_Map = new RandomMap(0, "blackness"); + let min = new Vector2D(5, 5); let max = new Vector2D(7, 7); diff --git a/binaries/data/mods/public/maps/random/tests/test_SmoothingPainter.js b/binaries/data/mods/public/maps/random/tests/test_SmoothingPainter.js index 22f3a0d1d6..5bbb403ef3 100644 --- a/binaries/data/mods/public/maps/random/tests/test_SmoothingPainter.js +++ b/binaries/data/mods/public/maps/random/tests/test_SmoothingPainter.js @@ -10,10 +10,10 @@ Engine.GetTemplate = (path) => { Engine.LoadLibrary("rmgen"); -var g_MapSettings = { "Size": 512 }; -var g_Map; - +function* GenerateMap() { + g_MapSettings = { "Size": 512 }; + let min = new Vector2D(5, 5); let center = new Vector2D(6, 6); let max = new Vector2D(7, 7); @@ -23,7 +23,7 @@ var g_Map; // Test SmoothingPainter { - g_Map = new RandomMap(0, "blackness"); + globalThis.g_Map = new RandomMap(0, "blackness"); let centerHeight = g_Map.getHeight(center); diff --git a/binaries/data/mods/public/maps/random/tests/test_TileClass.js b/binaries/data/mods/public/maps/random/tests/test_TileClass.js index 61ccd0bcd5..d63dcde015 100644 --- a/binaries/data/mods/public/maps/random/tests/test_TileClass.js +++ b/binaries/data/mods/public/maps/random/tests/test_TileClass.js @@ -10,56 +10,59 @@ Engine.GetTemplate = (path) => { Engine.LoadLibrary("rmgen"); -var g_MapSettings = { "Size": 512 }; -var g_Map = new RandomMap(0, "blackness"); - -// Test that that it checks by value, not by reference +function* GenerateMap() { - const tileClass = new TileClass(2); - const reference1 = new Vector2D(1, 1); - const reference2 = new Vector2D(1, 1); - tileClass.add(reference1); - TS_ASSERT(tileClass.has(reference2)); -} - -// Test out-of-bounds -{ - const tileClass = new TileClass(32); - - const absentPoints = [ - new Vector2D(0, 0), - new Vector2D(0, 1), - new Vector2D(1, 0), - new Vector2D(-1, -1), - new Vector2D(2048, 0), - new Vector2D(0, NaN), - new Vector2D(0, Infinity) - ]; - - for (const point of absentPoints) - TS_ASSERT(!tileClass.has(point)); -} - -// Test getters -{ - const tileClass = new TileClass(88); - - const point = new Vector2D(5, 5); - tileClass.add(point); - - const pointBorder = new Vector2D(1, 9); - tileClass.add(pointBorder); - - TS_ASSERT_EQUALS(tileClass.countMembersInRadius(point, 0), 1); - TS_ASSERT_EQUALS(tileClass.countMembersInRadius(point, 1), 1); - TS_ASSERT_EQUALS(tileClass.countMembersInRadius(point, 100), 2); - - TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(point, 1), 4); - TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(point, 2), 12); - TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(point, 3), 28); - - // Points not on the map are not counted. - TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(pointBorder, 1), 4); - TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(pointBorder, 2), 11); - TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(pointBorder, 3), 22); + g_MapSettings = { "Size": 512 }; + globalThis.g_Map = new RandomMap(0, "blackness"); + + // Test that that it checks by value, not by reference + { + const tileClass = new TileClass(2); + const reference1 = new Vector2D(1, 1); + const reference2 = new Vector2D(1, 1); + tileClass.add(reference1); + TS_ASSERT(tileClass.has(reference2)); + } + + // Test out-of-bounds + { + const tileClass = new TileClass(32); + + const absentPoints = [ + new Vector2D(0, 0), + new Vector2D(0, 1), + new Vector2D(1, 0), + new Vector2D(-1, -1), + new Vector2D(2048, 0), + new Vector2D(0, NaN), + new Vector2D(0, Infinity) + ]; + + for (const point of absentPoints) + TS_ASSERT(!tileClass.has(point)); + } + + // Test getters + { + const tileClass = new TileClass(88); + + const point = new Vector2D(5, 5); + tileClass.add(point); + + const pointBorder = new Vector2D(1, 9); + tileClass.add(pointBorder); + + TS_ASSERT_EQUALS(tileClass.countMembersInRadius(point, 0), 1); + TS_ASSERT_EQUALS(tileClass.countMembersInRadius(point, 1), 1); + TS_ASSERT_EQUALS(tileClass.countMembersInRadius(point, 100), 2); + + TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(point, 1), 4); + TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(point, 2), 12); + TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(point, 3), 28); + + // Points not on the map are not counted. + TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(pointBorder, 1), 4); + TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(pointBorder, 2), 11); + TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(pointBorder, 3), 22); + } } diff --git a/source/graphics/tests/test_MapGenerator.h b/source/graphics/tests/test_MapGenerator.h index dbb685a62d..f8bbc3e475 100644 --- a/source/graphics/tests/test_MapGenerator.h +++ b/source/graphics/tests/test_MapGenerator.h @@ -60,22 +60,10 @@ public: const Script::StructuredClone result{RunMapGenerationScript(progress, scriptInterface, path, "{\"Seed\": 0}", JSPROP_ENUMERATE | JSPROP_PERMANENT)}; - if (path == "maps/random/tests/test_Generator.js" || - path == "maps/random/tests/test_RecoverableError.js") - { + TS_ASSERT_DIFFERS(result, nullptr); + + if (path == "maps/random/tests/test_Generator.js") TS_ASSERT_EQUALS(progress.load(), 50); - TS_ASSERT_DIFFERS(result, nullptr); - } - else - { - // The test scripts don't call `ExportMap` so `RunMapGenerationScript` allways - // returns `nullptr`. - TS_ASSERT_EQUALS(result, nullptr); - // Because the test scripts don't call `ExportMap`, `GenerateMap` is searched, which - // doesn't exist. - TS_ASSERT_STR_CONTAINS(logger.GetOutput(), - "Failed to call the generator `GenerateMap`."); - } } } };