Files
dusk/test/duskscript/assets/pass_logic.ds
T
YourWishesandClaude Sonnet 5.5 f6b884bf7f 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]>
2026-10-14 23:25:26 -05:00

86 lines
1.8 KiB
Plaintext

// Truthiness
assert(true);
assert(!false);
assert(1);
assert(-1);
assert(0.5);
assert(!0);
assert("text");
assert(!"");
assert(!null);
assert(!undefined);
assert([1]);
assert(!isnull(1));
assert({});
assert(!!1);
assert(!!"a");
assert(!!{});
assert(![]);
assert(!(!true));
// And, or and not give bools
assert((1 && 2) == true);
assert((0 && 2) == false);
assert(("a" || "b") == true);
assert((0 || "b") == true);
assert((0 || 0) == false);
assert((null || undefined) == false);
assert((true && true) == true);
assert((true && false) == false);
assert((false || true) == true);
assert((false || false) == false);
// Precedence: && binds tighter than ||
assert((true || false && false) == true);
assert(((true || false) && false) == false);
assert((false && true || true) == true);
// Short circuit: the right side never runs when the left decides
var calls = 0;
function bump() {
calls++;
return true;
}
var r = false && bump();
assert(calls == 0);
r = true || bump();
assert(calls == 0);
r = true && bump();
assert(calls == 1);
r = false || bump();
assert(calls == 2);
r = (1 > 2) && bump();
assert(calls == 2);
// Guarding an operation that would fail
var none = [];
assert(!(len(none) > 0 && none[0] == 1));
var holder = {value: null};
assert(!(!isnull(holder.value) && holder.value > 1));
// Equality of different types is false, never an error
assert(1 != "1");
assert(true != 1);
assert(null != 0);
assert(null != false);
assert(null != "");
assert(null != undefined);
assert(null == null);
assert(undefined == undefined);
assert([] != "");
assert({} != []);
// Arrays, structs and functions compare by identity
var a = [1];
var b = [1];
var c = a;
assert(a != b);
assert(a == c);
var sa = {k: 1};
var sb = {k: 1};
var sc = sa;
assert(sa != sb);
assert(sa == sc);
assert(bump == bump);
assert(bump != isnull);