summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2025-10-19 00:50:49 +0200
committerJoel Klinghed <the_jk@spawned.biz>2025-10-19 00:50:49 +0200
commit72db7f53e47e9c3840b15383da4dc3905f62e77d (patch)
tree14f907675dea735cdebf59bacf6ee6965f5d9bc1
parent87276b730d88124f9dd990e76d92e2b0499ac808 (diff)
json: Fix ostream writer
Wrote boolean as 1 and 0. Also improve test code coverage.
-rw-r--r--src/json.cc2
-rw-r--r--test/json.cc44
2 files changed, 45 insertions, 1 deletions
diff --git a/src/json.cc b/src/json.cc
index 94ff0d4..cb9f0b8 100644
--- a/src/json.cc
+++ b/src/json.cc
@@ -221,7 +221,7 @@ class IosWriter : public BaseWriter {
void write(double value) override { out_ << value; }
- void write(bool value) override { out_ << value; }
+ void write(bool value) override { out_ << (value ? "true" : "false"); }
void write(char value) override { out_ << value; }
diff --git a/test/json.cc b/test/json.cc
index 2fc7ad2..81cf7d6 100644
--- a/test/json.cc
+++ b/test/json.cc
@@ -203,6 +203,20 @@ TEST_P(Writer, quote3) {
EXPECT_EQ(R"("\n")", str());
}
+TEST_P(Writer, quote4) {
+ auto writer = make();
+ writer->value("\r\n\t\b\f");
+
+ EXPECT_EQ(R"("\r\n\t\b\f")", str());
+}
+
+TEST_P(Writer, quote5) {
+ auto writer = make();
+ writer->value("\x0f");
+
+ EXPECT_EQ(R"("\u000f")", str());
+}
+
TEST_P(Writer, float) {
auto writer = make();
writer->value(3.14F);
@@ -217,5 +231,35 @@ TEST_P(Writer, double) {
EXPECT_EQ("3.14", str());
}
+TEST_P(Writer, uint64) {
+ auto writer = make();
+ writer->value(static_cast<uint64_t>(1000));
+
+ EXPECT_EQ("1000", str());
+}
+
+TEST_P(Writer, bool) {
+ auto writer = make();
+ writer->value(true);
+
+ EXPECT_EQ("true", str());
+}
+
+TEST_P(Writer, clear) {
+ auto writer = make();
+ writer->value(true);
+ writer->clear();
+ writer->value(false);
+
+ switch (GetParam()) {
+ case Output::String:
+ EXPECT_EQ("false", str());
+ break;
+ case Output::Stream:
+ EXPECT_EQ("truefalse", str());
+ break;
+ }
+}
+
INSTANTIATE_TEST_SUITE_P(AllOutputs, Writer,
testing::Values(Output::String, Output::Stream));