diff --git a/scripts/test/lib/interactions.toy b/scripts/test/lib/interactions.toy new file mode 100644 index 0000000..f4e1c64 --- /dev/null +++ b/scripts/test/lib/interactions.toy @@ -0,0 +1,42 @@ +//test the standard library, under a number of different circumstances + +//test basic import +{ + import standard; + + //this depends on external factors, so only check the length + assert clock().length() == 24, "import library failed"; +} + + +//test import within a function +{ + fn f() { + import standard; + + assert clock != null, "import library within function failed"; + + return clock; + } + + //invoke + assert f()().length() == 24, "import library within function and return failed"; +} + + +//test closing over standard library element +{ + import standard; + + fn f() { + assert clock != null, "import library outside function failed"; + + return clock; + } + + //invoke + assert f()().length() == 24, "import library outside function and return failed"; +} + + +print "All good"; diff --git a/test/test_libraries.c b/test/test_libraries.c index e97cbba..e8d0f85 100644 --- a/test/test_libraries.c +++ b/test/test_libraries.c @@ -95,8 +95,9 @@ void runBinary(unsigned char* tb, size_t size) { initInterpreter(&interpreter); //NOTE: supress print output for testing -// setInterpreterPrint(&interpreter, noPrintFn); + setInterpreterPrint(&interpreter, noPrintFn); + //inject the standard libraries into this interpreter injectNativeHook(&interpreter, "standard", hookStandard); runInterpreter(&interpreter, tb, size); @@ -123,6 +124,7 @@ int main() { { //run each file in ../scripts/test/ char* filenames[] = { + "interactions.toy", "standard.toy", NULL };