assert(abs(-5) == 5); assert(abs(5) == 5); assert(abs(0) == 0); assert(abs(-2.5) == 2.5); assert(sign(-9) == -1); assert(sign(9) == 1); assert(sign(0) == 0); assert(sign(-0.1) == -1); assert(min(1, 2) == 1); assert(min(2, 1) == 1); assert(min(-1, 1) == -1); assert(min(3, 3) == 3); assert(max(1, 2) == 2); assert(max(2, 1) == 2); assert(max(-1, -2) == -1); assert(clamp(5, 0, 10) == 5); assert(clamp(-5, 0, 10) == 0); assert(clamp(50, 0, 10) == 10); assert(clamp(0, 0, 10) == 0); assert(clamp(10, 0, 10) == 10); assert(pow(2, 0) == 1); assert(pow(2, 1) == 2); assert(pow(2, 10) == 1024); assert(pow(3, 3) == 27); assert(pow(-2, 3) == -8); assert(pow(0, 0) == 1); assert(pow(1.5, 2) == 2.25); assert(pow(2, -1) == 0.5); assert(floor(3.7) == 3); assert(floor(3) == 3); assert(floor(-3.2) == -4); assert(ceil(3.2) == 4); assert(ceil(3) == 3); assert(ceil(-3.7) == -3); assert(round(3.4) == 3); assert(round(3.6) == 4); assert(round(-3.4) == -3); assert(round(-3.6) == -4); assert(round(2.5) == 3); assert(sqrt(16) == 4); assert(sqrt(0) == 0); assert(sqrt(2.25) == 1.5); assert(abs(sin(0)) < 0.0001); assert(abs(cos(0) - 1) < 0.0001); assert(abs(tan(0)) < 0.0001); assert(abs(sin(PI / 2) - 1) < 0.0001); assert(abs(cos(PI) + 1) < 0.0001); assert(abs(atan2(1, 1) - PI / 4) < 0.0001); assert(abs(PI - 3.14159) < 0.0001); // Random numbers stay in range for(var i = 0; i < 200; i++) { var r = rand(5, 10); assert(r >= 5 && r < 10); assert(r == floor(r)); var f = randf(0, 1); assert(f >= 0 && f <= 1); } assert(rand(3, 4) == 3); // The same seed gives the same numbers randseed(1234); var seedA = [rand(0, 1000), rand(0, 1000), rand(0, 1000)]; randseed(1234); var seedB = [rand(0, 1000), rand(0, 1000), rand(0, 1000)]; assert(deepequal(seedA, seedB)); randseed(0); var zeroSeeded = rand(0, 1000); assert(zeroSeeded >= 0 && zeroSeeded < 1000); // Shuffle keeps every element var deck = [1, 2, 3, 4, 5, 6, 7, 8]; shuffle(deck); assert(len(deck) == 8); var sum = 0; foreach(var card : deck) sum += card; assert(sum == 36);