Some more random random map script unit tests and ASSERT functions, refs #4827.
Differential Revision: https://code.wildfiregames.com/D2603 This was SVN commit r23460.
This commit is contained in:
parent
8ea416b125
commit
5fe58d80fd
@ -0,0 +1,21 @@
|
||||
Engine.LoadLibrary("rmgen");
|
||||
|
||||
var g_MapSettings = { "Size": 512 };
|
||||
var g_Map = new RandomMap(0, 0, "blackness");
|
||||
|
||||
{
|
||||
let tileClass = new TileClass(g_Map.getSize());
|
||||
|
||||
let addedPos = new Vector2D(5, 0);
|
||||
tileClass.add(addedPos);
|
||||
|
||||
let origin = new Vector2D(0, 0);
|
||||
|
||||
TS_ASSERT(!(new AvoidTileClassConstraint(tileClass, 0).allows(addedPos)));
|
||||
TS_ASSERT(new AvoidTileClassConstraint(tileClass, 0).allows(origin));
|
||||
TS_ASSERT(!(new AvoidTileClassConstraint(tileClass, 5).allows(origin)));
|
||||
|
||||
TS_ASSERT(new NearTileClassConstraint(tileClass, 5).allows(origin));
|
||||
TS_ASSERT(new NearTileClassConstraint(tileClass, 20).allows(origin));
|
||||
TS_ASSERT(!(new NearTileClassConstraint(tileClass, 4).allows(origin)));
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
Engine.LoadLibrary("rmgen");
|
||||
|
||||
var g_MapSettings = { "Size": 512 };
|
||||
var g_Map = new RandomMap(0, 0, "blackness");
|
||||
|
||||
{
|
||||
let min = new Vector2D(4, 4);
|
||||
let max = new Vector2D(10, 10);
|
||||
|
||||
let center = Vector2D.average([min, max]);
|
||||
|
||||
createArea(
|
||||
new RectPlacer(min, max),
|
||||
new LayeredPainter(["red", "blue"], [2]));
|
||||
|
||||
TS_ASSERT_EQUALS(g_Map.getTexture(min), "red");
|
||||
TS_ASSERT_EQUALS(g_Map.getTexture(max), "red");
|
||||
TS_ASSERT_EQUALS(g_Map.getTexture(new Vector2D(-1, -1).add(max)), "red");
|
||||
TS_ASSERT_EQUALS(g_Map.getTexture(new Vector2D(-2, -2).add(max)), "blue");
|
||||
TS_ASSERT_EQUALS(g_Map.getTexture(new Vector2D(-3, -3).add(max)), "blue");
|
||||
TS_ASSERT_EQUALS(g_Map.getTexture(center), "blue");
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
Engine.LoadLibrary("rmgen");
|
||||
|
||||
var g_MapSettings = { "Size": 512 };
|
||||
var g_Map = new RandomMap(0, 0, "blackness");
|
||||
|
||||
{
|
||||
let min = new Vector2D(5, 5);
|
||||
let max = new Vector2D(7, 7);
|
||||
|
||||
let area = createArea(new RectPlacer(min, max));
|
||||
|
||||
TS_ASSERT(!area.contains(new Vector2D(-1, -1).add(min)));
|
||||
TS_ASSERT(area.contains(min));
|
||||
TS_ASSERT(area.contains(max));
|
||||
TS_ASSERT(area.contains(max.clone()));
|
||||
TS_ASSERT(area.contains(Vector2D.average([min, max])));
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
Engine.LoadLibrary("rmgen");
|
||||
|
||||
var g_MapSettings = { "Size": 512 };
|
||||
var g_Map;
|
||||
|
||||
{
|
||||
let min = new Vector2D(5, 5);
|
||||
let center = new Vector2D(6, 6);
|
||||
let max = new Vector2D(7, 7);
|
||||
|
||||
let minHeight = 20;
|
||||
let maxHeight = 25;
|
||||
|
||||
// Test SmoothingPainter
|
||||
{
|
||||
g_Map = new RandomMap(0, 0, "blackness");
|
||||
|
||||
let centerHeight = g_Map.getHeight(center);
|
||||
|
||||
createArea(
|
||||
new RectPlacer(min, max),
|
||||
[
|
||||
new RandomElevationPainter(minHeight, maxHeight),
|
||||
new SmoothingPainter(2, 1, 1)
|
||||
]);
|
||||
|
||||
TS_ASSERT_GREATER_EQUAL(g_Map.getHeight(center), centerHeight);
|
||||
TS_ASSERT_LESS_EQUAL(g_Map.getHeight(center), minHeight);
|
||||
}
|
||||
}
|
@ -15,6 +15,7 @@ var g_Map = new RandomMap(0, "blackness");
|
||||
// Test out-of-bounds
|
||||
{
|
||||
let tileClass = new TileClass(32);
|
||||
|
||||
let absentPoints = [
|
||||
new Vector2D(0, 0),
|
||||
new Vector2D(0, 1),
|
||||
@ -40,6 +41,8 @@ var g_Map = new RandomMap(0, "blackness");
|
||||
|
||||
// Still one point remaining
|
||||
tileClass.remove(point);
|
||||
TS_ASSERT(tileClass.has(point));
|
||||
|
||||
tileClass.remove(point);
|
||||
TS_ASSERT(!tileClass.has(point));
|
||||
}
|
||||
@ -66,9 +69,10 @@ var g_Map = new RandomMap(0, "blackness");
|
||||
for (let i = 0; i < 50; ++i)
|
||||
tileClass.add(point);
|
||||
|
||||
TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(point, 1), 4);
|
||||
tileClass.remove(point);
|
||||
TS_ASSERT(tileClass.has(point));
|
||||
|
||||
TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(point, 1), 4);
|
||||
tileClass.remove(point);
|
||||
TS_ASSERT(tileClass.has(point));
|
||||
}
|
||||
@ -76,15 +80,18 @@ var g_Map = new RandomMap(0, "blackness");
|
||||
// Test getters
|
||||
{
|
||||
let tileClass = new TileClass(88);
|
||||
|
||||
let point = new Vector2D(5, 1);
|
||||
tileClass.add(point);
|
||||
|
||||
let point2 = new Vector2D(4, 9);
|
||||
tileClass.add(point2);
|
||||
|
||||
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, 1), 4);
|
||||
TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(point, 2), 12);
|
||||
TS_ASSERT_EQUALS(tileClass.countNonMembersInRadius(point, 3), 28);
|
||||
|
@ -8,31 +8,31 @@
|
||||
function fail(msg)
|
||||
{
|
||||
// Get a list of callers
|
||||
let trace = (new Error).stack.split("\n");
|
||||
let trace = (new Error()).stack.split("\n");
|
||||
// Remove the Error ctor and this function from the stack
|
||||
trace = trace.splice(2);
|
||||
trace = "Stack trace:\n" + trace.join("\n");
|
||||
Engine.TS_FAIL(trace + msg);
|
||||
}
|
||||
|
||||
global.TS_FAIL = function TS_FAIL(msg)
|
||||
global.TS_FAIL = function(msg)
|
||||
{
|
||||
fail(msg);
|
||||
};
|
||||
|
||||
global.TS_ASSERT = function TS_ASSERT(e)
|
||||
global.TS_ASSERT = function(e)
|
||||
{
|
||||
if (!e)
|
||||
fail("Assert failed");
|
||||
};
|
||||
|
||||
global.TS_ASSERT_EQUALS = function TS_ASSERT_EQUALS(x, y)
|
||||
global.TS_ASSERT_EQUALS = function(x, y)
|
||||
{
|
||||
if (!(x === y))
|
||||
fail("Expected equal, got "+uneval(x)+" !== "+uneval(y));
|
||||
if (x !== y)
|
||||
fail("Expected equal, got " + uneval(x) + " !== " + uneval(y));
|
||||
};
|
||||
|
||||
global.TS_ASSERT_EQUALS_APPROX = function TS_ASSERT_EQUALS_APPROX(x, y, maxDifference)
|
||||
global.TS_ASSERT_EQUALS_APPROX = function(x, y, maxDifference)
|
||||
{
|
||||
TS_ASSERT_NUMBER(maxDifference);
|
||||
|
||||
@ -40,10 +40,10 @@ global.TS_ASSERT_EQUALS_APPROX = function TS_ASSERT_EQUALS_APPROX(x, y, maxDiffe
|
||||
fail("Expected almost equal, got " + uneval(x) + " !== " + uneval(y));
|
||||
};
|
||||
|
||||
global.TS_ASSERT_UNEVAL_EQUALS = function TS_ASSERT_UNEVAL_EQUALS(x, y)
|
||||
global.TS_ASSERT_UNEVAL_EQUALS = function(x, y)
|
||||
{
|
||||
if (!(uneval(x) === uneval(y)))
|
||||
fail("Expected equal, got "+uneval(x)+" !== "+uneval(y));
|
||||
fail("Expected equal, got " + uneval(x) + " !== " + uneval(y));
|
||||
};
|
||||
|
||||
global.TS_ASSERT_EXCEPTION = function(func)
|
||||
@ -60,3 +60,27 @@ global.TS_ASSERT_NUMBER = function(value)
|
||||
if (typeof value != "number" || !isFinite(value))
|
||||
fail("The given value must be a real number!");
|
||||
};
|
||||
|
||||
global.TS_ASSERT_LESS = function(x, y)
|
||||
{
|
||||
if (x >= y)
|
||||
fail("Expected less than, got " + uneval(x) + " >= " + uneval(y));
|
||||
};
|
||||
|
||||
global.TS_ASSERT_GREATER = function(x, y)
|
||||
{
|
||||
if (x <= y)
|
||||
fail("Expected greater than, got " + uneval(x) + " <= " + uneval(y));
|
||||
};
|
||||
|
||||
global.TS_ASSERT_LESS_EQUAL = function(x, y)
|
||||
{
|
||||
if (x > y)
|
||||
fail("Expected less than or equal to, got " + uneval(x) + " > " + uneval(y));
|
||||
};
|
||||
|
||||
global.TS_ASSERT_GREATER_EQUAL = function(x, y)
|
||||
{
|
||||
if (x < y)
|
||||
fail("Expected greater than or equal, got " + uneval(x) + " < " + uneval(y));
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user