• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2014 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "include/core/SkString.h"
9 #include "include/private/base/SkTemplates.h"
10 #include "include/private/base/SkTo.h"
11 #include "include/utils/SkBase64.h"
12 #include "tests/Test.h"
13 
14 #include <cstring>
15 
16 using namespace skia_private;
17 
DEF_TEST(SkBase64,reporter)18 DEF_TEST(SkBase64, reporter) {
19     char all[256];
20     for (int index = 0; index < 255; ++index) {
21         all[index] = (signed char) (index + 1);
22     }
23     all[255] = 0;
24 
25     for (int offset = 0; offset < 6; ++offset) {
26         size_t length = 256 - offset;
27 
28         // Encode
29         size_t encodeLength = SkBase64::Encode(all + offset, length, nullptr);
30         AutoTMalloc<char> src(encodeLength + 1);
31         SkBase64::Encode(all + offset, length, src.get());
32 
33         src[SkToInt(encodeLength)] = '\0';
34 
35         // Decode
36         SkBase64::Error err;
37 
38         size_t decodeLength;
39         err = SkBase64::Decode(src.get(), encodeLength, nullptr, &decodeLength);
40         if (err != SkBase64::kNoError) {
41             REPORT_FAILURE(reporter, "err", SkString("SkBase64::Decode failed!"));
42             continue;
43         }
44         REPORTER_ASSERT(reporter, decodeLength == length);
45 
46         AutoTMalloc<char> dst(decodeLength);
47         err = SkBase64::Decode(src.get(), encodeLength, dst, &decodeLength);
48         if (err != SkBase64::kNoError) {
49             REPORT_FAILURE(reporter, "err", SkString("SkBase64::Decode failed!"));
50             continue;
51         }
52         REPORTER_ASSERT(reporter, decodeLength == length);
53 
54         REPORTER_ASSERT(reporter, (strcmp((const char*) (all + offset), dst.get()) == 0));
55     }
56 }
57