mirror of https://github.com/svaarala/duktape.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.3 KiB
43 lines
1.3 KiB
/*===
|
|
object 123
|
|
rc=0, result='21'
|
|
number 123
|
|
rc=0, result='21'
|
|
rc=1, result='Error: my error'
|
|
final top: 0
|
|
===*/
|
|
|
|
void test(duk_context *ctx) {
|
|
int rc;
|
|
|
|
/* basic success case, non-strict target function (this gets coerced) */
|
|
duk_eval_string(ctx, "(function (x,y) { print(typeof this, this); return x+y; })");
|
|
duk_push_int(ctx, 123); /* this */
|
|
duk_push_int(ctx, 10);
|
|
duk_push_int(ctx, 11);
|
|
rc = duk_pcall_method(ctx, 2, DUK_INVALID_INDEX);
|
|
printf("rc=%d, result='%s'\n", rc, duk_to_string(ctx, -1));
|
|
duk_pop(ctx);
|
|
|
|
/* basic success case, strict target function (this not coerced)) */
|
|
duk_eval_string(ctx, "(function (x,y) { 'use strict'; print(typeof this, this); return x+y; })");
|
|
duk_push_int(ctx, 123); /* this */
|
|
duk_push_int(ctx, 10);
|
|
duk_push_int(ctx, 11);
|
|
rc = duk_pcall_method(ctx, 2, DUK_INVALID_INDEX);
|
|
printf("rc=%d, result='%s'\n", rc, duk_to_string(ctx, -1));
|
|
duk_pop(ctx);
|
|
|
|
/* basic error case */
|
|
duk_eval_string(ctx, "(function (x,y) { throw new Error('my error'); })");
|
|
duk_push_int(ctx, 123); /* this */
|
|
duk_push_int(ctx, 10);
|
|
duk_push_int(ctx, 11);
|
|
rc = duk_pcall_method(ctx, 2, DUK_INVALID_INDEX);
|
|
printf("rc=%d, result='%s'\n", rc, duk_to_string(ctx, -1));
|
|
duk_pop(ctx);
|
|
|
|
/* FIXME: error handler tests */
|
|
|
|
printf("final top: %d\n", duk_get_top(ctx));
|
|
}
|
|
|