75 lines
2.0 KiB
C++
75 lines
2.0 KiB
C++
#include <cstdint>
|
|
#include <gtest/gtest.h>
|
|
|
|
#include "simplesync.hpp"
|
|
|
|
TEST(simplesync_test, varint) {
|
|
|
|
uint8_t buf[1024];
|
|
for (int i = -999999; i < 999999; i += 29) {
|
|
int offset = simplesync::encode_varint(i, buf);
|
|
ASSERT_LE(1, offset);
|
|
for (int o = 0; o < offset - 1; o += 1)
|
|
EXPECT_FALSE(buf[o] & 0x80)
|
|
<< "offset:" << offset << " " << (uint32_t)(buf[o] & 0x7F);
|
|
EXPECT_TRUE(buf[offset - 1] & 0x80)
|
|
<< "offset:" << offset << " " << (uint32_t)(buf[offset - 1] & 0x7F);
|
|
int out;
|
|
offset = simplesync::decode_varint(buf, out);
|
|
ASSERT_LE(1, offset);
|
|
ASSERT_EQ(out, i);
|
|
}
|
|
}
|
|
|
|
TEST(simplesync_test, encode_decode) {
|
|
|
|
uint8_t buf[1024];
|
|
unsigned int buf_size = sizeof(buf);
|
|
|
|
simplesync::SimpleSync s;
|
|
|
|
int number = 42;
|
|
simplesync::NumberPointerInterface number_if("n1", &number, s);
|
|
ASSERT_EQ(s.num_interfaces(), 1);
|
|
|
|
number_if.sync_requested = true;
|
|
int buf_used = s.generate_message(buf, buf_size);
|
|
ASSERT_LE(1, buf_used);
|
|
|
|
number = 0;
|
|
|
|
int buf_parsed = s.update(buf, buf_used);
|
|
ASSERT_LE(0, buf_parsed);
|
|
ASSERT_EQ(buf_parsed, buf_used);
|
|
ASSERT_EQ(number, 42);
|
|
}
|
|
|
|
/*#include <BSONPP.h>
|
|
|
|
TEST(simplesync_test, encode_decode) {
|
|
|
|
const char* test_str_key = "stringKey";
|
|
const char* test_str_value = "Just a medium length string";
|
|
// This is the buffer to be used by the library.
|
|
uint8_t buffer[256];
|
|
BSONPP doc(buffer, sizeof(buffer));
|
|
doc.append(test_str_key, "Just a medium length string");
|
|
doc.append("num", 10234234);
|
|
|
|
// To read BSON from a buffer pass in the buffer, length and false. By default
|
|
// when passed a buffer it clears the buffer and initialises a new BSON
|
|
// object. Set false to avoid that.
|
|
BSONPP parsed(buffer, sizeof(buffer), false);
|
|
|
|
char *val;
|
|
ASSERT_EQ(BSONPP_SUCCESS, parsed.get(test_str_key, &val));
|
|
EXPECT_STREQ(val, test_str_value);
|
|
|
|
// ASSERT_TRUE(strcmp(decoded.str, "Hello") == 0);
|
|
}*/
|
|
|
|
int main(int argc, char **argv) {
|
|
testing::InitGoogleTest(&argc, argv);
|
|
return RUN_ALL_TESTS();
|
|
}
|