diff --git a/test/unit/test_WireEncoder.cpp b/test/unit/test_WireEncoder.cpp new file mode 100644 index 0000000000..fbd95011ba --- /dev/null +++ b/test/unit/test_WireEncoder.cpp @@ -0,0 +1,151 @@ +#include "WireEncoder.h" + +#include "gtest/gtest.h" + +#include +#include +#include + +#include "llvm/StringRef.h" + +#define BUFSIZE 1024 + +namespace ntimpl { + +TEST(WireEncoderTest, Construct) { + WireEncoder e(0x0300u); + EXPECT_EQ(0u, e.size()); + EXPECT_EQ(nullptr, e.error()); + EXPECT_EQ(0x0300u, e.proto_rev()); +} + +TEST(WireEncoderTest, SetProtoRev) { + WireEncoder e(0x0300u); + e.set_proto_rev(0x0200u); + EXPECT_EQ(0x0200u, e.proto_rev()); +} + +TEST(WireEncoderTest, Write8) { + std::size_t off = BUFSIZE-1; + WireEncoder e(0x0300u); + for(std::size_t i=0; i::infinity()); + e.WriteDouble(DBL_MIN); + e.WriteDouble(DBL_MAX); + ASSERT_EQ(40u, e.size()-off); + // golden values except min and max from + // http://www.binaryconvert.com/result_double.html + ASSERT_EQ(llvm::StringRef( + "\x00\x00\x00\x00\x00\x00\x00\x00" + "\x41\x0c\x13\x80\x00\x00\x00\x00" + "\x7f\xf0\x00\x00\x00\x00\x00\x00" + "\x00\x10\x00\x00\x00\x00\x00\x00" + "\x7f\xef\xff\xff\xff\xff\xff\xff", + 40), + llvm::StringRef(e.data(), e.size()).substr(off)); +} + +TEST(WireEncoderTest, WriteUleb128) { + std::size_t off = BUFSIZE-2; + WireEncoder e(0x0300u); + for(std::size_t i=0; i