24 std::locale::global(std::locale(
""));
32 MathData() : num_squares_(0), num_triangles_(0) {}
35 for (
int s = 0; s < 42; ++s) {
36 squares_.push_back(s * s);
38 num_squares_ = squares_.size();
39 for (
int t = 0; t < 52; ++t) {
40 triangles_.push_back(t * (t + 1) / 2);
42 num_triangles_ = triangles_.size();
46 EXPECT_EQ(num_squares_, other.num_squares_);
47 for (
unsigned s = 0; s < squares_.size(); ++s) {
48 EXPECT_EQ(squares_[s], other.squares_[s]);
50 EXPECT_EQ(num_triangles_, other.num_triangles_);
51 for (
unsigned s = 0; s < triangles_.size(); ++s) {
52 EXPECT_EQ(triangles_[s], other.triangles_[s]);
56 if (fp->
FWrite(&num_squares_,
sizeof(num_squares_), 1) != 1) {
62 if (fp->
FWrite(&num_triangles_,
sizeof(num_triangles_), 1) != 1) {
71 if (fp->
FReadEndian(&num_squares_,
sizeof(num_squares_), 1) != 1) {
77 if (fp->
FReadEndian(&num_triangles_,
sizeof(num_triangles_), 1) != 1) {
86 ReverseN(&num_squares_,
sizeof(num_squares_));
87 if (fp->
FWrite(&num_squares_,
sizeof(num_squares_), 1) != 1) {
92 if (fp->
FWrite(&num_squares_,
sizeof(num_squares_), 1) != 1) {
95 for (
int &square : squares_) {
101 ReverseN(&num_triangles_,
sizeof(num_triangles_));
102 if (fp->
FWrite(&num_triangles_,
sizeof(num_triangles_), 1) != 1) {
105 if (fp->
FWrite(&num_triangles_,
sizeof(num_triangles_), 1) != 1) {
108 for (
auto &triangle : triangles_) {
109 ReverseN(&triangle,
sizeof(triangles_[0]));
114 if (fp->
FReadEndian(&num_squares_,
sizeof(num_squares_), 1) != 1) {
123 if (fp->
FReadEndian(&last_element,
sizeof(last_element), 1) != 1) {
126 squares_.erase(squares_.begin());
127 squares_.push_back(last_element);
128 if (fp->
FReadEndian(&num_triangles_,
sizeof(num_triangles_), 1) != 1) {
134 if (fp->
FReadEndian(&last_element,
sizeof(last_element), 1) != 1) {
137 triangles_.erase(triangles_.begin());
138 triangles_.push_back(last_element);
143 std::vector<int> squares_;
145 std::vector<int> triangles_;
154 std::vector<char> data;
157 EXPECT_TRUE(m1.Serialize(&fpw));
159 EXPECT_TRUE(fpr.
Open(&data[0], data.size()));
161 EXPECT_TRUE(m2.DeSerialize(&fpr));
164 EXPECT_FALSE(m3.DeSerialize(&fpr));
166 EXPECT_TRUE(m3.DeSerialize(&fpr));
173 std::string line_str =
"This is a textline with a newline\n";
175 std::vector<char> data;
178 EXPECT_TRUE(m1.Serialize(&fpw));
179 EXPECT_EQ(1, fpw.
FWrite(line_str.data(), line_str.size(), 1));
180 EXPECT_TRUE(m1.Serialize(&fpw));
183 EXPECT_TRUE(fpr.
Open(&data[0], data.size()));
185 EXPECT_TRUE(m2.DeSerialize(&fpr));
187 const int kBufsize = 1024;
188 char buffer[kBufsize + 1];
189 EXPECT_EQ(buffer, fpr.
FGets(buffer, kBufsize));
190 EXPECT_STREQ(line_str.c_str(), buffer);
192 EXPECT_TRUE(m3.DeSerialize(&fpr));
200 std::vector<char> data;
203 EXPECT_TRUE(m1.SerializeBigEndian(&fpw));
205 EXPECT_TRUE(fpr.
Open(&data[0], data.size()));
208 EXPECT_TRUE(m2.DeSerializeBigEndian(&fpr));
void ReverseN(void *ptr, int num_bytes)
bool Serialize(FILE *fp, const std::vector< T > &data)
TEST_F(EuroText, FastLatinOCR)
void OpenWrite(std::vector< char > *data)
size_t FWrite(const void *buffer, size_t size, size_t count)
size_t FReadEndian(void *buffer, size_t size, size_t count)
bool DeSerialize(std::string &data)
bool Serialize(const std::string &data)
void set_swap(bool value)
char * FGets(char *buffer, int buffer_size)
bool Open(const char *filename, FileReader reader)
bool DeSerializeBigEndian(TFile *fp)
bool Serialize(TFile *fp)
bool SerializeBigEndian(TFile *fp)
bool DeSerialize(TFile *fp)
void ExpectEq(const MathData &other)