From b4fc59139875da5d0a79141dec5fdc2b1e54c6db Mon Sep 17 00:00:00 2001 From: Gergo Csizi Date: Mon, 30 Aug 2021 10:04:14 +0200 Subject: [PATCH] Add new test for resource_name (#4737) JerryScript-DCO-1.0-Signed-off-by: Gergo Csizi csgergo92@gmail.com --- jerry-core/api/jerry.c | 9 ++--- jerry-core/lit/lit-magic-strings.inc.h | 16 ++++++++ tests/unit-core/test-resource-name.c | 53 +++++++++++++++++++++++--- 3 files changed, 66 insertions(+), 12 deletions(-) diff --git a/jerry-core/api/jerry.c b/jerry-core/api/jerry.c index 79e9af856..13bc3a696 100644 --- a/jerry-core/api/jerry.c +++ b/jerry-core/api/jerry.c @@ -5412,14 +5412,11 @@ jerry_get_resource_name (const jerry_value_t value) /**< jerry api value */ ecma_value_t script_value = ((cbc_uint8_arguments_t *) bytecode_p)->script_value; cbc_script_t *script_p = ECMA_GET_INTERNAL_VALUE_POINTER (cbc_script_t, script_value); - if (CBC_SCRIPT_GET_TYPE (script_p) == CBC_SCRIPT_GENERIC) - { - return ecma_copy_value (script_p->resource_name); - } -#endif /* JERRY_RESOURCE_NAME */ - + return ecma_copy_value (script_p->resource_name); +#else /* !JERRY_RESOURCE_NAME */ JERRY_UNUSED (value); return ecma_make_magic_string_value (LIT_MAGIC_STRING_RESOURCE_ANON); +#endif /* JERRY_RESOURCE_NAME */ } /* jerry_get_resource_name */ /** diff --git a/jerry-core/lit/lit-magic-strings.inc.h b/jerry-core/lit/lit-magic-strings.inc.h index ecd8acb0b..7744bf370 100644 --- a/jerry-core/lit/lit-magic-strings.inc.h +++ b/jerry-core/lit/lit-magic-strings.inc.h @@ -781,7 +781,10 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_UTC_DATE_UL, "setUTCDate") #if JERRY_BUILTIN_STRING && JERRY_ESNEXT LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_STARTS_WITH, "startsWith") #endif +#if JERRY_RESOURCE_NAME \ +|| !(JERRY_RESOURCE_NAME) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_RESOURCE_ANON, "") +#endif #if JERRY_BUILTIN_TYPEDARRAY LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ARRAY_BUFFER_UL, "ArrayBuffer") #endif @@ -1127,7 +1130,20 @@ LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_COPY_WITHIN) #else LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_ENUMERABLE) #endif +#if JERRY_RESOURCE_NAME \ +|| !(JERRY_RESOURCE_NAME) LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_RESOURCE_ANON) +#elif JERRY_BUILTIN_TYPEDARRAY +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_ARRAY_BUFFER_UL) +#elif JERRY_BUILTIN_ERRORS +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_SYNTAX_ERROR_UL) +#elif JERRY_BUILTIN_TYPEDARRAY +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_UINT16_ARRAY_UL) +#elif JERRY_BUILTIN_STRING && JERRY_ESNEXT +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_CODE_POINT_AT) +#else +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_CONSTRUCTOR) +#endif #if JERRY_BUILTIN_TYPEDARRAY LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (12, LIT_MAGIC_STRING_FLOAT32_ARRAY_UL) #elif JERRY_BUILTIN_TYPEDARRAY && JERRY_NUMBER_TYPE_FLOAT64 diff --git a/tests/unit-core/test-resource-name.c b/tests/unit-core/test-resource-name.c index d43ede7cd..7e6087b38 100644 --- a/tests/unit-core/test-resource-name.c +++ b/tests/unit-core/test-resource-name.c @@ -81,7 +81,12 @@ main (void) TEST_ASSERT (jerry_value_is_object (run_result)); jerry_value_t resource_value = jerry_get_resource_name (run_result); - TEST_ASSERT (jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, parse_options.resource_name)); + jerry_value_t compare_result = jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, + resource_value, + parse_options.resource_name); + TEST_ASSERT (jerry_value_is_true (compare_result)); + + jerry_release_value (compare_result); jerry_release_value (resource_value); jerry_release_value (parse_options.resource_name); @@ -110,7 +115,10 @@ main (void) TEST_ASSERT (jerry_value_is_object (run_result)); resource_value = jerry_get_resource_name (run_result); - TEST_ASSERT (jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, parse_options.resource_name)); + compare_result = jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, parse_options.resource_name); + TEST_ASSERT (jerry_value_is_true (compare_result)); + + jerry_release_value (compare_result); jerry_release_value (resource_value); jerry_release_value (parse_options.resource_name); @@ -118,6 +126,7 @@ main (void) jerry_release_value (program); if (jerry_is_feature_enabled (JERRY_FEATURE_MODULE)) { + jerry_value_t anon = jerry_create_string ((const jerry_char_t *) ""); const char *source_3 = ""; parse_options.options = JERRY_PARSE_MODULE | JERRY_PARSE_HAS_RESOURCE; @@ -129,14 +138,20 @@ main (void) TEST_ASSERT (!jerry_value_is_error (program)); resource_value = jerry_get_resource_name (program); - TEST_ASSERT (jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, parse_options.resource_name)); + compare_result = jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, parse_options.resource_name); + TEST_ASSERT (jerry_value_is_true (compare_result)); + + jerry_release_value (compare_result); jerry_release_value (resource_value); run_result = jerry_module_link (program, NULL, NULL); TEST_ASSERT (!jerry_value_is_error (run_result)); resource_value = jerry_get_resource_name (run_result); - TEST_ASSERT (jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, parse_options.resource_name)); + compare_result = jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, anon); + TEST_ASSERT (jerry_value_is_true (compare_result)); + + jerry_release_value (compare_result); jerry_release_value (resource_value); jerry_release_value (run_result); @@ -144,7 +159,10 @@ main (void) TEST_ASSERT (!jerry_value_is_error (run_result)); resource_value = jerry_get_resource_name (run_result); - TEST_ASSERT (jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, parse_options.resource_name)); + compare_result = jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, anon); + TEST_ASSERT (jerry_value_is_true (compare_result)); + + jerry_release_value (compare_result); jerry_release_value (resource_value); jerry_release_value (run_result); jerry_release_value (program); @@ -166,13 +184,36 @@ main (void) TEST_ASSERT (jerry_value_is_object (run_result)); resource_value = jerry_get_resource_name (run_result); - TEST_ASSERT (jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, parse_options.resource_name)); + compare_result = jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, parse_options.resource_name); + TEST_ASSERT (jerry_value_is_true (compare_result)); + jerry_release_value (compare_result); jerry_release_value (resource_value); jerry_release_value (parse_options.resource_name); jerry_release_value (run_result); jerry_release_value (program); + const char *source_5 = ""; + + parse_options.options = JERRY_PARSE_HAS_USER_VALUE | JERRY_PARSE_HAS_RESOURCE; + parse_options.user_value = jerry_create_object (); + parse_options.resource_name = jerry_create_string ((jerry_char_t *) "demo5.js"); + + program = jerry_parse ((const jerry_char_t *) source_5, + strlen (source_5), + &parse_options); + TEST_ASSERT (!jerry_value_is_error (program)); + + resource_value = jerry_get_resource_name (program); + compare_result = jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, parse_options.resource_name); + TEST_ASSERT (jerry_value_is_true (compare_result)); + + jerry_release_value (resource_value); + jerry_release_value (compare_result); + jerry_release_value (parse_options.user_value); + jerry_release_value (parse_options.resource_name); + jerry_release_value (program); + jerry_cleanup (); return 0;