|
28 | 28 | #include "arrow/testing/gtest_util.h" |
29 | 29 | #include "arrow/util/regex.h" |
30 | 30 | #include "arrow/util/string.h" |
| 31 | +#include "arrow/util/base64.h" |
31 | 32 |
|
32 | 33 | namespace arrow { |
33 | 34 | namespace internal { |
@@ -238,6 +239,49 @@ TEST(ToChars, FloatingPoint) { |
238 | 239 | } |
239 | 240 | } |
240 | 241 |
|
| 242 | +TEST(Base64DecodeTest, ValidInputs) { |
| 243 | + EXPECT_EQ(arrow::util::base64_decode("Zg=="), "f"); |
| 244 | + EXPECT_EQ(arrow::util::base64_decode("Zm8="), "fo"); |
| 245 | + EXPECT_EQ(arrow::util::base64_decode("Zm9v"), "foo"); |
| 246 | + EXPECT_EQ(arrow::util::base64_decode("aGVsbG8gd29ybGQ="), "hello world"); |
| 247 | +} |
| 248 | + |
| 249 | +TEST(Base64DecodeTest, InvalidLength) { |
| 250 | + EXPECT_EQ(arrow::util::base64_decode("abc"), ""); |
| 251 | + EXPECT_EQ(arrow::util::base64_decode("abcde"), ""); |
| 252 | +} |
| 253 | + |
| 254 | +TEST(Base64DecodeTest, InvalidCharacters) { |
| 255 | + EXPECT_EQ(arrow::util::base64_decode("ab$="), ""); |
| 256 | + EXPECT_EQ(arrow::util::base64_decode("Zm9v*"), ""); |
| 257 | + EXPECT_EQ(arrow::util::base64_decode("abcd$AAA"), ""); |
| 258 | +} |
| 259 | + |
| 260 | +TEST(Base64DecodeTest, InvalidPadding) { |
| 261 | + EXPECT_EQ(arrow::util::base64_decode("ab=c"), ""); |
| 262 | + EXPECT_EQ(arrow::util::base64_decode("abc==="), ""); |
| 263 | + EXPECT_EQ(arrow::util::base64_decode("abcd=AAA"), ""); |
| 264 | + EXPECT_EQ(arrow::util::base64_decode("Zm=9v"), ""); |
| 265 | +} |
| 266 | + |
| 267 | +TEST(Base64DecodeTest, EdgeCases) { |
| 268 | + EXPECT_EQ(arrow::util::base64_decode("===="), ""); |
| 269 | + EXPECT_EQ(arrow::util::base64_decode("TQ=="), "M"); |
| 270 | +} |
| 271 | + |
| 272 | +TEST(Base64DecodeTest, EmptyInput) { |
| 273 | + EXPECT_EQ(arrow::util::base64_decode(""), ""); |
| 274 | +} |
| 275 | + |
| 276 | +TEST(Base64DecodeTest, NonAsciiInput) { |
| 277 | + std::string input = std::string("abcd") + char(0xFF) + "=="; |
| 278 | + EXPECT_EQ(arrow::util::base64_decode(input), ""); |
| 279 | +} |
| 280 | + |
| 281 | +TEST(Base64DecodeTest, PartialCorruption) { |
| 282 | + EXPECT_EQ(arrow::util::base64_decode("aGVs$G8gd29ybGQ="), ""); |
| 283 | +} |
| 284 | + |
241 | 285 | #if !defined(_WIN32) || defined(NDEBUG) |
242 | 286 |
|
243 | 287 | TEST(ToChars, LocaleIndependent) { |
|
0 commit comments