void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_basic);
	TEST_SAFE_CALL(test_null_ptr);
	TEST_SAFE_CALL(test_slice);
	TEST_SAFE_CALL(test_uncovered_buffer);
	TEST_SAFE_CALL(test_invalid_index);
}
Beispiel #2
0
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_1);
	TEST_SAFE_CALL(test_2a);
	TEST_SAFE_CALL(test_2b);
	TEST_SAFE_CALL(test_2c);
	TEST_SAFE_CALL(test_3a);
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_basic);
	TEST_SAFE_CALL(test_recursive_finalizer);
	TEST_SAFE_CALL(test_get_nonobject);
	TEST_SAFE_CALL(test_set_nonobject);
	TEST_SAFE_CALL(test_finalizer_loop);
}
Beispiel #4
0
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_1);
	TEST_SAFE_CALL(test_2);
	TEST_SAFE_CALL(test_3);
	TEST_SAFE_CALL(test_4);
	TEST_SAFE_CALL(test_5);
}
void test(duk_context *ctx) {
	/*printf("SIZE_MAX=%lf\n", (double) SIZE_MAX);*/

	TEST_SAFE_CALL(test_1a);
	TEST_SAFE_CALL(test_1b);
	TEST_SAFE_CALL(test_2);
	TEST_SAFE_CALL(test_3);
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_1);
	TEST_SAFE_CALL(check_1);
	TEST_SAFE_CALL(check_2);
	TEST_SAFE_CALL(check_3);
	TEST_SAFE_CALL(check_4);
	TEST_SAFE_CALL(require_1);
	TEST_SAFE_CALL(require_2);
	TEST_SAFE_CALL(require_3);
	TEST_SAFE_CALL(require_4);
}
Beispiel #7
0
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_1);
	TEST_SAFE_CALL(test_2);
	TEST_SAFE_CALL(test_3a);
	TEST_SAFE_CALL(test_3b);
	TEST_SAFE_CALL(test_3c);
	TEST_SAFE_CALL(test_3d);
	TEST_SAFE_CALL(test_3e);
	TEST_SAFE_CALL(test_3f);
	TEST_SAFE_CALL(test_3g);
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_1);

	/* When we return the object is finalized once more as part of
	 * heap destruction but no longer rescued.
	 */
}
TEST_F(FooTest, test_require_buffer)
{
    duk_smart_ptr duk_instance(duk_create_heap_default(), [](duk_context* f) { duk_destroy_heap(f); });
	test_function_vector t_vector = {test_basic,test_invalid_type,test_invalid_index1,test_invalid_index2,test_buffer_object};
    for (auto f : t_vector)
    {
        auto pf = *(f.target<duk_safe_call_function>());
        TEST_SAFE_CALL(duk_instance.get(), pf);
    }
}
Beispiel #10
0
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_1a);
	TEST_PCALL(test_1b);
	TEST_PCALL(test_1c);
	TEST_SAFE_CALL(test_1d);
	TEST_SAFE_CALL(test_1e);
	TEST_SAFE_CALL(test_1f);

	TEST_SAFE_CALL(test_2a);
	TEST_PCALL(test_2b);
	TEST_PCALL(test_2c);
	TEST_SAFE_CALL(test_2d);
	TEST_SAFE_CALL(test_2e);

	TEST_SAFE_CALL(test_3a);
	TEST_PCALL(test_3b);
	TEST_SAFE_CALL(test_3c);
	TEST_SAFE_CALL(test_3d);
}
TEST_F(FooTest, test_require_buffer_data)
{
    duk_smart_ptr duk_instance(duk_create_heap_default(), [](duk_context* f) { duk_destroy_heap(f); });
	test_function_vector t_vector = {test_1,test_2,test_3,test_4};

    for (auto f : t_vector)
    {
        auto pf = *(f.target<duk_safe_call_function>());
        TEST_SAFE_CALL(duk_instance.get(), pf);
    }
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_gc);
	TEST_SAFE_CALL(test_is_prototype_of);
	TEST_SAFE_CALL(test_error_augment);
	TEST_SAFE_CALL(test_hasprop);
	TEST_SAFE_CALL(test_getprop);
	TEST_SAFE_CALL(test_putprop);
	TEST_SAFE_CALL(test_instanceof);
	printf("still here\n"); fflush(stdout);
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_trivial);
	TEST_SAFE_CALL(test_basic);
	TEST_SAFE_CALL(test_suspend_resume_throw_trivial);
	TEST_SAFE_CALL(test_suspend_resume_throw_basic);
	TEST_SAFE_CALL(test_suspend_resume_reterr_trivial);
	TEST_SAFE_CALL(test_suspend_resume_reterr_basic);
}
Beispiel #14
0
void test(duk_context *ctx) {

	/* dummy just to offset the object index from 0 */
	duk_push_string(ctx, "foo");

	TEST_SAFE_CALL(test_1);
	TEST_SAFE_CALL(test_2);
	TEST_SAFE_CALL(test_3);
	TEST_SAFE_CALL(test_4);
	TEST_SAFE_CALL(test_5);
	TEST_SAFE_CALL(test_6);
	TEST_SAFE_CALL(test_7);
	TEST_SAFE_CALL(test_8);
	TEST_SAFE_CALL(test_9);

	duk_pop(ctx);  /* dummy */

	printf("final top: %d\n", duk_get_top(ctx));
}
Beispiel #15
0
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_1a);
	TEST_PCALL(test_1b);
	TEST_PCALL(test_1c);
	TEST_SAFE_CALL(test_1d);
	TEST_SAFE_CALL(test_1e);
	TEST_SAFE_CALL(test_1f);

	TEST_SAFE_CALL(test_2a);
	TEST_PCALL(test_2b);
	TEST_PCALL(test_2c);
	TEST_SAFE_CALL(test_2d);
	/* FIXME: currently error message contains the actual DUK_INVALID_INDEX
	 * value, nonportable */
	TEST_SAFE_CALL(test_2e);

	TEST_SAFE_CALL(test_3a);
	TEST_PCALL(test_3b);
	TEST_SAFE_CALL(test_3c);
	/* FIXME: currently error message contains the actual DUK_INVALID_INDEX
	 * value, nonportable */
	TEST_SAFE_CALL(test_3d);
}
Beispiel #16
0
void test(duk_context *ctx) {
	/* If set/delete is rejected (return false) for the property name,
	 * an error is thrown because Duktape/C contexts are always strict
	 * (in Duktape 0.12.0 and onwards).
	 */

	TEST_SAFE_CALL(test_get1);
	TEST_SAFE_CALL(test_get2);
	TEST_SAFE_CALL(test_set1);
	TEST_SAFE_CALL(test_set2);
	TEST_SAFE_CALL(test_delete1);
	TEST_SAFE_CALL(test_delete2);
}
TEST_F(FooTest, test_to_fixed_dynamic_buffer)
{
    duk_smart_ptr duk_instance(duk_create_heap_default(), [](duk_context* f) { duk_destroy_heap(f); });
    test_function_vector t_vector = {
    test_1a,
	test_1b,
	test_2a,
	test_2b,
	test_3a,
	test_3b,
	test_4a,
	test_4b,
	test_5a,
	test_5b,
	test_6a,
	test_6b,
	test_6c};

    for (auto f : t_vector)
    {
        auto pf = *(f.target<duk_safe_call_function>());
        TEST_SAFE_CALL(duk_instance.get(), pf);
    }
}
Beispiel #18
0
TEST_F(FooTest,test_has_prop)
{
	duk_smart_ptr duk_instance(duk_create_heap_default(), [](duk_context* f) { duk_destroy_heap(f); });

	test_function_vector t_vector = {
		test_1a,
		test_1b,
		test_1c,
		test_1d,
		test_1e,

		test_2a,
		test_2b,
		test_2c,

		test_3a,
		test_3b,
		test_3c};
	for (auto f : t_vector)
	{
		auto pf = *(f.target<duk_safe_call_function>());
		TEST_SAFE_CALL(duk_instance.get(), pf);
	}
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_obj_is_key);
	TEST_SAFE_CALL(test_obj_is_arg);
}
void test(duk_context *ctx) {
	/* Indexed read/write */
	TEST_SAFE_CALL(test_duktape_buffer_indexed_1a);
	TEST_SAFE_CALL(test_nodejs_buffer_indexed_1a);
	TEST_SAFE_CALL(test_nodejs_buffer_indexed_1b);
	TEST_SAFE_CALL(test_arraybuffer_indexed_1a);
	TEST_SAFE_CALL(test_uint8array_indexed_1a);
	TEST_SAFE_CALL(test_uint8array_indexed_1b);
	TEST_SAFE_CALL(test_uint16array_indexed_1a);
	TEST_SAFE_CALL(test_uint16array_indexed_1b);
	TEST_SAFE_CALL(test_uint32array_indexed_1a);
	TEST_SAFE_CALL(test_uint32array_indexed_1b);
	TEST_SAFE_CALL(test_float32array_indexed_1a);
	TEST_SAFE_CALL(test_float32array_indexed_1b);
	TEST_SAFE_CALL(test_float64array_indexed_1a);
	TEST_SAFE_CALL(test_float64array_indexed_1b);

	/* JSON.serialize */
	TEST_SAFE_CALL(test_json_serialize_1);

	/* TypedArray constructor byte copy and fast copy */
	TEST_SAFE_CALL(test_typedarray_constructor_copy_1);

	/* TypedArray.prototype.set() */
	TEST_SAFE_CALL(test_typedarray_set_1);

	/* Node.js Buffer compare() */
	TEST_SAFE_CALL(test_nodejs_buffer_compare_1);

	/* Node.js Buffer write() */
	TEST_SAFE_CALL(test_nodejs_buffer_write_1);

	/* Node.js Buffer copy() */
	TEST_SAFE_CALL(test_nodejs_buffer_copy_1);

	/* Node.js Buffer concat() */
	TEST_SAFE_CALL(test_nodejs_buffer_concat_1);
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_basic);
	TEST_SAFE_CALL(test_flags);
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_passthrough);
	TEST_SAFE_CALL(test_trap);
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_basic);
	TEST_SAFE_CALL(test_api_example);
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_nargs_too_large);
	TEST_SAFE_CALL(test_nargs_minus1);
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_string);
	TEST_SAFE_CALL(test_lstring);
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_basic);
	TEST_SAFE_CALL(test_nonwritable);
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_1);
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_1a);
	TEST_SAFE_CALL(test_1b);
	TEST_SAFE_CALL(test_1c);
	TEST_SAFE_CALL(test_2a);
}
Beispiel #29
0
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_1);
	TEST_SAFE_CALL(test_2a);
	TEST_SAFE_CALL(test_2b);
	TEST_SAFE_CALL(test_2c);
	TEST_SAFE_CALL(test_2d);
	TEST_SAFE_CALL(test_2e);
	TEST_SAFE_CALL(test_2f);
	TEST_SAFE_CALL(test_2g);
	TEST_SAFE_CALL(test_2h);
	TEST_SAFE_CALL(test_3);

	/* FIXME: this testcase currently exposes the DUK_INVALID_INDEX
	 * constant in the error message and is thus not portable.
	 */
	TEST_SAFE_CALL(test_4);
}
void test(duk_context *ctx) {
	TEST_SAFE_CALL(test_basic_implicit);
	TEST_SAFE_CALL(test_basic_explicit);
	TEST_SAFE_CALL(test_endfin_return);

	/* Top level unprotected call + return with implicit value. */
	duk_eval_string(ctx,
		"(function () {\n"
		"    print('inside func');\n"
		"})");
	duk_call(ctx, 0);
	printf("result: %s\n", duk_safe_to_string(ctx, -1));
	duk_pop(ctx);

	/* Top level protected call + return with explicit value. */
	duk_eval_string(ctx,
		"(function () {\n"
		"    print('inside func');\n"
		"})");
	(void) duk_pcall(ctx, 0);
	printf("result: %s\n", duk_safe_to_string(ctx, -1));
	duk_pop(ctx);

	/* Top level unprotected call + return with explicit value. */
	duk_eval_string(ctx,
		"(function () {\n"
		"    print('inside func');\n"
		"    return 123;\n"
		"})");
	duk_call(ctx, 0);
	printf("result: %s\n", duk_safe_to_string(ctx, -1));
	duk_pop(ctx);

	/* Top level protected call + return with explicit value. */
	duk_eval_string(ctx,
		"(function () {\n"
		"    print('inside func');\n"
		"    return 123;\n"
		"})");
	duk_pcall(ctx, 0);
	printf("result: %s\n", duk_safe_to_string(ctx, -1));
	duk_pop(ctx);

	/* ENDFIN + RETURN case directly from top level, unprotected call. */
	duk_eval_string(ctx,
		"(function () {\n"
		"    try {\n"
		"        return 321;\n"
		"    } finally {\n"
		"        print('finally');\n"
		"    }\n"
		"    print('never here');\n"
		"})");
	duk_call(ctx, 0);
	printf("result: %s\n", duk_safe_to_string(ctx, -1));
	duk_pop(ctx);

	/* ENDFIN + RETURN case directly from top level, protected call. */
	duk_eval_string(ctx,
		"(function () {\n"
		"    try {\n"
		"        return 321;\n"
		"    } finally {\n"
		"        print('finally');\n"
		"    }\n"
		"    print('never here');\n"
		"})");
	duk_pcall(ctx, 0);
	printf("result: %s\n", duk_safe_to_string(ctx, -1));
	duk_pop(ctx);

	printf("final top: %ld\n", (long) duk_get_top(ctx));
}