Implement getter function for external string user pointer (#4742)

JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
Zoltan Herczeg
2021-08-30 14:04:13 +02:00
committed by GitHub
parent 4175037fb0
commit 8cbe1b59c1
4 changed files with 143 additions and 1 deletions
+27 -1
View File
@@ -64,40 +64,56 @@ main (void)
jerry_init (JERRY_INIT_EMPTY);
bool is_external;
/* Test external callback calls. */
jerry_string_set_external_free_callback (external_string_free_callback_1);
jerry_value_t external_string = jerry_create_external_string ((jerry_char_t *) external_1, NULL);
TEST_ASSERT (free_count == 0);
TEST_ASSERT (jerry_string_get_external_user_pointer (external_string, &is_external) == NULL);
TEST_ASSERT (is_external);
TEST_ASSERT (jerry_string_get_external_user_pointer (external_string, NULL) == NULL);
jerry_release_value (external_string);
TEST_ASSERT (free_count == 1);
jerry_string_set_external_free_callback (NULL);
external_string = jerry_create_external_string ((jerry_char_t *) external_1, NULL);
external_string = jerry_create_external_string ((jerry_char_t *) external_1, (void *) &free_count);
TEST_ASSERT (free_count == 1);
TEST_ASSERT (jerry_string_get_external_user_pointer (external_string, &is_external) == (void *) &free_count);
TEST_ASSERT (is_external);
TEST_ASSERT (jerry_string_get_external_user_pointer (external_string, NULL) == (void *) &free_count);
jerry_release_value (external_string);
TEST_ASSERT (free_count == 1);
jerry_string_set_external_free_callback (external_string_free_callback_2);
external_string = jerry_create_external_string ((jerry_char_t *) external_2, (void *) &free_count);
TEST_ASSERT (free_count == 2);
TEST_ASSERT (jerry_string_get_external_user_pointer (external_string, &is_external) == NULL);
TEST_ASSERT (!is_external);
jerry_release_value (external_string);
TEST_ASSERT (free_count == 2);
jerry_string_set_external_free_callback (NULL);
external_string = jerry_create_external_string ((jerry_char_t *) external_2, (void *) &free_count);
TEST_ASSERT (free_count == 2);
TEST_ASSERT (jerry_string_get_external_user_pointer (external_string, &is_external) == NULL);
TEST_ASSERT (!is_external);
jerry_release_value (external_string);
TEST_ASSERT (free_count == 2);
jerry_string_set_external_free_callback (external_string_free_callback_3);
external_string = jerry_create_external_string ((jerry_char_t *) external_3, (void *) external_3);
TEST_ASSERT (free_count == 3);
TEST_ASSERT (jerry_string_get_external_user_pointer (external_string, &is_external) == NULL);
TEST_ASSERT (!is_external);
jerry_release_value (external_string);
TEST_ASSERT (free_count == 3);
jerry_string_set_external_free_callback (NULL);
external_string = jerry_create_external_string ((jerry_char_t *) external_3, (void *) external_3);
TEST_ASSERT (free_count == 3);
TEST_ASSERT (jerry_string_get_external_user_pointer (external_string, &is_external) == NULL);
TEST_ASSERT (!is_external);
jerry_release_value (external_string);
TEST_ASSERT (free_count == 3);
@@ -176,6 +192,16 @@ main (void)
jerry_release_value (external_string);
jerry_release_value (other_string);
external_string = jerry_create_boolean (true);
TEST_ASSERT (jerry_string_get_external_user_pointer (external_string, &is_external) == NULL);
TEST_ASSERT (!is_external);
jerry_release_value (external_string);
external_string = jerry_create_object ();
TEST_ASSERT (jerry_string_get_external_user_pointer (external_string, &is_external) == NULL);
TEST_ASSERT (!is_external);
jerry_release_value (external_string);
jerry_cleanup ();
return 0;
} /* main */