/*
RFC 2045, 6.8
The encoding process represents 24-bit groups of input bits as output
strings of 4 encoded characters. Proceeding from left to right, a
24-bit input group is formed by concatenating 3 8bit input groups.
These 24 bits are then treated as 4 concatenated 6-bit groups, each
of which is translated into a single digit in the base64 alphabet.
*/
$encoder =
new Base64Encoder();
$this->
assertEquals('MTIz',
$encoder->
encodeString('123'
), '3 bytes of input should yield 4 bytes of output'
);
$this->
assertEquals('MTIzNDU2',
$encoder->
encodeString('123456'
), '6 bytes in input should yield 8 bytes of output'
);
$this->
assertEquals('MTIzNDU2Nzg5',
$encoder->
encodeString('123456789'
), '%s: 9 bytes in input should yield 12 bytes of output'
);
} public function testPadLength() { /*
RFC 2045, 6.8
Special processing is performed if fewer than 24 bits are available
at the end of the data being encoded. A full encoding quantum is
always completed at the end of a body. When fewer than 24 input bits
are available in an input group, zero bits are added (on the right)
to form an integral number of 6-bit groups. Padding at the end of
the data is performed using the "=" character. Since all base64
input is an integral number of octets, only the following cases can
arise: (1) the final quantum of encoding input is an integral
multiple of 24 bits; here, the final unit of encoded output will be
an integral multiple of 4 characters with no "=" padding, (2) the
final quantum of encoding input is exactly 8 bits; here, the final
unit of encoded output will be two characters followed by two "="
padding characters, or (3) the final quantum of encoding input is
exactly 16 bits; here, the final unit of encoded output will be three
characters followed by one "=" padding character.
*/