26 #include <gtest/gtest.h>
44 ASSERT_EQ(std::string(j.dump(2)), std::string(k.dump(2)));
63 ASSERT_NE(std::string(j.dump(2)), std::string(k.dump(2)));
75 inline void assert_schema_eq(
const Schema& s,
const Json& expect) {
76 assert_eq(s.json_schema(), expect);
79 inline void assert_schema_eq(
const Schema& s,
const char expect[]) {
83 inline void assert_schema_eq(
const Confable& x,
const Json& expect) {
84 assert_eq(x.schema().json_schema(), expect);
87 inline void assert_schema_eq(
const Confable& x,
const char expect[]) {
91 inline void assert_validate(
const Schema& s,
const Conf& input) {
93 s.validate_or_throw(input);
94 }
catch (SchemaError& e) {
95 pretty_print(e, std::cerr);
100 inline void assert_validate(
const Schema& s,
const char json_input[]) {
101 assert_validate(s, Conf{
parse_json(json_input)});
104 inline void assert_validate(
const Confable& x,
const Conf& input) {
105 assert_validate(x.schema(), input);
108 inline void assert_validate(
const Confable& x,
const char json_input[]) {
109 assert_validate(x.schema(), Conf{parse_json(json_input)});
112 inline void assert_invalidate(
const Schema& s,
const Conf& input) {
113 ASSERT_THROW(s.validate_or_throw(input), SchemaError);
116 inline void assert_invalidate(
const Schema& s,
const char json_input[]) {
117 ASSERT_THROW(s.validate_or_throw(Conf{parse_json(json_input)}), SchemaError);
120 inline void assert_invalidate(
const Confable& x,
const Conf& input) {
121 assert_invalidate(x.schema(), input);
124 inline void assert_invalidate(
const Confable& x,
const char json_input[]) {
125 assert_invalidate(x, Conf{
parse_json(json_input)});
131 template <
typename T>
141 template <
typename T>
146 inline void assert_from_conf_throw(Confable& x,
const Conf& input) {
147 Json before = x.to_json();
148 ASSERT_THROW(x.from_conf(input), SchemaError);
149 assert_eq(x.to_json(), before);
152 inline void assert_from_conf_throw(Confable& x,
const char json_input[]) {
153 assert_from_conf_throw(x, Conf{
parse_json(json_input)});
156 template <
typename T>
157 inline void assert_from_conf(T& x,
const Conf& input) {
161 template <
typename T>
162 inline void assert_from_conf(T& x,
const char json_input[]) {
163 assert_from_conf(x, Conf{
parse_json(json_input)});
172 template <
typename T>
174 assert_from_conf(x,
Conf{identity});
184 template <
typename T>
nlohmann::json Json
Definition: fable_fwd.hpp:35
void assert_ne(const Json &j, const Json &k)
Definition: gtest.hpp:62
void assert_eq(const Json &j, const Json &k)
Definition: gtest.hpp:43
void assert_to_json(const T &x, const Json &expect)
Definition: gtest.hpp:132
void assert_from_eq_to(T &x, const Json &identity)
Definition: gtest.hpp:173
Json parse_json(InputType &&input)
Definition: json.hpp:105