1
2
3
4
5
6
7
8
9
10
11
12
13
14 package org.castor.util;
15
16 import static org.junit.Assert.assertEquals;
17
18 import org.castor.core.util.Base64Encoder;
19 import org.junit.Test;
20
21 public final class TestBase64Encoder {
22
23 private static final String[] MAP = {"AA==", "AQ==", "Ag==", "Aw==", "BA==", "BQ==", "Bg==",
24 "Bw==", "CA==", "CQ==", "Cg==", "Cw==", "DA==", "DQ==", "Dg==", "Dw==", "EA==", "EQ==",
25 "Eg==", "Ew==", "FA==", "FQ==", "Fg==", "Fw==", "GA==", "GQ==", "Gg==", "Gw==", "HA==",
26 "HQ==", "Hg==", "Hw==", "IA==", "IQ==", "Ig==", "Iw==", "JA==", "JQ==", "Jg==", "Jw==",
27 "KA==", "KQ==", "Kg==", "Kw==", "LA==", "LQ==", "Lg==", "Lw==", "MA==", "MQ==", "Mg==",
28 "Mw==", "NA==", "NQ==", "Ng==", "Nw==", "OA==", "OQ==", "Og==", "Ow==", "PA==", "PQ==",
29 "Pg==", "Pw==", "QA==", "QQ==", "Qg==", "Qw==", "RA==", "RQ==", "Rg==", "Rw==", "SA==",
30 "SQ==", "Sg==", "Sw==", "TA==", "TQ==", "Tg==", "Tw==", "UA==", "UQ==", "Ug==", "Uw==",
31 "VA==", "VQ==", "Vg==", "Vw==", "WA==", "WQ==", "Wg==", "Ww==", "XA==", "XQ==", "Xg==",
32 "Xw==", "YA==", "YQ==", "Yg==", "Yw==", "ZA==", "ZQ==", "Zg==", "Zw==", "aA==", "aQ==",
33 "ag==", "aw==", "bA==", "bQ==", "bg==", "bw==", "cA==", "cQ==", "cg==", "cw==", "dA==",
34 "dQ==", "dg==", "dw==", "eA==", "eQ==", "eg==", "ew==", "fA==", "fQ==", "fg==", "fw==",
35 "gA==", "gQ==", "gg==", "gw==", "hA==", "hQ==", "hg==", "hw==", "iA==", "iQ==", "ig==",
36 "iw==", "jA==", "jQ==", "jg==", "jw==", "kA==", "kQ==", "kg==", "kw==", "lA==", "lQ==",
37 "lg==", "lw==", "mA==", "mQ==", "mg==", "mw==", "nA==", "nQ==", "ng==", "nw==", "oA==",
38 "oQ==", "og==", "ow==", "pA==", "pQ==", "pg==", "pw==", "qA==", "qQ==", "qg==", "qw==",
39 "rA==", "rQ==", "rg==", "rw==", "sA==", "sQ==", "sg==", "sw==", "tA==", "tQ==", "tg==",
40 "tw==", "uA==", "uQ==", "ug==", "uw==", "vA==", "vQ==", "vg==", "vw==", "wA==", "wQ==",
41 "wg==", "ww==", "xA==", "xQ==", "xg==", "xw==", "yA==", "yQ==", "yg==", "yw==", "zA==",
42 "zQ==", "zg==", "zw==", "0A==", "0Q==", "0g==", "0w==", "1A==", "1Q==", "1g==", "1w==",
43 "2A==", "2Q==", "2g==", "2w==", "3A==", "3Q==", "3g==", "3w==", "4A==", "4Q==", "4g==",
44 "4w==", "5A==", "5Q==", "5g==", "5w==", "6A==", "6Q==", "6g==", "6w==", "7A==", "7Q==",
45 "7g==", "7w==", "8A==", "8Q==", "8g==", "8w==", "9A==", "9Q==", "9g==", "9w==", "+A==",
46 "+Q==", "+g==", "+w==", "/A==", "/Q==", "/g==", "/w=="};
47
48 @Test
49 public void testAllBytes() {
50 for (int i = 0; i < 256; i++) {
51 assertEquals(MAP[i], new String(Base64Encoder.encode(new byte[] {(byte) i})));
52 }
53 }
54
55 @Test
56 public void testPadding() {
57 String str;
58
59 str = new String(Base64Encoder.encode(new byte[] {33}));
60 assertEquals("IQ==", str);
61
62 str = new String(Base64Encoder.encode(new byte[] {33, 33}));
63 assertEquals("ISE=", str);
64
65 str = new String(Base64Encoder.encode(new byte[] {33, 33, 33}));
66 assertEquals("ISEh", str);
67
68 str = new String(Base64Encoder.encode(new byte[] {33, 33, 33, 34}));
69 assertEquals("ISEhIg==", str);
70 }
71 }