aboutsummaryrefslogtreecommitdiff
path: root/gcc/json.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/json.cc')
-rw-r--r--gcc/json.cc41
1 files changed, 33 insertions, 8 deletions
diff --git a/gcc/json.cc b/gcc/json.cc
index 512e2e5..bec6fc5 100644
--- a/gcc/json.cc
+++ b/gcc/json.cc
@@ -154,18 +154,31 @@ array::append (value *v)
m_elements.safe_push (v);
}
-/* class json::number, a subclass of json::value, wrapping a double. */
+/* class json::float_number, a subclass of json::value, wrapping a double. */
-/* Implementation of json::value::print for json::number. */
+/* Implementation of json::value::print for json::float_number. */
void
-number::print (pretty_printer *pp) const
+float_number::print (pretty_printer *pp) const
{
char tmp[1024];
snprintf (tmp, sizeof (tmp), "%g", m_value);
pp_string (pp, tmp);
}
+/* class json::integer_number, a subclass of json::value, wrapping a long. */
+
+/* Implementation of json::value::print for json::integer_number. */
+
+void
+integer_number::print (pretty_printer *pp) const
+{
+ char tmp[1024];
+ snprintf (tmp, sizeof (tmp), "%ld", m_value);
+ pp_string (pp, tmp);
+}
+
+
/* class json::string, a subclass of json::value. */
/* json::string's ctor. */
@@ -297,11 +310,22 @@ test_writing_arrays ()
/* Verify that JSON numbers are written correctly. */
static void
-test_writing_numbers ()
+test_writing_float_numbers ()
+{
+ assert_print_eq (float_number (0), "0");
+ assert_print_eq (float_number (42), "42");
+ assert_print_eq (float_number (-100), "-100");
+ assert_print_eq (float_number (123456789), "1.23457e+08");
+}
+
+static void
+test_writing_integer_numbers ()
{
- assert_print_eq (number (0), "0");
- assert_print_eq (number (42), "42");
- assert_print_eq (number (-100), "-100");
+ assert_print_eq (integer_number (0), "0");
+ assert_print_eq (integer_number (42), "42");
+ assert_print_eq (integer_number (-100), "-100");
+ assert_print_eq (integer_number (123456789), "123456789");
+ assert_print_eq (integer_number (-123456789), "-123456789");
}
/* Verify that JSON strings are written correctly. */
@@ -337,7 +361,8 @@ json_cc_tests ()
test_object_get ();
test_writing_objects ();
test_writing_arrays ();
- test_writing_numbers ();
+ test_writing_float_numbers ();
+ test_writing_integer_numbers ();
test_writing_strings ();
test_writing_literals ();
}