@@ -77,12 +77,15 @@ module_import_callback (const jerry_value_t specifier, /* string value */
7777{
7878 TEST_ASSERT (user_p == (void * ) & mode );
7979
80- jerry_value_t compare_value = jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL ,
81- user_value ,
82- global_user_value );
80+ if (mode != 3 )
81+ {
82+ jerry_value_t compare_value = jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL ,
83+ user_value ,
84+ global_user_value );
8385
84- TEST_ASSERT (jerry_value_is_true (compare_value ));
85- jerry_release_value (compare_value );
86+ TEST_ASSERT (jerry_value_is_true (compare_value ));
87+ jerry_release_value (compare_value );
88+ }
8689
8790 switch (mode )
8891 {
@@ -107,9 +110,21 @@ module_import_callback (const jerry_value_t specifier, /* string value */
107110 jerry_release_value (object_value );
108111 return promise_value ;
109112 }
113+ case 3 :
114+ {
115+ compare_specifier (specifier , 28 );
116+
117+ TEST_ASSERT (jerry_value_is_object (user_value ));
118+ jerry_value_t property_name = jerry_create_string ((const jerry_char_t * ) "MyProp1" );
119+ jerry_value_t result = jerry_get_property (user_value , property_name );
120+ TEST_ASSERT (jerry_value_is_number (result ) && jerry_get_number_value (result ) == 3.5 );
121+ jerry_release_value (result );
122+ jerry_release_value (property_name );
123+ return jerry_create_undefined ();
124+ }
110125 }
111126
112- TEST_ASSERT (mode == 3 || mode == 4 );
127+ TEST_ASSERT (mode == 4 || mode == 5 );
113128
114129 jerry_parse_options_t parse_options ;
115130 parse_options .options = JERRY_PARSE_MODULE ;
@@ -121,7 +136,7 @@ module_import_callback (const jerry_value_t specifier, /* string value */
121136 TEST_ASSERT (!jerry_value_is_error (result_value ));
122137 jerry_release_value (result_value );
123138
124- if (mode == 3 )
139+ if (mode == 4 )
125140 {
126141 result_value = jerry_module_evaluate (parse_result_value );
127142 TEST_ASSERT (!jerry_value_is_error (result_value ));
@@ -133,13 +148,20 @@ module_import_callback (const jerry_value_t specifier, /* string value */
133148
134149static void
135150run_script (const char * source_p , /* source code */
136- jerry_parse_options_t * parse_options_p ) /* parse options */
151+ jerry_parse_options_t * parse_options_p , /* parse options */
152+ bool release_user_value ) /* release user value */
137153{
138154 jerry_value_t parse_result_value ;
139155
140156 parse_result_value = jerry_parse ((const jerry_char_t * ) source_p , strlen (source_p ), parse_options_p );
141157 TEST_ASSERT (!jerry_value_is_error (parse_result_value ));
142158
159+ if (release_user_value )
160+ {
161+ jerry_release_value (parse_options_p -> user_value );
162+ jerry_gc (JERRY_GC_PRESSURE_HIGH );
163+ }
164+
143165 jerry_value_t result_value ;
144166 if (parse_options_p -> options & JERRY_PARSE_MODULE )
145167 {
@@ -184,11 +206,11 @@ main (void)
184206
185207 if (jerry_is_feature_enabled (JERRY_FEATURE_ERROR_MESSAGES ))
186208 {
187- run_script ("var expected_message = 'Module cannot be instantiated'" , & parse_options );
209+ run_script ("var expected_message = 'Module cannot be instantiated'" , & parse_options , false );
188210 }
189211 else
190212 {
191- run_script ("var expected_message = ''" , & parse_options );
213+ run_script ("var expected_message = ''" , & parse_options , false );
192214 }
193215
194216 global_user_value = jerry_create_object ();
@@ -203,7 +225,7 @@ main (void)
203225 mode = 0 ;
204226 parse_options .options = JERRY_PARSE_HAS_USER_VALUE ;
205227 parse_options .user_value = global_user_value ;
206- run_script (source_p , & parse_options );
228+ run_script (source_p , & parse_options , false );
207229 jerry_release_value (global_user_value );
208230
209231 global_user_value = jerry_create_null ();
@@ -219,7 +241,7 @@ main (void)
219241 mode = 1 ;
220242 parse_options .options = JERRY_PARSE_HAS_USER_VALUE ;
221243 parse_options .user_value = global_user_value ;
222- run_script (source_p , & parse_options );
244+ run_script (source_p , & parse_options , false );
223245 jerry_release_value (global_user_value );
224246
225247 global_user_value = jerry_create_number (5.6 );
@@ -236,7 +258,7 @@ main (void)
236258 mode = 2 ;
237259 parse_options .options = JERRY_PARSE_HAS_USER_VALUE | JERRY_PARSE_MODULE ;
238260 parse_options .user_value = global_user_value ;
239- run_script (source_p , & parse_options );
261+ run_script (source_p , & parse_options , false );
240262 jerry_release_value (global_user_value );
241263
242264 global_user_value = jerry_create_string ((const jerry_char_t * ) "Any string..." );
@@ -249,10 +271,27 @@ main (void)
249271 "}\n"
250272 "f()\n" );
251273
252- mode = 3 ;
274+ for (int i = 0 ; i < 2 ; i ++ )
275+ {
276+ mode = 3 ;
277+ parse_options .options = JERRY_PARSE_HAS_USER_VALUE | (i == 1 ? JERRY_PARSE_MODULE : 0 );
278+ parse_options .user_value = jerry_create_object ();
279+ jerry_value_t property_name = jerry_create_string ((const jerry_char_t * ) "MyProp1" );
280+ jerry_value_t property_value = jerry_create_number (3.5 );
281+ jerry_value_t result = jerry_set_property (parse_options .user_value , property_name , property_value );
282+ TEST_ASSERT (jerry_value_is_true (result ));
283+ jerry_release_value (result );
284+ jerry_release_value (property_value );
285+ jerry_release_value (property_name );
286+
287+ source_p = TEST_STRING_LITERAL ("import('28_module.mjs')" );
288+ run_script (source_p , & parse_options , true);
289+ }
290+
291+ mode = 4 ;
253292 parse_options .options = JERRY_PARSE_HAS_USER_VALUE ;
254293 parse_options .user_value = global_user_value ;
255- run_script (source_p , & parse_options );
294+ run_script (source_p , & parse_options , false );
256295 jerry_release_value (global_user_value );
257296
258297 global_user_value = jerry_create_external_function (global_assert );
@@ -268,10 +307,10 @@ main (void)
268307 "}\n"
269308 "f()\n" );
270309
271- mode = 4 ;
310+ mode = 5 ;
272311 parse_options .options = JERRY_PARSE_HAS_USER_VALUE | JERRY_PARSE_MODULE ;
273312 parse_options .user_value = global_user_value ;
274- run_script (source_p , & parse_options );
313+ run_script (source_p , & parse_options , false );
275314 jerry_release_value (global_user_value );
276315
277316 jerry_cleanup ();
0 commit comments