diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2025-10-19 00:50:49 +0200 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2025-10-19 00:50:49 +0200 |
| commit | 72db7f53e47e9c3840b15383da4dc3905f62e77d (patch) | |
| tree | 14f907675dea735cdebf59bacf6ee6965f5d9bc1 | |
| parent | 87276b730d88124f9dd990e76d92e2b0499ac808 (diff) | |
json: Fix ostream writer
Wrote boolean as 1 and 0.
Also improve test code coverage.
| -rw-r--r-- | src/json.cc | 2 | ||||
| -rw-r--r-- | test/json.cc | 44 |
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)); |
