| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #include "gtest/gtest.h"
- #include <WireFormatter.h>
- #include <cstdint>
- #include <limits>
- namespace test_EmbeddedAMS_WireFormatter
- {
- TEST(WireFormatter, MakeTag)
- {
- // Varints
- EXPECT_EQ(0x0000, ::EmbeddedProto::WireFormatter::MakeTag(0, ::EmbeddedProto::WireFormatter::WireType::VARINT));
- EXPECT_EQ(0x0008, ::EmbeddedProto::WireFormatter::MakeTag(1, ::EmbeddedProto::WireFormatter::WireType::VARINT));
- EXPECT_EQ(0x07F8, ::EmbeddedProto::WireFormatter::MakeTag(255, ::EmbeddedProto::WireFormatter::WireType::VARINT));
- // Doubles
- EXPECT_EQ(0x0001, ::EmbeddedProto::WireFormatter::MakeTag(0, ::EmbeddedProto::WireFormatter::WireType::FIXED64));
- EXPECT_EQ(0x0009, ::EmbeddedProto::WireFormatter::MakeTag(1, ::EmbeddedProto::WireFormatter::WireType::FIXED64));
- EXPECT_EQ(0x07F9, ::EmbeddedProto::WireFormatter::MakeTag(255, ::EmbeddedProto::WireFormatter::WireType::FIXED64));
- // Repeated fields
- EXPECT_EQ(0x0002, ::EmbeddedProto::WireFormatter::MakeTag(0, ::EmbeddedProto::WireFormatter::WireType::LENGTH_DELIMITED));
- EXPECT_EQ(0x000A, ::EmbeddedProto::WireFormatter::MakeTag(1, ::EmbeddedProto::WireFormatter::WireType::LENGTH_DELIMITED));
- EXPECT_EQ(0x07FA, ::EmbeddedProto::WireFormatter::MakeTag(255, ::EmbeddedProto::WireFormatter::WireType::LENGTH_DELIMITED));
- // Skip the depricated group type.
- // Floats
- EXPECT_EQ(0x0005, ::EmbeddedProto::WireFormatter::MakeTag(0, ::EmbeddedProto::WireFormatter::WireType::FIXED32));
- EXPECT_EQ(0x000D, ::EmbeddedProto::WireFormatter::MakeTag(1, ::EmbeddedProto::WireFormatter::WireType::FIXED32));
- EXPECT_EQ(0x07FD, ::EmbeddedProto::WireFormatter::MakeTag(255, ::EmbeddedProto::WireFormatter::WireType::FIXED32));
- }
- TEST(WireFormatter, WriteVarint32ToArray)
- {
- // There are five bytes required to encode a 32bit value, take one extra for checking the return
- // values.
- uint8_t target[6];
- EXPECT_EQ(&target[1], ::EmbeddedProto::WireFormatter::WriteVarint32ToArray(0, target));
- EXPECT_EQ(0, target[0]);
- EXPECT_EQ(&target[1], ::EmbeddedProto::WireFormatter::WriteVarint32ToArray(1, target));
- EXPECT_EQ(1, target[0]);
- // Edge case of the first byte.
- EXPECT_EQ(&target[1], ::EmbeddedProto::WireFormatter::WriteVarint32ToArray(127, target));
- EXPECT_EQ(127, target[0]);
- // Just over the first byte.
- EXPECT_EQ(&target[2], ::EmbeddedProto::WireFormatter::WriteVarint32ToArray(128, target));
- EXPECT_EQ(128, target[0]);
- EXPECT_EQ(1, target[1]);
- // Full first byte.
- EXPECT_EQ(&target[2], ::EmbeddedProto::WireFormatter::WriteVarint32ToArray(255, target));
- EXPECT_EQ(255, target[0]);
- EXPECT_EQ(1, target[1]);
- // Fast forward to the largest possible number.
- EXPECT_EQ(&target[5], ::EmbeddedProto::WireFormatter::WriteVarint32ToArray(std::numeric_limits<uint32_t>::max(), target));
- EXPECT_EQ(255, target[0]);
- EXPECT_EQ(255, target[1]);
- EXPECT_EQ(255, target[2]);
- EXPECT_EQ(255, target[3]);
- EXPECT_EQ(15, target[4]);
- }
- } // End of namespace test_EmbeddedAMS_WireFormatter
|