Skip to content

Commit e8ed543

Browse files
authored
Add test_dataview (#4677)
JerryScript-DCO-1.0-Signed-off-by: Gergo Csizi [email protected]
1 parent 703ddae commit e8ed543

File tree

4 files changed

+66
-27
lines changed

4 files changed

+66
-27
lines changed

docs/02.API-REFERENCE.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,19 @@ Enum that contains JerryScript **object** value types:
3939

4040
- JERRY_OBJECT_TYPE_NONE - Non-object type
4141
- JERRY_OBJECT_TYPE_GENERIC - Generic JavaScript object without any internal property
42+
- JERRY_OBJECT_TYPE_MODULE_NAMESPACE - Module namespace object
4243
- JERRY_OBJECT_TYPE_ARRAY - Array object
4344
- JERRY_OBJECT_TYPE_PROXY - Proxy object
4445
- JERRY_OBJECT_TYPE_SCRIPT - Script object (see [jerry_parse](#jerry_parse))
4546
- JERRY_OBJECT_TYPE_MODULE - Module object (see [jerry_parse](#jerry_parse))
47+
- JERRY_OBJECT_TYPE_PROMISE - Promise object
48+
- JERRY_OBJECT_TYPE_DATAVIEW - Dataview object
4649
- JERRY_OBJECT_TYPE_FUNCTION - Function object (see [jerry_function_get_type](#jerry_function_get_type))
4750
- JERRY_OBJECT_TYPE_TYPEDARRAY - %TypedArray% object (see [jerry_get_typedarray_type](#jerry_get_typedarray_type))
4851
- JERRY_OBJECT_TYPE_ITERATOR - Iterator object (see [jerry_iterator_get_type](#jerry_get_typedarray_type))
4952
- JERRY_OBJECT_TYPE_CONTAINER - Container object (see [jerry_get_container_type](#jerry_get_container_type))
53+
- JERRY_OBJECT_TYPE_ERROR - Error object
54+
- JERRY_OBJECT_TYPE_ARRAYBUFFER - Array buffer object
5055

5156
- JERRY_OBJECT_TYPE_ARGUMENTS - Arguments object
5257
- JERRY_OBJECT_TYPE_BOOLEAN - Boolean object

jerry-core/api/jerry.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1513,7 +1513,7 @@ static const uint8_t jerry_class_object_type[] =
15131513
JERRY_OBJECT_TYPE_TYPEDARRAY, /**< type of ECMA_OBJECT_CLASS_TYPEDARRAY */
15141514
#endif /* JERRY_BUILTIN_TYPEDARRAY */
15151515
#if JERRY_MODULE_SYSTEM
1516-
JERRY_OBJECT_TYPE_GENERIC, /**< type of ECMA_OBJECT_CLASS_MODULE_NAMESPACE */
1516+
JERRY_OBJECT_TYPE_MODULE_NAMESPACE, /**< type of ECMA_OBJECT_CLASS_MODULE_NAMESPACE */
15171517
#endif
15181518

15191519
/* These objects are marked by Garbage Collector. */
@@ -1524,18 +1524,18 @@ static const uint8_t jerry_class_object_type[] =
15241524
JERRY_OBJECT_TYPE_ITERATOR, /**< type of ECMA_OBJECT_CLASS_SET_ITERATOR */
15251525
JERRY_OBJECT_TYPE_ITERATOR, /**< type of ECMA_OBJECT_CLASS_MAP_ITERATOR */
15261526
#if JERRY_BUILTIN_REGEXP
1527-
JERRY_OBJECT_TYPE_GENERIC, /**< type of ECMA_OBJECT_CLASS_REGEXP_STRING_ITERATOR */
1527+
JERRY_OBJECT_TYPE_ITERATOR, /**< type of ECMA_OBJECT_CLASS_REGEXP_STRING_ITERATOR */
15281528
#endif /* JERRY_BUILTIN_REGEXP */
15291529
#endif /* JERRY_ESNEXT */
15301530
#if JERRY_MODULE_SYSTEM
15311531
JERRY_OBJECT_TYPE_MODULE, /**< type of ECMA_OBJECT_CLASS_MODULE */
15321532
#endif
15331533
#if JERRY_BUILTIN_PROMISE
1534-
JERRY_OBJECT_TYPE_GENERIC, /**< type of ECMA_OBJECT_CLASS_PROMISE */
1534+
JERRY_OBJECT_TYPE_PROMISE, /**< type of ECMA_OBJECT_CLASS_PROMISE */
15351535
JERRY_OBJECT_TYPE_GENERIC, /**< type of ECMA_OBJECT_CLASS_PROMISE_CAPABILITY */
15361536
#endif /* JERRY_BUILTIN_PROMISE */
15371537
#if JERRY_BUILTIN_DATAVIEW
1538-
JERRY_OBJECT_TYPE_GENERIC, /**< type of ECMA_OBJECT_CLASS_DATAVIEW */
1538+
JERRY_OBJECT_TYPE_DATAVIEW, /**< type of ECMA_OBJECT_CLASS_DATAVIEW */
15391539
#endif /* JERRY_BUILTIN_DATAVIEW */
15401540
#if JERRY_BUILTIN_CONTAINER
15411541
JERRY_OBJECT_TYPE_CONTAINER, /**< type of ECMA_OBJECT_CLASS_CONTAINER */
@@ -1544,7 +1544,7 @@ static const uint8_t jerry_class_object_type[] =
15441544
/* Normal objects. */
15451545
JERRY_OBJECT_TYPE_BOOLEAN, /**< type of ECMA_OBJECT_CLASS_BOOLEAN */
15461546
JERRY_OBJECT_TYPE_NUMBER, /**< type of ECMA_OBJECT_CLASS_NUMBER */
1547-
JERRY_OBJECT_TYPE_GENERIC, /**< type of ECMA_OBJECT_CLASS_ERROR */
1547+
JERRY_OBJECT_TYPE_ERROR, /**< type of ECMA_OBJECT_CLASS_ERROR */
15481548
JERRY_OBJECT_TYPE_GENERIC, /**< type of ECMA_OBJECT_CLASS_INTERNAL_OBJECT */
15491549
#if JERRY_PARSER
15501550
JERRY_OBJECT_TYPE_SCRIPT, /**< type of ECMA_OBJECT_CLASS_SCRIPT */
@@ -1560,7 +1560,7 @@ static const uint8_t jerry_class_object_type[] =
15601560
JERRY_OBJECT_TYPE_ITERATOR, /**< type of ECMA_OBJECT_CLASS_STRING_ITERATOR */
15611561
#endif /* JERRY_ESNEXT */
15621562
#if JERRY_BUILTIN_TYPEDARRAY
1563-
JERRY_OBJECT_TYPE_GENERIC, /**< type of ECMA_OBJECT_CLASS_ARRAY_BUFFER */
1563+
JERRY_OBJECT_TYPE_ARRAYBUFFER, /**< type of ECMA_OBJECT_CLASS_ARRAY_BUFFER */
15641564
#endif /* JERRY_BUILTIN_TYPEDARRAY */
15651565
#if JERRY_BUILTIN_BIGINT
15661566
JERRY_OBJECT_TYPE_BIGINT, /**< type of ECMA_OBJECT_CLASS_BIGINT */

jerry-core/include/jerryscript-types.h

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -473,27 +473,32 @@ typedef enum
473473
*/
474474
typedef enum
475475
{
476-
JERRY_OBJECT_TYPE_NONE = 0u, /**< Non object type */
477-
JERRY_OBJECT_TYPE_GENERIC, /**< Generic JavaScript object without any internal property */
478-
JERRY_OBJECT_TYPE_ARRAY, /**< Array object */
479-
JERRY_OBJECT_TYPE_PROXY, /**< Proxy object */
480-
JERRY_OBJECT_TYPE_SCRIPT, /**< Script object (see jerry_parse) */
481-
JERRY_OBJECT_TYPE_MODULE, /**< Module object (see jerry_parse) */
482-
JERRY_OBJECT_TYPE_FUNCTION, /**< Function object (see jerry_function_get_type) */
483-
JERRY_OBJECT_TYPE_TYPEDARRAY, /**< %TypedArray% object (see jerry_get_typedarray_type) */
484-
JERRY_OBJECT_TYPE_ITERATOR, /**< Iterator object (see jerry_iterator_get_type) */
485-
JERRY_OBJECT_TYPE_CONTAINER, /**< Container object (see jerry_container_get_type) */
486-
487-
JERRY_OBJECT_TYPE_ARGUMENTS, /**< Arguments object */
488-
JERRY_OBJECT_TYPE_BOOLEAN, /**< Boolean object */
489-
JERRY_OBJECT_TYPE_DATE, /**< Date object */
490-
JERRY_OBJECT_TYPE_NUMBER, /**< Number object */
491-
JERRY_OBJECT_TYPE_REGEXP, /**< RegExp object */
492-
JERRY_OBJECT_TYPE_STRING, /**< String object */
493-
JERRY_OBJECT_TYPE_SYMBOL, /**< Symbol object */
494-
JERRY_OBJECT_TYPE_GENERATOR, /**< Generator object */
495-
JERRY_OBJECT_TYPE_BIGINT, /**< BigInt object */
496-
JERRY_OBJECT_TYPE_WEAKREF, /**< WeakRef object */
476+
JERRY_OBJECT_TYPE_NONE = 0u, /**< Non object type */
477+
JERRY_OBJECT_TYPE_GENERIC, /**< Generic JavaScript object without any internal property */
478+
JERRY_OBJECT_TYPE_MODULE_NAMESPACE, /**< Namespace object */
479+
JERRY_OBJECT_TYPE_ARRAY, /**< Array object */
480+
JERRY_OBJECT_TYPE_PROXY, /**< Proxy object */
481+
JERRY_OBJECT_TYPE_SCRIPT, /**< Script object (see jerry_parse) */
482+
JERRY_OBJECT_TYPE_MODULE, /**< Module object (see jerry_parse) */
483+
JERRY_OBJECT_TYPE_PROMISE, /**< Promise object */
484+
JERRY_OBJECT_TYPE_DATAVIEW, /**< Dataview object */
485+
JERRY_OBJECT_TYPE_FUNCTION, /**< Function object (see jerry_function_get_type) */
486+
JERRY_OBJECT_TYPE_TYPEDARRAY, /**< %TypedArray% object (see jerry_get_typedarray_type) */
487+
JERRY_OBJECT_TYPE_ITERATOR, /**< Iterator object (see jerry_iterator_get_type) */
488+
JERRY_OBJECT_TYPE_CONTAINER, /**< Container object (see jerry_container_get_type) */
489+
JERRY_OBJECT_TYPE_ERROR, /**< Error object */
490+
JERRY_OBJECT_TYPE_ARRAYBUFFER, /**< Array buffer object */
491+
492+
JERRY_OBJECT_TYPE_ARGUMENTS, /**< Arguments object */
493+
JERRY_OBJECT_TYPE_BOOLEAN, /**< Boolean object */
494+
JERRY_OBJECT_TYPE_DATE, /**< Date object */
495+
JERRY_OBJECT_TYPE_NUMBER, /**< Number object */
496+
JERRY_OBJECT_TYPE_REGEXP, /**< RegExp object */
497+
JERRY_OBJECT_TYPE_STRING, /**< String object */
498+
JERRY_OBJECT_TYPE_SYMBOL, /**< Symbol object */
499+
JERRY_OBJECT_TYPE_GENERATOR, /**< Generator object */
500+
JERRY_OBJECT_TYPE_BIGINT, /**< BigInt object */
501+
JERRY_OBJECT_TYPE_WEAKREF, /**< WeakRef object */
497502
} jerry_object_type_t;
498503

499504
/**

tests/unit-core/test-api-objecttype.c

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,28 @@ test_ext_function (const jerry_call_info_t *call_info_p, /**< call information *
4040
return jerry_create_boolean (true);
4141
} /* test_ext_function */
4242

43+
static jerry_object_type_t
44+
test_namespace (const jerry_parse_options_t module_parse_options) /** module options */
45+
{
46+
jerry_value_t module = jerry_parse ((const jerry_char_t *) "", 0, &module_parse_options);
47+
jerry_value_t module_linked = jerry_module_link (module, NULL, NULL);
48+
jerry_object_type_t namespace = jerry_module_get_namespace (module);
49+
jerry_release_value (module_linked);
50+
jerry_release_value (module);
51+
return namespace;
52+
} /* test_namespace */
53+
54+
static jerry_value_t
55+
test_dataview (void)
56+
{
57+
jerry_value_t arraybuffer = jerry_create_arraybuffer (10);
58+
jerry_value_t dataview = jerry_create_dataview (arraybuffer, 0, 4);
59+
60+
jerry_release_value (arraybuffer);
61+
62+
return dataview;
63+
} /* test_dataview */
64+
4365
int
4466
main (void)
4567
{
@@ -74,6 +96,7 @@ main (void)
7496
const jerry_char_t regexp_object[] = "new RegExp()";
7597
const jerry_char_t string_object[] = "new String('foo')";
7698
const jerry_char_t weak_ref_object[] = "new WeakRef({})";
99+
const jerry_char_t error_object[] = "new Error()";
77100

78101
jerry_parse_options_t module_parse_options;
79102
module_parse_options.options = JERRY_PARSE_MODULE;
@@ -88,6 +111,7 @@ main (void)
88111
ENTRY (JERRY_OBJECT_TYPE_NONE, jerry_create_error (JERRY_ERROR_TYPE, (const jerry_char_t *) "error")),
89112

90113
ENTRY (JERRY_OBJECT_TYPE_GENERIC, jerry_create_object ()),
114+
ENTRY_IF (JERRY_OBJECT_TYPE_MODULE_NAMESPACE, test_namespace (module_parse_options), JERRY_FEATURE_MODULE),
91115
ENTRY (JERRY_OBJECT_TYPE_ARRAY, jerry_create_array (10)),
92116

93117
ENTRY_IF (JERRY_OBJECT_TYPE_PROXY, EVALUATE (proxy_object), JERRY_FEATURE_PROXY),
@@ -97,6 +121,8 @@ main (void)
97121

98122
ENTRY (JERRY_OBJECT_TYPE_SCRIPT, PARSE (NULL)),
99123
ENTRY_IF (JERRY_OBJECT_TYPE_MODULE, PARSE (&module_parse_options), JERRY_FEATURE_MODULE),
124+
ENTRY_IF (JERRY_OBJECT_TYPE_PROMISE, jerry_create_promise (), JERRY_FEATURE_PROMISE),
125+
ENTRY_IF (JERRY_OBJECT_TYPE_DATAVIEW, test_dataview (), JERRY_FEATURE_DATAVIEW),
100126
ENTRY_IF (JERRY_OBJECT_TYPE_FUNCTION, EVALUATE (arrow_function), JERRY_FEATURE_SYMBOL),
101127
ENTRY_IF (JERRY_OBJECT_TYPE_FUNCTION, EVALUATE (async_arrow_function), JERRY_FEATURE_SYMBOL),
102128
ENTRY_IF (JERRY_OBJECT_TYPE_FUNCTION, EVALUATE (generator_function), JERRY_FEATURE_SYMBOL),
@@ -108,6 +134,8 @@ main (void)
108134
ENTRY (JERRY_OBJECT_TYPE_FUNCTION, jerry_create_external_function (test_ext_function)),
109135
ENTRY (JERRY_OBJECT_TYPE_FUNCTION, EVALUATE (getter_function)),
110136
ENTRY (JERRY_OBJECT_TYPE_FUNCTION, EVALUATE (setter_function)),
137+
ENTRY_IF (JERRY_OBJECT_TYPE_ERROR, EVALUATE (error_object), JERRY_FEATURE_ERROR_MESSAGES),
138+
ENTRY_IF (JERRY_OBJECT_TYPE_ARRAYBUFFER, jerry_create_arraybuffer (10), JERRY_FEATURE_TYPEDARRAY),
111139

112140
ENTRY (JERRY_OBJECT_TYPE_ARGUMENTS, EVALUATE (mapped_arguments)),
113141
ENTRY (JERRY_OBJECT_TYPE_ARGUMENTS, EVALUATE (unmapped_arguments)),
@@ -125,6 +153,7 @@ main (void)
125153
for (size_t idx = 0; idx < sizeof (entries) / sizeof (entries[0]); idx++)
126154
{
127155
jerry_object_type_t type_info = jerry_object_get_type (entries[idx].value);
156+
128157
TEST_ASSERT (!entries[idx].active || type_info == entries[idx].type_info);
129158
jerry_release_value (entries[idx].value);
130159
}

0 commit comments

Comments
 (0)