blob: b63a6301685a84e2ae780004586f0382f1480c25 [file] [log] [blame]
/*
* Copyright 2014 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "include/core/SkString.h"
#include "include/private/base/SkTemplates.h"
#include "include/private/base/SkTo.h"
#include "include/utils/SkBase64.h"
#include "tests/Test.h"
#include <cstring>
using namespace skia_private;
DEF_TEST(SkBase64, reporter) {
char all[256];
for (int index = 0; index < 255; ++index) {
all[index] = (signed char) (index + 1);
}
all[255] = 0;
for (int offset = 0; offset < 6; ++offset) {
size_t length = 256 - offset;
// Encode
size_t encodeLength = SkBase64::Encode(all + offset, length, nullptr);
AutoTMalloc<char> src(encodeLength + 1);
SkBase64::Encode(all + offset, length, src.get());
src[SkToInt(encodeLength)] = '\0';
// Decode
SkBase64::Error err;
size_t decodeLength;
err = SkBase64::Decode(src.get(), encodeLength, nullptr, &decodeLength);
if (err != SkBase64::kNoError) {
REPORT_FAILURE(reporter, "err", SkString("SkBase64::Decode failed!"));
continue;
}
REPORTER_ASSERT(reporter, decodeLength == length);
AutoTMalloc<char> dst(decodeLength);
err = SkBase64::Decode(src.get(), encodeLength, dst, &decodeLength);
if (err != SkBase64::kNoError) {
REPORT_FAILURE(reporter, "err", SkString("SkBase64::Decode failed!"));
continue;
}
REPORTER_ASSERT(reporter, decodeLength == length);
REPORTER_ASSERT(reporter, (strcmp((const char*) (all + offset), dst.get()) == 0));
}
}