Allow script arrays to hold any value type, add script engine tests, archive old rpg code
Remove the per-array type category so arrays can mix types like structs. Add 13 passing and 125 expected-failure duskscript test fixtures with a table-driven runner. Also includes the in-progress entity/physics and archive moves from the working tree. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
This commit is contained in:
1 parent
5c259e46e2
commit
f6b884bf7f
710 files changed
+6172
-27594
No files matched your search
@@ -13,6 +13,7 @@ dusktest(test_duskscript.c)
|
||||
# game's own dusk.dsk - this exercises the real compiler -> pack -> asset ->
|
||||
# runtime -> consolePrint pipeline rather than a shortcut around it.
|
||||
set(DUSKSCRIPT_TEST_ASSETS_DIR ${CMAKE_CURRENT_LIST_DIR}/assets)
|
||||
file(GLOB DUSKSCRIPT_TEST_FIXTURES CONFIGURE_DEPENDS ${DUSKSCRIPT_TEST_ASSETS_DIR}/*.ds)
|
||||
set(DUSKSCRIPT_TEST_DSK ${CMAKE_CURRENT_BINARY_DIR}/test.dsk)
|
||||
|
||||
add_custom_command(
|
||||
@@ -24,8 +25,7 @@ add_custom_command(
|
||||
WORKING_DIRECTORY ${DUSK_ROOT_DIR}
|
||||
DEPENDS
|
||||
duskscriptcc
|
||||
${DUSKSCRIPT_TEST_ASSETS_DIR}/fixture.ds
|
||||
${DUSKSCRIPT_TEST_ASSETS_DIR}/fixture_numbers.ds
|
||||
${DUSKSCRIPT_TEST_FIXTURES}
|
||||
COMMENT "Packing duskscript test fixtures"
|
||||
)
|
||||
add_custom_target(duskscript_test_fixture DEPENDS ${DUSKSCRIPT_TEST_DSK})
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
abs("a");
|
||||
@@ -0,0 +1 @@
|
||||
var r = [1] + 1;
|
||||
@@ -0,0 +1 @@
|
||||
var r = true + 1;
|
||||
@@ -0,0 +1 @@
|
||||
var r = 1 + null;
|
||||
@@ -0,0 +1,4 @@
|
||||
var a = [];
|
||||
for(var i = 0; i < 513; i++) {
|
||||
push(a, i);
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
var a = [];
|
||||
fill(a, 0, 400);
|
||||
merge(a, a);
|
||||
@@ -0,0 +1 @@
|
||||
assert("");
|
||||
@@ -0,0 +1 @@
|
||||
assert(false);
|
||||
@@ -0,0 +1 @@
|
||||
assert();
|
||||
@@ -0,0 +1 @@
|
||||
assert(null);
|
||||
@@ -0,0 +1 @@
|
||||
assert(0);
|
||||
@@ -0,0 +1,4 @@
|
||||
async function f() {
|
||||
assert(false);
|
||||
}
|
||||
await f();
|
||||
@@ -0,0 +1,7 @@
|
||||
async function inner() {
|
||||
return 1 / 0;
|
||||
}
|
||||
async function outer() {
|
||||
return await inner();
|
||||
}
|
||||
await outer();
|
||||
@@ -0,0 +1,2 @@
|
||||
var s = "a";
|
||||
var r = s & 1;
|
||||
@@ -0,0 +1,2 @@
|
||||
var s = {};
|
||||
s.f();
|
||||
@@ -0,0 +1,2 @@
|
||||
var n = null;
|
||||
n();
|
||||
@@ -0,0 +1,2 @@
|
||||
var n = 5;
|
||||
n();
|
||||
@@ -0,0 +1,3 @@
|
||||
map([1], function(v) {
|
||||
assert(false);
|
||||
});
|
||||
@@ -0,0 +1 @@
|
||||
chr(65.5);
|
||||
@@ -0,0 +1 @@
|
||||
chr(256);
|
||||
@@ -0,0 +1 @@
|
||||
chr(0);
|
||||
@@ -0,0 +1 @@
|
||||
var r = 1 < "a";
|
||||
@@ -0,0 +1 @@
|
||||
var r = null > 1;
|
||||
@@ -0,0 +1 @@
|
||||
var r = "a" < "b";
|
||||
@@ -0,0 +1,3 @@
|
||||
const LIST = [1];
|
||||
var alias = LIST;
|
||||
alias[0] = 2;
|
||||
@@ -0,0 +1,2 @@
|
||||
const LIST = [1];
|
||||
pop(LIST);
|
||||
@@ -0,0 +1,2 @@
|
||||
const LIST = [1];
|
||||
push(LIST, 2);
|
||||
@@ -0,0 +1,2 @@
|
||||
const LIST = [2, 1];
|
||||
sort(LIST);
|
||||
@@ -0,0 +1,3 @@
|
||||
const CFG = {a: 1};
|
||||
var alias = CFG;
|
||||
alias.a = 2;
|
||||
@@ -0,0 +1,3 @@
|
||||
const CFG = {a: 1};
|
||||
var alias = CFG;
|
||||
alias.b = 2;
|
||||
@@ -0,0 +1 @@
|
||||
contains("abc", 1);
|
||||
@@ -0,0 +1,3 @@
|
||||
var a = [];
|
||||
push(a, a);
|
||||
deepclone(a);
|
||||
@@ -0,0 +1,3 @@
|
||||
var s = {};
|
||||
s.self = s;
|
||||
deepclone(s);
|
||||
@@ -0,0 +1,2 @@
|
||||
var z = 0;
|
||||
var r = 1 / z;
|
||||
@@ -0,0 +1,3 @@
|
||||
print("before");
|
||||
assert(false);
|
||||
print("after");
|
||||
@@ -0,0 +1,7 @@
|
||||
var total = 0;
|
||||
for(var i = 0; i < 10; i++) {
|
||||
total += i;
|
||||
if(i == 5) {
|
||||
assert(false);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
function f() {
|
||||
var a = [];
|
||||
return a[0];
|
||||
}
|
||||
f();
|
||||
@@ -0,0 +1,7 @@
|
||||
function inner() {
|
||||
return 1 / 0;
|
||||
}
|
||||
function outer() {
|
||||
return inner();
|
||||
}
|
||||
outer();
|
||||
@@ -0,0 +1 @@
|
||||
fill([], 0, -1);
|
||||
@@ -0,0 +1 @@
|
||||
fill([], 0, 513);
|
||||
@@ -0,0 +1 @@
|
||||
filter([1], 5);
|
||||
@@ -0,0 +1 @@
|
||||
flatten([1]);
|
||||
@@ -0,0 +1,2 @@
|
||||
foreach(var v : null) {
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
foreach(var v : 5) {
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
foreach(var v : {a: 1}) {
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
include("definitely_not_a_script.dsb");
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1];
|
||||
a[-1] = 2;
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1];
|
||||
a[5] = 2;
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1, 2];
|
||||
var r = a[0.5];
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1, 2];
|
||||
var r = a[-1];
|
||||
@@ -0,0 +1,2 @@
|
||||
var n = 5;
|
||||
var r = n[0];
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1, 2];
|
||||
var r = a[2];
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1, 2];
|
||||
var r = a["x"];
|
||||
@@ -0,0 +1 @@
|
||||
indexof(5, 1);
|
||||
@@ -0,0 +1 @@
|
||||
indexof("abc", "ab");
|
||||
@@ -0,0 +1 @@
|
||||
insert([1], -1, 0);
|
||||
@@ -0,0 +1 @@
|
||||
insert([1], 5, 0);
|
||||
@@ -0,0 +1 @@
|
||||
insertarr([1], 5, [0]);
|
||||
@@ -0,0 +1,2 @@
|
||||
var s = "a";
|
||||
var r = ~s;
|
||||
@@ -0,0 +1 @@
|
||||
join(5, ",");
|
||||
@@ -0,0 +1 @@
|
||||
join([1], 5);
|
||||
@@ -0,0 +1 @@
|
||||
len(null);
|
||||
@@ -0,0 +1 @@
|
||||
len(5);
|
||||
@@ -0,0 +1 @@
|
||||
map(5, function(v) { return v; });
|
||||
@@ -0,0 +1 @@
|
||||
map([1], 5);
|
||||
@@ -0,0 +1,2 @@
|
||||
var n = null;
|
||||
var r = n.x;
|
||||
@@ -0,0 +1,2 @@
|
||||
var n = 5;
|
||||
var r = n.x;
|
||||
@@ -0,0 +1 @@
|
||||
min("a", 1);
|
||||
@@ -0,0 +1,4 @@
|
||||
function f(a) {
|
||||
return a;
|
||||
}
|
||||
f();
|
||||
@@ -0,0 +1,4 @@
|
||||
function f(a, b) {
|
||||
return a + b;
|
||||
}
|
||||
f(1);
|
||||
@@ -0,0 +1,2 @@
|
||||
var z = 0;
|
||||
var r = 5 % z;
|
||||
@@ -0,0 +1 @@
|
||||
var r = "a" * 2;
|
||||
@@ -0,0 +1,7 @@
|
||||
function a(n) {
|
||||
return b(n);
|
||||
}
|
||||
function b(n) {
|
||||
return a(n);
|
||||
}
|
||||
a(0);
|
||||
@@ -0,0 +1,2 @@
|
||||
var s = "a";
|
||||
var r = -s;
|
||||
@@ -0,0 +1 @@
|
||||
pop("abc");
|
||||
@@ -0,0 +1 @@
|
||||
pow(2, 0.5);
|
||||
@@ -0,0 +1 @@
|
||||
push("abc", "d");
|
||||
@@ -0,0 +1 @@
|
||||
rand(5, 1);
|
||||
@@ -0,0 +1 @@
|
||||
rand(5, 5);
|
||||
@@ -0,0 +1 @@
|
||||
rand(1.5, 3);
|
||||
@@ -0,0 +1 @@
|
||||
randf(1, 1);
|
||||
@@ -0,0 +1,4 @@
|
||||
function f(n) {
|
||||
return f(n + 1);
|
||||
}
|
||||
f(0);
|
||||
@@ -0,0 +1 @@
|
||||
reduce([1], 5, 0);
|
||||
@@ -0,0 +1 @@
|
||||
reverse("abc");
|
||||
@@ -0,0 +1 @@
|
||||
sort([2, 1], false, function(a, b) { return "x"; });
|
||||
@@ -0,0 +1 @@
|
||||
sort([1, "a"]);
|
||||
@@ -0,0 +1 @@
|
||||
sort(5);
|
||||
@@ -0,0 +1 @@
|
||||
sort([{a: 1}, {a: 2}]);
|
||||
@@ -0,0 +1 @@
|
||||
splice([1], 0, -1);
|
||||
@@ -0,0 +1 @@
|
||||
splice([1], 5);
|
||||
@@ -0,0 +1 @@
|
||||
split(5, ",");
|
||||
@@ -0,0 +1 @@
|
||||
sqrt(-1);
|
||||
@@ -0,0 +1,2 @@
|
||||
var s = "abc";
|
||||
s[0] = "x";
|
||||
@@ -0,0 +1,2 @@
|
||||
var s = "abc";
|
||||
var r = s[3];
|
||||
@@ -0,0 +1,4 @@
|
||||
var s = "x";
|
||||
for(var i = 0; i < 10; i++) {
|
||||
s = s + s;
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
var s = {a: 1};
|
||||
var r = s[1];
|
||||
@@ -0,0 +1,2 @@
|
||||
var s = {a: 1};
|
||||
s[1] = 2;
|
||||
@@ -0,0 +1,4 @@
|
||||
var s = {};
|
||||
for(var i = 0; i < 17; i++) {
|
||||
s["k" + i] = i;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
var r = "a" - 1;
|
||||
Loaded 100 of 710 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user