1#include <xrpl/json/Writer.h>
3#include <xrpl/json/Output.h>
4#include <xrpl/json/json_value.h>
6#include <gtest/gtest.h>
49 EXPECT_TRUE(output_.empty());
50 checkOutputAndReset(
"");
55 EXPECT_TRUE(output_.empty());
57 checkOutputAndReset(
"0");
62 writer_->output(
true);
63 checkOutputAndReset(
"true");
65 writer_->output(
false);
66 checkOutputAndReset(
"false");
69 checkOutputAndReset(
"23");
71 writer_->output(23.0);
72 checkOutputAndReset(
"23.0");
74 writer_->output(23.5);
75 checkOutputAndReset(
"23.5");
77 writer_->output(
"a string");
78 checkOutputAndReset(R
"("a string")");
80 writer_->output(nullptr);
81 checkOutputAndReset(
"null");
88 checkOutputAndReset(
"[]");
92 checkOutputAndReset(
"{}");
97 writer_->output(
"\\");
98 checkOutputAndReset(R
"("\\")");
100 writer_->output("\"");
101 checkOutputAndReset(R
"("\"")");
103 writer_->output("\\\"");
104 checkOutputAndReset(R
"("\\\"")");
106 writer_->output("this contains a \\ in the middle of it.");
107 checkOutputAndReset(R
"("this contains a \\ in the middle of it.")");
109 writer_->output("\b\f\n\r\t");
110 checkOutputAndReset(R
"("\b\f\n\r\t")");
118 checkOutputAndReset("[12]");
125 writer_->append(
true);
126 writer_->append(
"hello");
128 checkOutputAndReset(R
"([12,true,"hello"])");
137 checkOutputAndReset("[[]]");
143 writer_->set(
"hello",
"world");
145 checkOutputAndReset(R
"({"hello":"world"})");
151 writer_->set("hello",
"world");
153 writer_->append(
true);
157 writer_->set(
"goodbye",
"cruel world.");
159 writer_->append(23.5);
160 writer_->finishAll();
162 R
"({"hello":"world","array":[true,12,[{"goodbye":"cruel world.","subarray":[23.5]}]]})");
170 writer_->set(
"hello", value);
172 checkOutputAndReset(R
"({"hello":{"foo":23}})");
void expectOutput(std::string const &expected) const
std::unique_ptr< Writer > writer_
void checkOutputAndReset(std::string const &expected)
JSON (JavaScript Object Notation).
@ Object
object value (collection of name/value pairs).
Output stringOutput(std::string &s)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.