mirror of
https://github.com/fraillt/bitsery.git
synced 2026-09-03 08:58:33 +00:00
initial concept commit
This commit is contained in:
129
tests/BufferBytesOpTests.cpp
Normal file
129
tests/BufferBytesOpTests.cpp
Normal file
@@ -0,0 +1,129 @@
|
||||
//
|
||||
// Created by Mindaugas Vinkelis on 2016-11-11.
|
||||
//
|
||||
#include <gmock/gmock.h>
|
||||
#include "BufferWriter.h"
|
||||
#include "BufferReader.h"
|
||||
|
||||
using testing::Eq;
|
||||
using testing::ContainerEq;
|
||||
|
||||
#include <list>
|
||||
#include <bitset>
|
||||
|
||||
struct IntegralTypes {
|
||||
int64_t a;
|
||||
uint32_t b;
|
||||
int16_t c;
|
||||
uint8_t d;
|
||||
int8_t e;
|
||||
int8_t f[2];
|
||||
};
|
||||
|
||||
|
||||
TEST(BufferBytesOperations, WriteAndReadBytes) {
|
||||
//setup data
|
||||
IntegralTypes data;
|
||||
data.a = -4894541654564;
|
||||
data.b = 94545646;
|
||||
data.c = -8778;
|
||||
data.d = 200;
|
||||
data.e = -98;
|
||||
data.f[0] = 43;
|
||||
data.f[1] = -45;
|
||||
|
||||
//create and write to buffer
|
||||
std::vector<uint8_t> buf{};
|
||||
BufferWriter bw{buf};
|
||||
|
||||
bw.WriteBytes<4>(data.b);
|
||||
bw.WriteBytes<1>(data.f[0]);
|
||||
bw.WriteBytes<2>(data.c);
|
||||
bw.WriteBytes<1>(data.d);
|
||||
bw.WriteBytes<8>(data.a);
|
||||
bw.WriteBytes<1>(data.e);
|
||||
bw.WriteBytes<1>(data.f[1]);
|
||||
EXPECT_THAT(std::distance(buf.begin(), buf.end()), Eq(18));
|
||||
//read from buffer
|
||||
BufferReader br{buf};
|
||||
IntegralTypes res{};
|
||||
EXPECT_THAT(br.ReadBytes<4>(res.b), Eq(true));
|
||||
EXPECT_THAT(br.ReadBytes<1>(res.f[0]), Eq(true));
|
||||
EXPECT_THAT(br.ReadBytes<2>(res.c), Eq(true));
|
||||
EXPECT_THAT(br.ReadBytes<1>(res.d), Eq(true));
|
||||
EXPECT_THAT(br.ReadBytes<8>(res.a), Eq(true));
|
||||
EXPECT_THAT(br.ReadBytes<1>(res.e), Eq(true));
|
||||
EXPECT_THAT(br.ReadBytes<1>(res.f[1]), Eq(true));
|
||||
//assert results
|
||||
|
||||
EXPECT_THAT(data.a, Eq(res.a));
|
||||
EXPECT_THAT(data.b, Eq(res.b));
|
||||
EXPECT_THAT(data.c, Eq(res.c));
|
||||
EXPECT_THAT(data.d, Eq(res.d));
|
||||
EXPECT_THAT(data.e, Eq(res.e));
|
||||
EXPECT_THAT(data.f, ContainerEq(res.f));
|
||||
|
||||
}
|
||||
|
||||
TEST(BufferBytesOperations, ReadReturnsFalseIfNotEnoughBufferSize) {
|
||||
//setup data
|
||||
uint8_t a = 111;
|
||||
|
||||
//create and write to buffer
|
||||
std::vector<uint8_t> buf{};
|
||||
BufferWriter bw{buf};
|
||||
|
||||
bw.WriteBytes<1>(a);
|
||||
bw.WriteBytes<1>(a);
|
||||
bw.WriteBytes<1>(a);
|
||||
//read from buffer
|
||||
BufferReader br{buf};
|
||||
int16_t b;
|
||||
int32_t c;
|
||||
EXPECT_THAT(br.ReadBytes<4>(c), Eq(false));
|
||||
EXPECT_THAT(br.ReadBytes<2>(b), Eq(true));
|
||||
EXPECT_THAT(br.ReadBytes<2>(b), Eq(false));
|
||||
EXPECT_THAT(br.ReadBytes<1>(a), Eq(true));
|
||||
EXPECT_THAT(br.ReadBytes<1>(a), Eq(false));
|
||||
EXPECT_THAT(br.ReadBytes<2>(b), Eq(false));
|
||||
EXPECT_THAT(br.ReadBytes<4>(c), Eq(false));
|
||||
|
||||
}
|
||||
|
||||
|
||||
TEST(BufferBytesOperations, ReadIsCompletedWhenAllBytesAreRead) {
|
||||
//setup data
|
||||
IntegralTypes data;
|
||||
data.b = 94545646;
|
||||
data.c = -8778;
|
||||
data.d = 200;
|
||||
|
||||
//create and write to buffer
|
||||
std::vector<uint8_t> buf{};
|
||||
BufferWriter bw{buf};
|
||||
|
||||
bw.WriteBytes<4>(data.b);
|
||||
bw.WriteBytes<2>(data.c);
|
||||
bw.WriteBytes<1>(data.d);
|
||||
//read from buffer
|
||||
BufferReader br{buf};
|
||||
IntegralTypes res;
|
||||
EXPECT_THAT(br.ReadBytes<4>(res.b), Eq(true));
|
||||
EXPECT_THAT(br.ReadBytes<2>(res.c), Eq(true));
|
||||
EXPECT_THAT(br.isCompleted(), Eq(false));
|
||||
EXPECT_THAT(br.ReadBytes<1>(res.d), Eq(true));
|
||||
EXPECT_THAT(br.isCompleted(), Eq(true));
|
||||
EXPECT_THAT(br.ReadBytes<1>(res.d), Eq(false));
|
||||
EXPECT_THAT(br.isCompleted(), Eq(true));
|
||||
|
||||
BufferReader br1{buf};
|
||||
EXPECT_THAT(br1.ReadBytes<4>(res.b), Eq(true));
|
||||
EXPECT_THAT(br1.ReadBytes<2>(res.c), Eq(true));
|
||||
EXPECT_THAT(br1.isCompleted(), Eq(false));
|
||||
EXPECT_THAT(br1.ReadBytes<2>(res.c), Eq(false));
|
||||
EXPECT_THAT(br1.isCompleted(), Eq(false));
|
||||
EXPECT_THAT(br1.ReadBytes<1>(res.d), Eq(true));
|
||||
EXPECT_THAT(br1.isCompleted(), Eq(true));
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user