1616#include "jerryscript.h"
1717#include "test-common.h"
1818
19+ static void
20+ compare_str (jerry_value_t value , const char * str_p , size_t str_len )
21+ {
22+ jerry_size_t size = jerry_get_string_size (value );
23+ JERRY_ASSERT (str_len == size );
24+ JERRY_VLA (jerry_char_t , str_buff , size );
25+ jerry_string_to_utf8_char_buffer (value , str_buff , size );
26+ JERRY_ASSERT (!memcmp (str_p , str_buff , str_len ));
27+ } /* compare_str */
28+
1929int
2030main (void )
2131{
@@ -31,6 +41,80 @@ main (void)
3141
3242 JERRY_ASSERT (obj_val != err_val );
3343 jerry_release_value (err_val );
44+ jerry_release_value (obj_val );
45+
46+ const char * pterodactylus_p = "Pterodactylus" ;
47+ const size_t pterodactylus_size = strlen (pterodactylus_p );
48+
49+ jerry_value_t str = jerry_create_string ((jerry_char_t * ) pterodactylus_p );
50+ jerry_value_t error = jerry_create_error_from_value (str , true);
51+ str = jerry_get_value_from_error (error , true);
52+
53+ compare_str (str , pterodactylus_p , pterodactylus_size );
54+ jerry_release_value (str );
55+
56+ str = jerry_create_string ((jerry_char_t * ) pterodactylus_p );
57+ error = jerry_create_error_from_value (str , false);
58+ jerry_release_value (str );
59+ str = jerry_get_value_from_error (error , true);
60+
61+ compare_str (str , pterodactylus_p , pterodactylus_size );
62+ jerry_release_value (str );
63+
64+ double test_num = 3.1415926 ;
65+ jerry_value_t num = jerry_create_number (test_num );
66+ jerry_value_t num2 = jerry_create_error_from_value (num , false);
67+ JERRY_ASSERT (jerry_value_is_error (num2 ));
68+ jerry_release_value (num );
69+ num2 = jerry_get_value_from_error (num2 , true);
70+ JERRY_ASSERT (jerry_get_number_value (num2 ) == test_num );
71+ jerry_release_value (num2 );
72+
73+ num = jerry_create_number (test_num );
74+ num2 = jerry_create_error_from_value (num , true);
75+ JERRY_ASSERT (jerry_value_is_error (num2 ));
76+ num2 = jerry_get_value_from_error (num2 , true);
77+ JERRY_ASSERT (jerry_get_number_value (num2 ) == test_num );
78+ jerry_release_value (num2 );
79+
80+ num = jerry_create_number (test_num );
81+ num2 = jerry_create_error_from_value (num , false);
82+ JERRY_ASSERT (jerry_value_is_error (num2 ));
83+ jerry_release_value (num );
84+ jerry_value_t num3 = jerry_create_error_from_value (num2 , false);
85+ JERRY_ASSERT (jerry_value_is_error (num3 ));
86+ jerry_release_value (num2 );
87+ num2 = jerry_get_value_from_error (num3 , true);
88+ JERRY_ASSERT (jerry_get_number_value (num2 ) == test_num );
89+ jerry_release_value (num2 );
90+
91+ num = jerry_create_number (test_num );
92+ num2 = jerry_create_error_from_value (num , true);
93+ JERRY_ASSERT (jerry_value_is_error (num2 ));
94+ num3 = jerry_create_error_from_value (num2 , true);
95+ JERRY_ASSERT (jerry_value_is_error (num3 ));
96+ num2 = jerry_get_value_from_error (num3 , true);
97+ JERRY_ASSERT (jerry_get_number_value (num2 ) == test_num );
98+ jerry_release_value (num2 );
99+
100+ num = jerry_create_number (test_num );
101+ jerry_value_set_abort_flag (& num );
102+ JERRY_ASSERT (jerry_value_is_abort (num ));
103+ num2 = jerry_create_error_from_value (num , true);
104+ JERRY_ASSERT (jerry_value_is_error (num2 ));
105+ num = jerry_get_value_from_error (num2 , true);
106+ JERRY_ASSERT (jerry_get_number_value (num ) == test_num );
107+ jerry_release_value (num );
108+
109+ num = jerry_create_number (test_num );
110+ jerry_value_set_abort_flag (& num );
111+ JERRY_ASSERT (jerry_value_is_abort (num ));
112+ num2 = jerry_create_error_from_value (num , false);
113+ jerry_release_value (num );
114+ JERRY_ASSERT (jerry_value_is_error (num2 ));
115+ num = jerry_get_value_from_error (num2 , true);
116+ JERRY_ASSERT (jerry_get_number_value (num ) == test_num );
117+ jerry_release_value (num );
34118
35119 jerry_value_t value = jerry_create_number (42 );
36120 value = jerry_get_value_from_error (value , true);
@@ -42,7 +126,7 @@ main (void)
42126 jerry_release_value (value2 );
43127
44128 value = jerry_create_number (42 );
45- jerry_value_t error = jerry_create_error_from_value (value , true);
129+ error = jerry_create_error_from_value (value , true);
46130 error = jerry_create_error_from_value (error , true);
47131 jerry_release_value (error );
48132
0 commit comments