aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZoltan Herczeg <zherczeg.u-szeged@partner.samsung.com>2016-08-09 05:34:16 -0700
committerZoltan Herczeg <zherczeg.u-szeged@partner.samsung.com>2016-08-14 23:20:50 -0700
commitae1118293f19c28376913980d077ab7066860e7c (patch)
tree93a7d2f74b9740335cee5f828d94675e1d36fa88
parentb6f174cce76b4091da2be2fff3d550e63135920c (diff)
Add two new API functions: jerry_create_number_infinity and jerry_create_number_nan
JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
-rw-r--r--docs/02.API-REFERENCE.md71
-rw-r--r--jerry-core/jerry-api.h2
-rw-r--r--jerry-core/jerry.c33
-rw-r--r--tests/unit/test-api.c19
4 files changed, 124 insertions, 1 deletions
diff --git a/docs/02.API-REFERENCE.md b/docs/02.API-REFERENCE.md
index e8e75b17..02c6ad30 100644
--- a/docs/02.API-REFERENCE.md
+++ b/docs/02.API-REFERENCE.md
@@ -1758,6 +1758,77 @@ jerry_create_number (double value);
**See also**
- [jerry_release_value](#jerry_release_value)
+- [jerry_create_number_infinity](#jerry_create_number_infinity)
+- [jerry_create_number_nan](#jerry_create_number_nan)
+
+
+## jerry_create_number_infinity
+
+**Summary**
+
+Creates a `jerry_value_t` representing a positive or negative infinity value.
+
+**Prototype**
+
+```c
+jerry_value_t
+jerry_create_number_infinity (bool sign);
+```
+
+- `sign` - true for negative Infinity and false for positive Infinity
+- return value - a `jerry_value_t` representing the infinity value
+
+**Example**
+
+```c
+{
+ jerry_value_t positive_inf_value = jerry_create_number_infinity (false);
+
+ ... // usage of the positive_inf_value
+
+ jerry_release_value (positive_inf_value);
+}
+```
+
+**See also**
+
+- [jerry_release_value](#jerry_release_value)
+- [jerry_create_number](#jerry_create_number)
+- [jerry_create_number_nan](#jerry_create_number_nan)
+
+
+## jerry_create_number_nan
+
+**Summary**
+
+Creates a `jerry_value_t` representing a not-a-number value.
+
+**Prototype**
+
+```c
+jerry_value_t
+jerry_create_number_nan (void);
+```
+
+- return value - a `jerry_value_t` representing the not-a-number value
+
+**Example**
+
+```c
+{
+ jerry_value_t nan_value = jerry_create_number_nan ();
+
+ ... // usage of the nan_value
+
+ jerry_release_value (nan_value);
+}
+```
+
+**See also**
+
+- [jerry_release_value](#jerry_release_value)
+- [jerry_create_number](#jerry_create_number)
+- [jerry_create_number_infinity](#jerry_create_number_infinity)
## jerry_create_null
diff --git a/jerry-core/jerry-api.h b/jerry-core/jerry-api.h
index 1ff73628..db417e62 100644
--- a/jerry-core/jerry-api.h
+++ b/jerry-core/jerry-api.h
@@ -244,6 +244,8 @@ jerry_value_t jerry_create_error (jerry_error_t, const jerry_char_t *);
jerry_value_t jerry_create_error_sz (jerry_error_t, const jerry_char_t *, jerry_size_t);
jerry_value_t jerry_create_external_function (jerry_external_handler_t);
jerry_value_t jerry_create_number (double);
+jerry_value_t jerry_create_number_infinity (bool);
+jerry_value_t jerry_create_number_nan (void);
jerry_value_t jerry_create_null (void);
jerry_value_t jerry_create_object (void);
jerry_value_t jerry_create_string (const jerry_char_t *);
diff --git a/jerry-core/jerry.c b/jerry-core/jerry.c
index b0bdbbb2..6a3938e7 100644
--- a/jerry-core/jerry.c
+++ b/jerry-core/jerry.c
@@ -854,6 +854,39 @@ jerry_create_number (double value) /**< double value from which a jerry_value_t
} /* jerry_create_number */
/**
+ * Creates a jerry_value_t representing a positive or negative infinity value.
+ *
+ * Note:
+ * returned value must be freed with jerry_release_value, when it is no longer needed.
+ *
+ * @return jerry_value_t representing an infinity value.
+ */
+jerry_value_t
+jerry_create_number_infinity (bool sign) /**< true for negative Infinity
+ * false for positive Infinity */
+{
+ jerry_assert_api_available ();
+
+ return ecma_make_number_value (ecma_number_make_infinity (sign));
+} /* jerry_create_number_infinity */
+
+/**
+ * Creates a jerry_value_t representing a not-a-number value.
+ *
+ * Note:
+ * returned value must be freed with jerry_release_value, when it is no longer needed.
+ *
+ * @return jerry_value_t representing a not-a-number value.
+ */
+jerry_value_t
+jerry_create_number_nan (void)
+{
+ jerry_assert_api_available ();
+
+ return ecma_make_nan_value ();
+} /* jerry_create_number_nan */
+
+/**
* Creates and returns a jerry_value_t with type null object.
*
* @return jerry_value_t representing null
diff --git a/tests/unit/test-api.c b/tests/unit/test-api.c
index 442b13d4..412fee78 100644
--- a/tests/unit/test-api.c
+++ b/tests/unit/test-api.c
@@ -309,6 +309,7 @@ main (void)
jerry_value_t throw_test_handler_val;
jerry_value_t parsed_code_val, proto_val, prim_val;
jerry_value_t res, args[2];
+ double number_val;
char buffer[32];
is_ok = test_run_simple ("print ('Hello, World!');");
@@ -700,9 +701,25 @@ main (void)
// cleanup.
jerry_release_value (global_obj_val);
- // TEST: run gc.
+ // Test: run gc.
jerry_gc ();
+ // Test: number
+ val_t = jerry_create_number (6.25);
+ number_val = jerry_get_number_value (val_t);
+ TEST_ASSERT (number_val * 3 == 18.75);
+ jerry_release_value (val_t);
+
+ val_t = jerry_create_number_infinity (true);
+ number_val = jerry_get_number_value (val_t);
+ TEST_ASSERT (number_val * 3 == number_val && number_val != 0.0);
+ jerry_release_value (val_t);
+
+ val_t = jerry_create_number_nan ();
+ number_val = jerry_get_number_value (val_t);
+ TEST_ASSERT (number_val != number_val);
+ jerry_release_value (val_t);
+
jerry_cleanup ();
TEST_ASSERT (test_api_is_free_callback_was_called);