json_binder_test_bool_test.cxx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. //
  2. // json_binder_test_bool.t.h
  3. // json
  4. //
  5. // Created by Sam Jaffe on 2/27/17.
  6. //
  7. #include <gmock/gmock.h>
  8. #include "json/json_binder.hpp"
  9. using namespace json::binder;
  10. using namespace json::parser;
  11. using namespace ::testing;
  12. TEST(JsonBinderBoolTest, ParsesTrue) {
  13. char data[] = "true";
  14. bool out = false;
  15. value_binder<bool> binder{};
  16. parse(bind(out, binder), data, allow_all);
  17. EXPECT_THAT( out, true );
  18. }
  19. TEST(JsonBinderBoolTest, ParsesFalse) {
  20. char data[] = "false";
  21. bool out = true;
  22. value_binder<bool> binder{};
  23. parse(bind(out, binder), data, allow_all);
  24. EXPECT_THAT( out, false );
  25. }
  26. TEST(JsonBinderBoolTest, ThrowsOnBadData) {
  27. char data[] = "YES"; // Obj-C
  28. bool out = false;
  29. value_binder<bool> binder{};
  30. EXPECT_THROW(parse(bind(out, binder), data, allow_all),
  31. json::malformed_json_exception);
  32. }
  33. TEST(JsonBinderBoolTest, WritesTrue) {
  34. std::string const expected = "true";
  35. std::stringstream ss;
  36. bool const in = true;
  37. value_binder<bool> binder{};
  38. write(bind(in, binder), ss);
  39. EXPECT_THAT(ss.str(), expected);
  40. }
  41. TEST(JsonBinderBoolTest, WritesFalse) {
  42. std::string const expected = "false";
  43. std::stringstream ss;
  44. bool const in = false;
  45. value_binder<bool> binder{};
  46. write(bind(in, binder), ss);
  47. EXPECT_THAT(ss.str(), expected);
  48. }