Revised tests

This commit is contained in:
2026-05-30 10:53:21 +10:00
parent 75cb1dfa86
commit d194bff5fe
36 changed files with 266 additions and 199 deletions
@@ -0,0 +1,15 @@
//NOTE: these tests are all passing - failing tests can be found under the 'mustfails' directory
//basic assert statement
assert true;
//assert on a string (tests for it's truthiness)
assert "Hello world";
//assert on a condition
assert 1 < 2;
//assert with an optional message
assert true, "Assertion message";
//TODO: add mustfails
@@ -0,0 +1,5 @@
//WARN: empty test script
//TODO: test iteration on arrays, tables, closures
//TODO: test break, continue
@@ -0,0 +1,62 @@
//literals
if (true) {
assert true, "if-then-else 1";
}
else {
assert false, "if-then-else 1";
}
//false literals
if (false) {
assert false, "if-then-else 2";
}
else {
assert true, "if-then-else 2";
}
//conditionals
if (1 < 2) {
assert true, "if-then-else 3";
}
if (1 > 2) {
assert false, "if-then-else 3";
}
//variables
var a = 42;
if (a) {
assert true, "if-then-else 4";
}
else {
assert false, "if-then-else 4";
}
if (a == 42) {
assert true, "if-then-else 5";
}
else {
assert false, "if-then-else 5";
}
//concatenated strings
if ("foo" .. "bar" == "foobar") {
assert true, "if-then-else 6";
}
else {
assert false, "if-then-else 6";
}
if ("foobar" == "foo" .. "bar") {
assert true, "if-then-else 7";
}
else {
assert false, "if-then-else 7";
}
if ("fizz" .. "le" == "fi" .. "zzle") {
assert true, "if-then-else 8";
}
else {
assert false, "if-then-else 8";
}
@@ -0,0 +1,46 @@
//literals
if (true)
assert true, "if-then-else 1";
else
assert false, "if-then-else 1";
//false literals
if (false)
assert false, "if-then-else 2";
else
assert true, "if-then-else 2";
//conditionals
if (1 < 2)
assert true, "if-then-else 3";
if (1 > 2)
assert false, "if-then-else 3";
//variables
var a = 42;
if (a)
assert true, "if-then-else 4";
else
assert false, "if-then-else 4";
if (a == 42)
assert true, "if-then-else 5";
else
assert false, "if-then-else 5";
//concatenated strings
if ("foo" .. "bar" == "foobar")
assert true, "if-then-else 6";
else
assert false, "if-then-else 6";
if ("foobar" == "foo" .. "bar")
assert true, "if-then-else 7";
else
assert false, "if-then-else 7";
if ("fizz" .. "le" == "fi" .. "zzle")
assert true, "if-then-else 8";
else
assert false, "if-then-else 8";
@@ -0,0 +1 @@
pass;
@@ -0,0 +1,21 @@
//basic print statement
print 42;
//print compount expressions
print 3 * 5;
//print a string
print "Hello world!";
//print a concatenated string
print "Hello" .. "world!";
//print with escaped characters
print "\tHello\nworld!";
//print from a substring string
print "Hello world"[0,5];
//print from a substring, after a concat
print ("hello" .. "world")[3,3]; //should print "low"
@@ -0,0 +1,12 @@
fn empty() {
//
}
fn almostEmpty() {
return;
}
fn notEmpty() {
return 42;
}
@@ -0,0 +1,132 @@
//make sure it works with multiple repititions
//-------------------------
//test break
while (true) {
break;
assert false, "break failed";
}
//test continue
var flag1: Bool = true;
while (flag1) {
flag1 = false;
continue;
assert false, "continue failed";
}
//-------------------------
//test break
while (true) {
break;
assert false, "break failed";
}
//test continue
var flag2: Bool = true;
while (flag2) {
flag2 = false;
continue;
assert false, "continue failed";
}
//-------------------------
//test break
while (true) {
break;
assert false, "break failed";
}
//test continue
var flag3: Bool = true;
while (flag3) {
flag3 = false;
continue;
assert false, "continue failed";
}
//-------------------------
{
//test break
while (true) {
break;
assert false, "break failed";
}
//test continue
var flag4: Bool = true;
while (flag4) {
flag4 = false;
continue;
assert false, "continue failed";
}
}
//-------------------------
{
//test break
while (true) {
{
break;
}
assert false, "break failed";
}
//test continue
var flag5: Bool = true;
while (flag5) {
flag5 = false;
{
continue;
}
assert false, "continue failed";
}
}
//-------------------------
{
//iteration
var iteration = 0;
while(iteration < 10) {
print iteration;
iteration += 1;
}
}
{
//if and while work together
var count = 1;
while (count <= 10) {
if (count % 2 == 0) {
print "even";
}
else {
print "odd";
}
count += 1;
}
}
//-------------------------
{
//make sure break and continue point to the correct locations
var loops = 0;
while (true) {
if (++loops < 15532) {
continue;
}
break;
}
assert loops == 15532, "Yuki loop failed (break + continue)";
}