cases.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <msgpack.hpp>
  2. #include <fstream>
  3. #include <gtest/gtest.h>
  4. static void feed_file(msgpack::unpacker& pac, const char* path)
  5. {
  6. std::ifstream fin(path);
  7. while(true) {
  8. pac.reserve_buffer(32*1024);
  9. fin.read(pac.buffer(), pac.buffer_capacity());
  10. if(fin.bad()) {
  11. throw std::runtime_error("read failed");
  12. }
  13. pac.buffer_consumed(static_cast<size_t>(fin.gcount()));
  14. if(fin.fail()) {
  15. break;
  16. }
  17. }
  18. }
  19. TEST(cases, format)
  20. {
  21. #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
  22. #pragma GCC diagnostic push
  23. #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
  24. #endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
  25. msgpack::unpacker pac;
  26. msgpack::unpacker pac_compact;
  27. feed_file(pac, "cases.mpac");
  28. feed_file(pac_compact, "cases_compact.mpac");
  29. msgpack::object_handle oh;
  30. while(pac.next(oh)) {
  31. msgpack::object_handle oh_compact;
  32. EXPECT_TRUE( pac_compact.next(oh_compact) );
  33. EXPECT_EQ(oh_compact.get(), oh.get());
  34. }
  35. EXPECT_FALSE( pac_compact.next(oh) );
  36. #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
  37. #pragma GCC diagnostic pop
  38. #endif // (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) && !defined(__clang__)
  39. }