28 static const char lookup[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
29 auto* source =
static_cast<const uint8*
> (sourceData);
31 while (sourceDataSize > 0)
34 auto byte0 = *source++;
35 frame[0] = lookup [(byte0 & 0xfcu) >> 2];
36 uint32 bits = (byte0 & 0x03u) << 4;
38 if (sourceDataSize > 1)
40 auto byte1 = *source++;
41 frame[1] = lookup[bits | ((byte1 & 0xf0u) >> 4)];
42 bits = (byte1 & 0x0fu) << 2;
44 if (sourceDataSize > 2)
46 auto byte2 = *source++;
47 frame[2] = lookup[bits | ((byte2 & 0xc0u) >> 6)];
48 frame[3] = lookup[byte2 & 0x3fu];
53 frame[2] = lookup[bits];
60 frame[1] = lookup[bits];
66 if (! base64Result.
write (frame, 4))
75 for (
auto s = base64TextInput.
text; !
s.isEmpty();)
79 for (
int i = 0;
i < 4; ++
i)
83 if (
c >=
'A' &&
c <=
'Z')
c -=
'A';
84 else if (
c >=
'a' &&
c <=
'z')
c -=
'a' - 26;
85 else if (
c >=
'0' &&
c <=
'9')
c += 52 -
'0';
86 else if (
c ==
'+')
c = 62;
87 else if (
c ==
'/')
c = 63;
88 else if (
c ==
'=') {
c = 64;
if (
i <= 1)
return false; }
137 for (
int i =
r.nextInt (400); --
i >= 0;)
138 m.writeByte ((
char)
r.nextInt (256));
140 return m.getMemoryBlock();
143 void runTest()
override
145 beginTest (
"Base64");
147 auto r = getRandom();
149 for (
int i = 1000; --
i >= 0;)
151 auto original = createRandomData (
r);
152 auto asBase64 = Base64::toBase64 (original.getData(), original.getSize());
153 MemoryOutputStream
out;
154 expect (Base64::convertFromBase64 (
out, asBase64));
156 expect (
result == original);
161static Base64Tests base64Tests;
Definition MemoryBlock.h:39
Definition MemoryOutputStream.h:42
Definition juce_MemoryOutputStream.h:36
Definition juce_OutputStream.h:38
virtual bool write(const void *dataToWrite, size_t numberOfBytes)=0
virtual bool writeByte(char byte)
Definition juce_OutputStream.cpp:83
Definition juce_String.h:53
Definition juce_StringRef.h:62
String::CharPointerType text
Definition juce_StringRef.h:130
Definition juce_UnitTest.h:70
unsigned * m
Definition inflate.c:1559
register unsigned i
Definition inflate.c:1575
unsigned s
Definition inflate.c:1555
JSAMPIMAGE data
Definition jpeglib.h:945
float out
Definition lilv_test.c:1461
Definition juce_UnitTestCategories.h:27
Definition carla_juce.cpp:31
unsigned int uint32
Definition juce_MathsFunctions.h:45
unsigned char uint8
Definition juce_MathsFunctions.h:37
static bool convertToBase64(OutputStream &base64Result, const void *sourceData, size_t sourceDataSize)
Definition juce_Base64.cpp:26
static String toBase64(const void *sourceData, size_t sourceDataSize)
Definition juce_Base64.cpp:108
static bool convertFromBase64(OutputStream &binaryOutput, StringRef base64TextInput)
Definition juce_Base64.cpp:73
const char * text
Definition swell-functions.h:167
return c
Definition crypt.c:175
int r
Definition crypt.c:458
int result
Definition process.c:1455