mirror of
https://github.com/krgamestudios/Toy.git
synced 2026-04-15 14:54:07 +10:00
Merged standard and timer, resolved #48
This commit is contained in:
1603
repl/lib_compound.c
1603
repl/lib_compound.c
File diff suppressed because it is too large
Load Diff
@@ -1,6 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "toy_interpreter.h"
|
||||
|
||||
int Toy_hookCompound(Toy_Interpreter* interpreter, Toy_Literal identifier, Toy_Literal alias);
|
||||
|
||||
1539
repl/lib_standard.c
1539
repl/lib_standard.c
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,7 @@
|
||||
#include "repl_tools.h"
|
||||
#include "lib_about.h"
|
||||
#include "lib_compound.h"
|
||||
#include "lib_standard.h"
|
||||
#include "lib_runner.h"
|
||||
// #include "lib_timer.h"
|
||||
|
||||
#include "toy_console_colors.h"
|
||||
|
||||
@@ -30,10 +28,8 @@ void repl(const char* initialInput) {
|
||||
|
||||
//inject the libs
|
||||
Toy_injectNativeHook(&interpreter, "about", Toy_hookAbout);
|
||||
Toy_injectNativeHook(&interpreter, "compound", Toy_hookCompound);
|
||||
Toy_injectNativeHook(&interpreter, "standard", Toy_hookStandard);
|
||||
Toy_injectNativeHook(&interpreter, "runner", Toy_hookRunner);
|
||||
// Toy_injectNativeHook(&interpreter, "timer", Toy_hookTimer);
|
||||
|
||||
for(;;) {
|
||||
if (!initialInput) {
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
#include "repl_tools.h"
|
||||
#include "lib_about.h"
|
||||
#include "lib_compound.h"
|
||||
#include "lib_standard.h"
|
||||
#include "lib_runner.h"
|
||||
// #include "lib_timer.h"
|
||||
|
||||
#include "toy_console_colors.h"
|
||||
|
||||
@@ -113,10 +111,8 @@ void Toy_runBinary(const unsigned char* tb, size_t size) {
|
||||
|
||||
//inject the libs
|
||||
Toy_injectNativeHook(&interpreter, "about", Toy_hookAbout);
|
||||
Toy_injectNativeHook(&interpreter, "compound", Toy_hookCompound);
|
||||
Toy_injectNativeHook(&interpreter, "standard", Toy_hookStandard);
|
||||
Toy_injectNativeHook(&interpreter, "runner", Toy_hookRunner);
|
||||
// Toy_injectNativeHook(&interpreter, "timer", Toy_hookTimer);
|
||||
|
||||
Toy_runInterpreter(&interpreter, tb, (int)size);
|
||||
Toy_freeInterpreter(&interpreter);
|
||||
|
||||
@@ -1,317 +0,0 @@
|
||||
import compound;
|
||||
|
||||
//test concat
|
||||
{
|
||||
//test array concat
|
||||
{
|
||||
var a = [1, 2, 3];
|
||||
var b = [4, 5, 6];
|
||||
|
||||
var c = a.concat(b).concat(b);
|
||||
|
||||
assert c == [1, 2, 3, 4, 5, 6, 4, 5, 6], "array.concat() failed";
|
||||
}
|
||||
|
||||
//test dictionary concat
|
||||
{
|
||||
var a = ["one" : 1, "two": 2, "three": 3];
|
||||
var b = ["four" : 4, "five": 5, "six": 6];
|
||||
|
||||
var c = a.concat(b);
|
||||
|
||||
assert c.length() == 6, "dictionary.concat().length() failed";
|
||||
|
||||
assert c == ["one" : 1, "two": 2, "three": 3, "four" : 4, "five": 5, "six": 6], "dictionary.concat() comparison failed";
|
||||
}
|
||||
|
||||
//test dictionary concat with clashing keys
|
||||
{
|
||||
var a = ["one" : 1, "two": 2, "three": 3, "random": 1];
|
||||
var b = ["four" : 4, "five": 5, "six": 6, "random": 2];
|
||||
|
||||
var c = a.concat(b);
|
||||
|
||||
assert c["random"] == 1, "dictionary.concat() clashing keys failed";
|
||||
}
|
||||
|
||||
//test string concat
|
||||
{
|
||||
var a = "foo";
|
||||
var b = "bar";
|
||||
|
||||
var c = a.concat(b);
|
||||
|
||||
assert c == "foobar", "string.concat() failed";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//test containsKey
|
||||
{
|
||||
var d = ["one": 1, "two": 2];
|
||||
|
||||
assert d.containsKey("one") == true, "dictionary.containsKey() == true failed";
|
||||
assert d.containsKey("three") == false, "dictionary.containsKey() == false failed";
|
||||
}
|
||||
|
||||
|
||||
//test containsValue
|
||||
{
|
||||
var a = [1, 2, 3];
|
||||
var d = ["one": 1, "two": 2];
|
||||
|
||||
assert a.containsValue(1) == true, "array.containsValue() == true failed";
|
||||
assert a.containsValue(5) == false, "array.containsValue() == false failed";
|
||||
assert d.containsValue(1) == true, "dictionary.containsValue() == true failed";
|
||||
assert d.containsValue(3) == false, "dictionary.containsValue() == false failed";
|
||||
}
|
||||
|
||||
|
||||
//test every
|
||||
{
|
||||
var a = [1, 2, 3];
|
||||
var d = ["one": 1, "two": 2];
|
||||
|
||||
var counter = 0;
|
||||
fn f(k, v) {
|
||||
counter++;
|
||||
return v;
|
||||
}
|
||||
|
||||
assert a.every(f) == true, "array.every() == true failed";
|
||||
assert d.every(f) == true, "dictionary.every() == true failed";
|
||||
|
||||
assert counter == 5, "Unexpected number of calls for _every() == true";
|
||||
|
||||
counter = 0;
|
||||
a[1] = false;
|
||||
d["two"] = false;
|
||||
|
||||
assert a.every(f) == false, "array.every() == false failed";
|
||||
assert d.every(f) == false, "dictionary.every() == false failed";
|
||||
|
||||
assert counter == 4, "Unexpected number of calls for _every() == false";
|
||||
}
|
||||
|
||||
|
||||
//test filter
|
||||
{
|
||||
var a = [1, 2, 3, 4];
|
||||
var d = ["one": 1, "two": 2, "three": 3, "four": 4];
|
||||
|
||||
fn f(k, v) {
|
||||
return v % 2 == 0;
|
||||
}
|
||||
|
||||
assert a.filter(f) == [2, 4], "array.filter() failed";
|
||||
assert d.filter(f) == ["two": 2, "four": 4], "dictionary.filter() failed";
|
||||
}
|
||||
|
||||
|
||||
//test forEach
|
||||
{
|
||||
var counter = 0;
|
||||
|
||||
fn p(k, v) {
|
||||
counter++;
|
||||
print string k + ": " + string v;
|
||||
}
|
||||
|
||||
var a = ["a", "b"];
|
||||
var d = ["foo": 1, "bar": 2, "bazz": 3, "fizz": 4];
|
||||
|
||||
a.forEach(p);
|
||||
assert counter == 2, "forEach ran an unusual number of times";
|
||||
|
||||
counter = 0;
|
||||
d.forEach(p);
|
||||
assert counter == 4, "forEach ran an unusual number of times";
|
||||
}
|
||||
|
||||
|
||||
//test getKeys
|
||||
{
|
||||
var d = ["foo": 1, "bar": 2];
|
||||
|
||||
var a = d.getKeys();
|
||||
|
||||
assert a.length() == 2, "_getKeys() length failed";
|
||||
|
||||
//NOTE: dependant on hash algorithm
|
||||
assert a == ["bar", "foo"], "_getKeys() result failed";
|
||||
}
|
||||
|
||||
|
||||
//test getValues
|
||||
{
|
||||
var d = ["foo": 1, "bar": 2];
|
||||
|
||||
var a = d.getValues();
|
||||
|
||||
assert a.length() == 2, "_getValues() length failed";
|
||||
|
||||
//NOTE: dependant on hash algorithm
|
||||
assert a == [2, 1], "_getValues() result failed";
|
||||
}
|
||||
|
||||
|
||||
//test indexOf
|
||||
{
|
||||
var a = [1, 2, 42, 3];
|
||||
|
||||
//results are zero-indexed
|
||||
assert a.indexOf(42) == 2, "_indexOf() failed";
|
||||
assert a.indexOf(4) == null, "_indexOf() == null failed";
|
||||
}
|
||||
|
||||
|
||||
//test map
|
||||
{
|
||||
//test map with toy functions
|
||||
{
|
||||
fn increment(k, v) {
|
||||
return v + 1;
|
||||
}
|
||||
|
||||
var a = [1, 2, 3];
|
||||
var d = ["four": 4, "five": 5, "six": 6];
|
||||
|
||||
assert a.map(increment).map(increment).map(increment) == [4,5,6], "array.map() failed";
|
||||
assert d.map(increment).map(increment).map(increment) == [8,9,7], "dictionary.map() failed";
|
||||
}
|
||||
|
||||
//test map with native functions
|
||||
{
|
||||
//TODO: write some native functions for use with map
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//test reduce
|
||||
{
|
||||
var a = [1, 2, 3, 4];
|
||||
var d = ["one": 1, "two": 2, "three": 3, "four": 4];
|
||||
|
||||
fn f(acc, k, v) {
|
||||
return acc + v;
|
||||
}
|
||||
|
||||
assert a.reduce(0, f) == 10, "array.reduce() failed";
|
||||
assert d.reduce(0, f) == 10, "dictionary.reduce() failed";
|
||||
}
|
||||
|
||||
|
||||
//test some
|
||||
{
|
||||
var a = [false, false, false];
|
||||
var d = ["one": false, "two": false];
|
||||
|
||||
var counter = 0;
|
||||
fn f(k, v) {
|
||||
counter++;
|
||||
return v;
|
||||
}
|
||||
|
||||
assert a.some(f) == false, "array.some() == false failed";
|
||||
assert d.some(f) == false, "dictionary.some() == false failed";
|
||||
|
||||
assert counter == 5, "Unexpected number of calls for _some() == false";
|
||||
|
||||
counter = 0;
|
||||
a[1] = true;
|
||||
d["two"] = true;
|
||||
|
||||
assert a.some(f) == true, "array.some() == true failed";
|
||||
assert d.some(f) == true, "dictionary.some() == true failed";
|
||||
|
||||
assert counter == 4, "Unexpected number of calls for _some() == true";
|
||||
}
|
||||
|
||||
|
||||
//test sort
|
||||
{
|
||||
fn less(a, b) {
|
||||
return a < b;
|
||||
}
|
||||
|
||||
fn greater(a, b) {
|
||||
return a > b;
|
||||
}
|
||||
|
||||
var a = [7, 2, 1, 8, 6, 3, 5, 4];
|
||||
var b = [7, 2, 1, 4, 6, 3, 5, 8];
|
||||
var c = [1, 2, 3, 4, 5, 6, 7, 8];
|
||||
var d = [7, 2, 1, 8, 6, 3, 5, 4];
|
||||
|
||||
a = a.sort(less);
|
||||
b = b.sort(less);
|
||||
c = c.sort(less);
|
||||
d = d.sort(greater);
|
||||
|
||||
assert a == [1, 2, 3, 4, 5, 6, 7, 8], "array.sort(less) failed";
|
||||
assert b == [1, 2, 3, 4, 5, 6, 7, 8], "array.sort(less) with pivot high failed";
|
||||
assert c == [1, 2, 3, 4, 5, 6, 7, 8], "array.sort(less) pre-sorted array failed";
|
||||
assert d == [8, 7, 6, 5, 4, 3, 2, 1], "array.sort(greater) failed";
|
||||
}
|
||||
|
||||
|
||||
//test toLower
|
||||
{
|
||||
assert "Hello World".toLower() == "hello world", "_toLower() failed";
|
||||
}
|
||||
|
||||
|
||||
//test toString
|
||||
{
|
||||
var a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
|
||||
|
||||
var s = a.toString();
|
||||
|
||||
assert s == "[[1,2,3],[4,5,6],[7,8,9]]", "array._toString() failed";
|
||||
}
|
||||
|
||||
|
||||
//test toUpper
|
||||
{
|
||||
assert "Hello World".toUpper() == "HELLO WORLD", "_toUpper() failed";
|
||||
}
|
||||
|
||||
|
||||
//test trim defaults
|
||||
{
|
||||
{
|
||||
//test a bunch
|
||||
fn test(s, pass) {
|
||||
var result = s.trim();
|
||||
assert result == pass, "_trim(" + result + ") failed";
|
||||
}
|
||||
|
||||
test("hello world", "hello world");
|
||||
test(" hello world", "hello world");
|
||||
test("hello world ", "hello world");
|
||||
test(" hello world ", "hello world");
|
||||
test(" hello world", "hello world");
|
||||
test("hello world ", "hello world");
|
||||
test(" hello world ", "hello world");
|
||||
test(" hello world", "hello world");
|
||||
test("hello world ", "hello world");
|
||||
test(" hello world ", "hello world");
|
||||
|
||||
//one for goot luck
|
||||
assert " hello world ".trim() == "hello world", "hello world.trim() failed";
|
||||
}
|
||||
|
||||
//test trim custom values
|
||||
{
|
||||
var chars = "heliod";
|
||||
|
||||
assert "hello world".trim(chars) == " wor", "custom _trim() failed";
|
||||
}
|
||||
|
||||
//test trimBegin() & trimEnd()
|
||||
assert " foo ".trimBegin() == "foo ", "string.trimBegin() failed";
|
||||
assert " foo ".trimEnd() == " foo", "string.trimBegin() failed";
|
||||
}
|
||||
|
||||
|
||||
print "All good";
|
||||
@@ -1,9 +1,323 @@
|
||||
//test the standard library
|
||||
{
|
||||
import standard;
|
||||
import standard;
|
||||
|
||||
//test clock
|
||||
{
|
||||
//this depends on external factors, so only check the length
|
||||
assert clock().length() == 24, "clock() import failed";
|
||||
assert clock().length() == 24, "clock().length() failed";
|
||||
}
|
||||
|
||||
|
||||
//test concat
|
||||
{
|
||||
//test array concat
|
||||
{
|
||||
var a = [1, 2, 3];
|
||||
var b = [4, 5, 6];
|
||||
|
||||
var c = a.concat(b).concat(b);
|
||||
|
||||
assert c == [1, 2, 3, 4, 5, 6, 4, 5, 6], "array.concat() failed";
|
||||
}
|
||||
|
||||
//test dictionary concat
|
||||
{
|
||||
var a = ["one" : 1, "two": 2, "three": 3];
|
||||
var b = ["four" : 4, "five": 5, "six": 6];
|
||||
|
||||
var c = a.concat(b);
|
||||
|
||||
assert c.length() == 6, "dictionary.concat().length() failed";
|
||||
|
||||
assert c == ["one" : 1, "two": 2, "three": 3, "four" : 4, "five": 5, "six": 6], "dictionary.concat() comparison failed";
|
||||
}
|
||||
|
||||
//test dictionary concat with clashing keys
|
||||
{
|
||||
var a = ["one" : 1, "two": 2, "three": 3, "random": 1];
|
||||
var b = ["four" : 4, "five": 5, "six": 6, "random": 2];
|
||||
|
||||
var c = a.concat(b);
|
||||
|
||||
assert c["random"] == 1, "dictionary.concat() clashing keys failed";
|
||||
}
|
||||
|
||||
//test string concat
|
||||
{
|
||||
var a = "foo";
|
||||
var b = "bar";
|
||||
|
||||
var c = a.concat(b);
|
||||
|
||||
assert c == "foobar", "string.concat() failed";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//test containsKey
|
||||
{
|
||||
var d = ["one": 1, "two": 2];
|
||||
|
||||
assert d.containsKey("one") == true, "dictionary.containsKey() == true failed";
|
||||
assert d.containsKey("three") == false, "dictionary.containsKey() == false failed";
|
||||
}
|
||||
|
||||
|
||||
//test containsValue
|
||||
{
|
||||
var a = [1, 2, 3];
|
||||
var d = ["one": 1, "two": 2];
|
||||
|
||||
assert a.containsValue(1) == true, "array.containsValue() == true failed";
|
||||
assert a.containsValue(5) == false, "array.containsValue() == false failed";
|
||||
assert d.containsValue(1) == true, "dictionary.containsValue() == true failed";
|
||||
assert d.containsValue(3) == false, "dictionary.containsValue() == false failed";
|
||||
}
|
||||
|
||||
|
||||
//test every
|
||||
{
|
||||
var a = [1, 2, 3];
|
||||
var d = ["one": 1, "two": 2];
|
||||
|
||||
var counter = 0;
|
||||
fn f(k, v) {
|
||||
counter++;
|
||||
return v;
|
||||
}
|
||||
|
||||
assert a.every(f) == true, "array.every() == true failed";
|
||||
assert d.every(f) == true, "dictionary.every() == true failed";
|
||||
|
||||
assert counter == 5, "Unexpected number of calls for _every() == true";
|
||||
|
||||
counter = 0;
|
||||
a[1] = false;
|
||||
d["two"] = false;
|
||||
|
||||
assert a.every(f) == false, "array.every() == false failed";
|
||||
assert d.every(f) == false, "dictionary.every() == false failed";
|
||||
|
||||
assert counter == 4, "Unexpected number of calls for _every() == false";
|
||||
}
|
||||
|
||||
|
||||
//test filter
|
||||
{
|
||||
var a = [1, 2, 3, 4];
|
||||
var d = ["one": 1, "two": 2, "three": 3, "four": 4];
|
||||
|
||||
fn f(k, v) {
|
||||
return v % 2 == 0;
|
||||
}
|
||||
|
||||
assert a.filter(f) == [2, 4], "array.filter() failed";
|
||||
assert d.filter(f) == ["two": 2, "four": 4], "dictionary.filter() failed";
|
||||
}
|
||||
|
||||
|
||||
//test forEach
|
||||
{
|
||||
var counter = 0;
|
||||
|
||||
fn p(k, v) {
|
||||
counter++;
|
||||
print string k + ": " + string v;
|
||||
}
|
||||
|
||||
var a = ["a", "b"];
|
||||
var d = ["foo": 1, "bar": 2, "bazz": 3, "fizz": 4];
|
||||
|
||||
a.forEach(p);
|
||||
assert counter == 2, "forEach ran an unusual number of times";
|
||||
|
||||
counter = 0;
|
||||
d.forEach(p);
|
||||
assert counter == 4, "forEach ran an unusual number of times";
|
||||
}
|
||||
|
||||
|
||||
//test getKeys
|
||||
{
|
||||
var d = ["foo": 1, "bar": 2];
|
||||
|
||||
var a = d.getKeys();
|
||||
|
||||
assert a.length() == 2, "_getKeys() length failed";
|
||||
|
||||
//NOTE: dependant on hash algorithm
|
||||
assert a == ["bar", "foo"], "_getKeys() result failed";
|
||||
}
|
||||
|
||||
|
||||
//test getValues
|
||||
{
|
||||
var d = ["foo": 1, "bar": 2];
|
||||
|
||||
var a = d.getValues();
|
||||
|
||||
assert a.length() == 2, "_getValues() length failed";
|
||||
|
||||
//NOTE: dependant on hash algorithm
|
||||
assert a == [2, 1], "_getValues() result failed";
|
||||
}
|
||||
|
||||
|
||||
//test indexOf
|
||||
{
|
||||
var a = [1, 2, 42, 3];
|
||||
|
||||
//results are zero-indexed
|
||||
assert a.indexOf(42) == 2, "_indexOf() failed";
|
||||
assert a.indexOf(4) == null, "_indexOf() == null failed";
|
||||
}
|
||||
|
||||
|
||||
//test map
|
||||
{
|
||||
//test map with toy functions
|
||||
{
|
||||
fn increment(k, v) {
|
||||
return v + 1;
|
||||
}
|
||||
|
||||
var a = [1, 2, 3];
|
||||
var d = ["four": 4, "five": 5, "six": 6];
|
||||
|
||||
assert a.map(increment).map(increment).map(increment) == [4,5,6], "array.map() failed";
|
||||
assert d.map(increment).map(increment).map(increment) == [8,9,7], "dictionary.map() failed";
|
||||
}
|
||||
|
||||
//test map with native functions
|
||||
{
|
||||
//TODO: write some native functions for use with map
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//test reduce
|
||||
{
|
||||
var a = [1, 2, 3, 4];
|
||||
var d = ["one": 1, "two": 2, "three": 3, "four": 4];
|
||||
|
||||
fn f(acc, k, v) {
|
||||
return acc + v;
|
||||
}
|
||||
|
||||
assert a.reduce(0, f) == 10, "array.reduce() failed";
|
||||
assert d.reduce(0, f) == 10, "dictionary.reduce() failed";
|
||||
}
|
||||
|
||||
|
||||
//test some
|
||||
{
|
||||
var a = [false, false, false];
|
||||
var d = ["one": false, "two": false];
|
||||
|
||||
var counter = 0;
|
||||
fn f(k, v) {
|
||||
counter++;
|
||||
return v;
|
||||
}
|
||||
|
||||
assert a.some(f) == false, "array.some() == false failed";
|
||||
assert d.some(f) == false, "dictionary.some() == false failed";
|
||||
|
||||
assert counter == 5, "Unexpected number of calls for _some() == false";
|
||||
|
||||
counter = 0;
|
||||
a[1] = true;
|
||||
d["two"] = true;
|
||||
|
||||
assert a.some(f) == true, "array.some() == true failed";
|
||||
assert d.some(f) == true, "dictionary.some() == true failed";
|
||||
|
||||
assert counter == 4, "Unexpected number of calls for _some() == true";
|
||||
}
|
||||
|
||||
|
||||
//test sort
|
||||
{
|
||||
fn less(a, b) {
|
||||
return a < b;
|
||||
}
|
||||
|
||||
fn greater(a, b) {
|
||||
return a > b;
|
||||
}
|
||||
|
||||
var a = [7, 2, 1, 8, 6, 3, 5, 4];
|
||||
var b = [7, 2, 1, 4, 6, 3, 5, 8];
|
||||
var c = [1, 2, 3, 4, 5, 6, 7, 8];
|
||||
var d = [7, 2, 1, 8, 6, 3, 5, 4];
|
||||
|
||||
a = a.sort(less);
|
||||
b = b.sort(less);
|
||||
c = c.sort(less);
|
||||
d = d.sort(greater);
|
||||
|
||||
assert a == [1, 2, 3, 4, 5, 6, 7, 8], "array.sort(less) failed";
|
||||
assert b == [1, 2, 3, 4, 5, 6, 7, 8], "array.sort(less) with pivot high failed";
|
||||
assert c == [1, 2, 3, 4, 5, 6, 7, 8], "array.sort(less) pre-sorted array failed";
|
||||
assert d == [8, 7, 6, 5, 4, 3, 2, 1], "array.sort(greater) failed";
|
||||
}
|
||||
|
||||
|
||||
//test toLower
|
||||
{
|
||||
assert "Hello World".toLower() == "hello world", "_toLower() failed";
|
||||
}
|
||||
|
||||
|
||||
//test toString
|
||||
{
|
||||
var a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
|
||||
|
||||
var s = a.toString();
|
||||
|
||||
assert s == "[[1,2,3],[4,5,6],[7,8,9]]", "array._toString() failed";
|
||||
}
|
||||
|
||||
|
||||
//test toUpper
|
||||
{
|
||||
assert "Hello World".toUpper() == "HELLO WORLD", "_toUpper() failed";
|
||||
}
|
||||
|
||||
|
||||
//test trim defaults
|
||||
{
|
||||
{
|
||||
//test a bunch
|
||||
fn test(s, pass) {
|
||||
var result = s.trim();
|
||||
assert result == pass, "_trim(" + result + ") failed";
|
||||
}
|
||||
|
||||
test("hello world", "hello world");
|
||||
test(" hello world", "hello world");
|
||||
test("hello world ", "hello world");
|
||||
test(" hello world ", "hello world");
|
||||
test(" hello world", "hello world");
|
||||
test("hello world ", "hello world");
|
||||
test(" hello world ", "hello world");
|
||||
test(" hello world", "hello world");
|
||||
test("hello world ", "hello world");
|
||||
test(" hello world ", "hello world");
|
||||
|
||||
//one for goot luck
|
||||
assert " hello world ".trim() == "hello world", "hello world.trim() failed";
|
||||
}
|
||||
|
||||
//test trim custom values
|
||||
{
|
||||
var chars = "heliod";
|
||||
|
||||
assert "hello world".trim(chars) == " wor", "custom _trim() failed";
|
||||
}
|
||||
|
||||
//test trimBegin() & trimEnd()
|
||||
assert " foo ".trimBegin() == "foo ", "string.trimBegin() failed";
|
||||
assert " foo ".trimEnd() == " foo", "string.trimBegin() failed";
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -14,10 +14,8 @@
|
||||
#include "../repl/repl_tools.h"
|
||||
|
||||
#include "../repl/lib_about.h"
|
||||
#include "../repl/lib_compound.h"
|
||||
#include "../repl/lib_runner.h"
|
||||
#include "../repl/lib_standard.h"
|
||||
// #include "../repl/lib_timer.h"
|
||||
|
||||
//supress the print output
|
||||
static void noPrintFn(const char* output) {
|
||||
@@ -64,9 +62,7 @@ void runBinaryQuietly(const unsigned char* tb, size_t size) {
|
||||
|
||||
//inject the libs
|
||||
Toy_injectNativeHook(&interpreter, "about", Toy_hookAbout);
|
||||
Toy_injectNativeHook(&interpreter, "compound", Toy_hookCompound);
|
||||
Toy_injectNativeHook(&interpreter, "standard", Toy_hookStandard);
|
||||
// Toy_injectNativeHook(&interpreter, "timer", Toy_hookTimer);
|
||||
Toy_injectNativeHook(&interpreter, "runner", Toy_hookRunner);
|
||||
|
||||
Toy_runInterpreter(&interpreter, tb, size);
|
||||
@@ -96,10 +92,8 @@ int main() {
|
||||
Payload payloads[] = {
|
||||
{"interactions.toy", "standard", Toy_hookStandard}, //interactions needs standard
|
||||
{"about.toy", "about", Toy_hookAbout},
|
||||
{"compound.toy", "compound", Toy_hookCompound},
|
||||
{"runner.toy", "runner", Toy_hookRunner},
|
||||
{"standard.toy", "standard", Toy_hookStandard},
|
||||
// {"timer.toy", "timer", Toy_hookTimer},
|
||||
{"runner.toy", "runner", Toy_hookRunner},
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user