simplesync/test/simplesync_test.cpp
2023-12-13 20:37:58 +01:00

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();
}