json BUGFIX parsing number with E0
diff --git a/tests/utests/basic/test_json.c b/tests/utests/basic/test_json.c
index cd10c83..96fcc05 100644
--- a/tests/utests/basic/test_json.c
+++ b/tests/utests/basic/test_json.c
@@ -104,6 +104,15 @@
assert_int_equal(0, jsonctx->dynamic);
lyjson_ctx_free(jsonctx);
+ str = "-0";
+ assert_non_null(ly_in_memory(in, str));
+ assert_int_equal(LY_SUCCESS, lyjson_ctx_new(UTEST_LYCTX, in, &jsonctx));
+ assert_int_equal(LYJSON_NUMBER, lyjson_ctx_status(jsonctx, 0));
+ assert_string_equal("-0", jsonctx->value);
+ assert_int_equal(2, jsonctx->value_len);
+ assert_int_equal(0, jsonctx->dynamic);
+ lyjson_ctx_free(jsonctx);
+
/* exp number */
str = "1E10";
assert_non_null(ly_in_memory(in, str));
@@ -136,6 +145,24 @@
assert_non_null(ly_in_memory(in, str));
assert_int_equal(LY_EVALID, lyjson_ctx_new(UTEST_LYCTX, in, &jsonctx));
+ str = "0E0";
+ assert_non_null(ly_in_memory(in, str));
+ assert_int_equal(LY_SUCCESS, lyjson_ctx_new(UTEST_LYCTX, in, &jsonctx));
+ assert_int_equal(LYJSON_NUMBER, lyjson_ctx_status(jsonctx, 0));
+ assert_string_equal("0", jsonctx->value);
+ assert_int_equal(1, jsonctx->value_len);
+ assert_int_equal(1, jsonctx->dynamic);
+ lyjson_ctx_free(jsonctx);
+
+ str = "0E-0";
+ assert_non_null(ly_in_memory(in, str));
+ assert_int_equal(LY_SUCCESS, lyjson_ctx_new(UTEST_LYCTX, in, &jsonctx));
+ assert_int_equal(LYJSON_NUMBER, lyjson_ctx_status(jsonctx, 0));
+ assert_string_equal("0", jsonctx->value);
+ assert_int_equal(1, jsonctx->value_len);
+ assert_int_equal(1, jsonctx->dynamic);
+ lyjson_ctx_free(jsonctx);
+
/* exp fraction number */
str = "1.1e3";
assert_non_null(ly_in_memory(in, str));
@@ -155,6 +182,15 @@
assert_int_equal(1, jsonctx->dynamic);
lyjson_ctx_free(jsonctx);
+ str = "0.0e0";
+ assert_non_null(ly_in_memory(in, str));
+ assert_int_equal(LY_SUCCESS, lyjson_ctx_new(UTEST_LYCTX, in, &jsonctx));
+ assert_int_equal(LYJSON_NUMBER, lyjson_ctx_status(jsonctx, 0));
+ assert_string_equal("0.0", jsonctx->value);
+ assert_int_equal(3, jsonctx->value_len);
+ assert_int_equal(1, jsonctx->dynamic);
+ lyjson_ctx_free(jsonctx);
+
/* negative exp fraction number */
str = "1.1e-3";
assert_non_null(ly_in_memory(in, str));
@@ -183,6 +219,15 @@
assert_int_equal(1, jsonctx->dynamic);
lyjson_ctx_free(jsonctx);
+ str = "0.0e-0";
+ assert_non_null(ly_in_memory(in, str));
+ assert_int_equal(LY_SUCCESS, lyjson_ctx_new(UTEST_LYCTX, in, &jsonctx));
+ assert_int_equal(LYJSON_NUMBER, lyjson_ctx_status(jsonctx, 0));
+ assert_string_equal("0.0", jsonctx->value);
+ assert_int_equal(3, jsonctx->value_len);
+ assert_int_equal(1, jsonctx->dynamic);
+ lyjson_ctx_free(jsonctx);
+
/* exp negative fraction number */
str = "-0.11e3";
assert_non_null(ly_in_memory(in, str));
@@ -202,6 +247,15 @@
assert_int_equal(1, jsonctx->dynamic);
lyjson_ctx_free(jsonctx);
+ str = "-0.0e0";
+ assert_non_null(ly_in_memory(in, str));
+ assert_int_equal(LY_SUCCESS, lyjson_ctx_new(UTEST_LYCTX, in, &jsonctx));
+ assert_int_equal(LYJSON_NUMBER, lyjson_ctx_status(jsonctx, 0));
+ assert_string_equal("-0.0", jsonctx->value);
+ assert_int_equal(4, jsonctx->value_len);
+ assert_int_equal(1, jsonctx->dynamic);
+ lyjson_ctx_free(jsonctx);
+
/* negative exp negative fraction number */
str = "-3.14e-3";
assert_non_null(ly_in_memory(in, str));
@@ -230,6 +284,15 @@
assert_int_equal(1, jsonctx->dynamic);
lyjson_ctx_free(jsonctx);
+ str = "-0.0e-0";
+ assert_non_null(ly_in_memory(in, str));
+ assert_int_equal(LY_SUCCESS, lyjson_ctx_new(UTEST_LYCTX, in, &jsonctx));
+ assert_int_equal(LYJSON_NUMBER, lyjson_ctx_status(jsonctx, 0));
+ assert_string_equal("-0.0", jsonctx->value);
+ assert_int_equal(4, jsonctx->value_len);
+ assert_int_equal(1, jsonctx->dynamic);
+ lyjson_ctx_free(jsonctx);
+
/* various invalid inputs */
str = "-x";
assert_non_null(ly_in_memory(in, str));