serial_test.cxx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. //
  2. // serial_test.cxx
  3. // engine-test
  4. //
  5. // Created by Sam Jaffe on 6/2/19.
  6. // Copyright © 2019 Sam Jaffe. All rights reserved.
  7. //
  8. #include <sstream>
  9. #include "mock_renderer.h"
  10. #include <gmock/gmock.h>
  11. #include <json/json.h>
  12. #include <json/reader.h>
  13. #include "game/engine/serial.hpp"
  14. Json::Value to_json(std::string const & str) {
  15. Json::Value json;
  16. std::stringstream(str) >> json;
  17. return json;
  18. }
  19. struct SerialTest : testing::Test {};
  20. using testing::Eq;
  21. TEST_F(SerialTest, ReadsIntegerVector) {
  22. math::vec2i const expected{{1, 5}};
  23. std::string const data = "[1,5]";
  24. EXPECT_THAT(engine::to_vec2i(to_json(data)), Eq(expected));
  25. }
  26. TEST_F(SerialTest, ReadsIntegerVectorFromFloats) {
  27. math::vec2i const expected{{1, 5}};
  28. std::string const data = "[1.5,5.01]";
  29. EXPECT_THAT(engine::to_vec2i(to_json(data)), Eq(expected));
  30. }
  31. TEST_F(SerialTest, ReadsFloatVector) {
  32. math::vec2 const expected{{1.5, 5.01}};
  33. std::string const data = "[1.5,5.01]";
  34. EXPECT_THAT(engine::to_vec2(to_json(data)), Eq(expected));
  35. }
  36. TEST_F(SerialTest, ReadsFloatVectorFromInts) {
  37. math::vec2 const expected{{1, 5}};
  38. std::string const data = "[1,5]";
  39. EXPECT_THAT(engine::to_vec2(to_json(data)), Eq(expected));
  40. }
  41. TEST_F(SerialTest, MissingFloatDataIsZero) {
  42. math::vec2 const expected{{1, 0}};
  43. std::string const data = "[1]";
  44. EXPECT_THAT(engine::to_vec2(to_json(data)), Eq(expected));
  45. }
  46. TEST_F(SerialTest, FallbackReaderDoesntInvokeIfArray) {
  47. math::vec2 const expected{{0, 0}};
  48. std::string const data = "[]";
  49. EXPECT_THAT(engine::to_vec2(to_json(data), {{1, 5}}), Eq(expected));
  50. }
  51. TEST_F(SerialTest, FallbackReaderActivatesOnNull) {
  52. math::vec2 const expected{{1, 5}};
  53. std::string const data = "null";
  54. EXPECT_THAT(engine::to_vec2(to_json(data), {{1, 5}}), Eq(expected));
  55. }