#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