memgraph/tests/unit/pod_buffer.cpp
Ivan Paljak 035540c598 POD serialization, rocksdb integration and Gleich's optimization
Reviewers: buda, dgleich, mferencevic, msantl, teon.banek

Reviewed By: buda, dgleich, teon.banek

Subscribers: teon.banek, pullbot

Differential Revision: https://phabricator.memgraph.io/D1399
2018-06-12 13:54:41 +02:00

61 lines
1.4 KiB
C++

#include <glog/logging.h>
#include <gtest/gtest.h>
#include "storage/pod_buffer.hpp"
class PODBufferTest : public ::testing::Test {
protected:
storage::PODBuffer buffer_;
void SetUp() override { buffer_ = storage::PODBuffer(""); }
void Write(const uint8_t *data, size_t len) { buffer_.Write(data, len); }
bool Read(uint8_t *data, size_t len) { return buffer_.Read(data, len); }
};
TEST_F(PODBufferTest, ReadEmpty) {
uint8_t data[10];
ASSERT_TRUE(Read(data, 0));
for (int i = 1; i <= 5; ++i) ASSERT_FALSE(Read(data, i));
}
TEST_F(PODBufferTest, ReadNonEmpty) {
uint8_t input_data[10];
uint8_t output_data[10];
for (int i = 0; i < 10; ++i) input_data[i] = i;
Write(input_data, 10);
ASSERT_TRUE(Read(output_data, 10));
for (int i = 0; i < 10; ++i) ASSERT_EQ(output_data[i], i);
ASSERT_FALSE(Read(output_data, 1));
}
TEST_F(PODBufferTest, WriteRead) {
uint8_t input_data[10];
uint8_t output_data[10];
for (int i = 0; i < 10; ++i) input_data[i] = i;
Write(input_data, 10);
ASSERT_TRUE(Read(output_data, 5));
for (int i = 0; i < 5; ++i) ASSERT_EQ(output_data[i], i);
ASSERT_TRUE(Read(output_data, 5));
for (int i = 0; i < 5; ++i) ASSERT_EQ(output_data[i], i + 5);
ASSERT_FALSE(Read(output_data, 1));
Write(input_data + 5, 5);
ASSERT_TRUE(Read(output_data, 5));
for (int i = 0; i < 5; ++i) ASSERT_EQ(output_data[i], i + 5);
ASSERT_FALSE(Read(output_data, 1));
}