From 4d5e5c82d4898a4fa51270c4e843cd9da90737d2 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Fri, 3 Jul 2015 22:11:29 -0700 Subject: [PATCH] Start WireEncoder testing. Change-Id: I0e4161f5b3cab167d3c3d650588671be8a1b78b3 --- test/unit/test_WireEncoder.cpp | 151 +++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 test/unit/test_WireEncoder.cpp 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