| 101 | |
| 102 | template <typename T> |
| 103 | T TestRead(const string& a) { |
| 104 | // gracefully reject any proper prefix of an encoding |
| 105 | for (int i = 0; i < a.size() - 1; ++i) { |
| 106 | StringPiece s(a.data(), i); |
| 107 | CHECK(!OCRead<T>(&s, nullptr)); |
| 108 | CHECK_EQ(s, a.substr(0, i)); |
| 109 | } |
| 110 | |
| 111 | StringPiece s(a); |
| 112 | T v; |
| 113 | CHECK(OCRead<T>(&s, &v)); |
| 114 | CHECK(s.empty()); |
| 115 | return v; |
| 116 | } |
| 117 | |
| 118 | template <typename T> |
| 119 | void TestWriteRead(T expected) { |