aboutsummaryrefslogtreecommitdiff
path: root/util/base64_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'util/base64_unittest.cc')
-rw-r--r--util/base64_unittest.cc20
1 files changed, 16 insertions, 4 deletions
diff --git a/util/base64_unittest.cc b/util/base64_unittest.cc
index 28d4fb1d..873b5656 100644
--- a/util/base64_unittest.cc
+++ b/util/base64_unittest.cc
@@ -4,6 +4,9 @@
#include "util/base64.h"
+#include <string>
+#include <vector>
+
#include "gtest/gtest.h"
namespace openscreen {
@@ -14,13 +17,21 @@ namespace {
constexpr char kText[] = "hello world";
constexpr char kBase64Text[] = "aGVsbG8gd29ybGQ=";
+// More sophisticated comparisons here, such as EXPECT_STREQ, may
+// cause memory failures on some platforms (e.g. ASAN) due to mismatched
+// lengths.
+void CheckEquals(const char* expected, const std::vector<uint8_t>& actual) {
+ EXPECT_EQ(0, std::memcmp(actual.data(), expected, actual.size()));
+}
+
void CheckEncodeDecode(const char* to_encode, const char* encode_expected) {
std::string encoded = Encode(to_encode);
EXPECT_EQ(encode_expected, encoded);
- std::string decoded;
+ std::vector<uint8_t> decoded;
EXPECT_TRUE(Decode(encoded, &decoded));
- EXPECT_EQ(to_encode, decoded);
+
+ CheckEquals(to_encode, decoded);
}
} // namespace
@@ -52,8 +63,9 @@ TEST(Base64Test, InPlace) {
text = Encode(text);
EXPECT_EQ(kBase64Text, text);
- EXPECT_TRUE(Decode(text, &text));
- EXPECT_EQ(text, kText);
+ std::vector<uint8_t> out;
+ EXPECT_TRUE(Decode(text, &out));
+ CheckEquals(kText, out);
}
} // namespace base64