| /* | 
 |  * 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)); | 
 |     } | 
 | } |