1ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org/*
2ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org * Copyright 2014 Google Inc.
3ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org *
4ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org * Use of this source code is governed by a BSD-style license that can be
5ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org * found in the LICENSE file.
6ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org */
7ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org
8ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org#include "SkBase64.h"
9ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org
10ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org#include "Test.h"
11ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org
129ea53f93e79ba312c4b3943923450a8b4aa57c82tfarinaDEF_TEST(SkBase64, reporter) {
13ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org    char all[256];
147017288811091427c15da5f97a14ac85a6585ec4robertphillips@google.com    for (int index = 0; index < 256; ++index) {
15ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org        all[index] = (signed char) (index + 1);
16ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org    }
17ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org
187017288811091427c15da5f97a14ac85a6585ec4robertphillips@google.com    for (int offset = 0; offset < 6; ++offset) {
19ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org        size_t length = 256 - offset;
202880df2609eba09b555ca37be04b6ad89290c765Tom Hudson        size_t encodeLength = SkBase64::Encode(all + offset, length, nullptr);
21ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org        SkAutoTMalloc<char> src(encodeLength + 1);
22ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org        SkBase64::Encode(all + offset, length, src.get());
23fbaace082745a0e301186b2d3b84af62e2fb87ecbsalomon        src[SkToInt(encodeLength)] = '\0';
24ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org        SkBase64 tryMe;
25ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org        tryMe.decode(src.get(), encodeLength);
26ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org        REPORTER_ASSERT(reporter, (strcmp((const char*) (all + offset), tryMe.getData()) == 0));
27ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org        delete[] tryMe.getData();
28ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org    }
29ceddfeb2af574d0a5273fa1803274d25eca73544tfarina@chromium.org}
30