TEST(LEB128Test, WriteUleb128) { #define EXPECT_ULEB128_EQ(EXPECTED, VALUE, PAD) \ do { \ llvm::StringRef expected(EXPECTED, sizeof(EXPECTED)-1); \ llvm::SmallString<32> buf; \ std::size_t size = WriteUleb128(buf, VALUE); \ EXPECT_EQ(size, buf.size()); \ EXPECT_EQ(expected, buf.str()); \ } while (0) // Write ULEB128 EXPECT_ULEB128_EQ("\x00", 0, 0); EXPECT_ULEB128_EQ("\x01", 1, 0); EXPECT_ULEB128_EQ("\x3f", 63, 0); EXPECT_ULEB128_EQ("\x40", 64, 0); EXPECT_ULEB128_EQ("\x7f", 0x7f, 0); EXPECT_ULEB128_EQ("\x80\x01", 0x80, 0); EXPECT_ULEB128_EQ("\x81\x01", 0x81, 0); EXPECT_ULEB128_EQ("\x90\x01", 0x90, 0); EXPECT_ULEB128_EQ("\xff\x01", 0xff, 0); EXPECT_ULEB128_EQ("\x80\x02", 0x100, 0); EXPECT_ULEB128_EQ("\x81\x02", 0x101, 0); #undef EXPECT_ULEB128_EQ }
TEST(LEB128Test, WriteUleb128) { #define EXPECT_ULEB128_EQ(EXPECTED, VALUE, PAD) \ do { \ llvm::StringRef expected(EXPECTED, sizeof(EXPECTED)-1); \ char buf[32]; \ std::size_t size = WriteUleb128(buf, VALUE); \ llvm::StringRef actual(buf, size); \ EXPECT_EQ(expected, actual); \ } while (0) // Write ULEB128 EXPECT_ULEB128_EQ("\x00", 0, 0); EXPECT_ULEB128_EQ("\x01", 1, 0); EXPECT_ULEB128_EQ("\x3f", 63, 0); EXPECT_ULEB128_EQ("\x40", 64, 0); EXPECT_ULEB128_EQ("\x7f", 0x7f, 0); EXPECT_ULEB128_EQ("\x80\x01", 0x80, 0); EXPECT_ULEB128_EQ("\x81\x01", 0x81, 0); EXPECT_ULEB128_EQ("\x90\x01", 0x90, 0); EXPECT_ULEB128_EQ("\xff\x01", 0xff, 0); EXPECT_ULEB128_EQ("\x80\x02", 0x100, 0); EXPECT_ULEB128_EQ("\x81\x02", 0x101, 0); #undef EXPECT_ULEB128_EQ }