Mercurial > code
comparison modules/base64/test/main.cpp @ 517:00f1789a49fa
Base64: resurrection
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 01 Jun 2016 16:19:49 +0200 |
parents | |
children | f48bb09bccc7 |
comparison
equal
deleted
inserted
replaced
516:cc50a80dc163 | 517:00f1789a49fa |
---|---|
1 /* | |
2 * main.cpp -- main test file for base64 | |
3 * | |
4 * Copyright (c) 2013-2016 David Demelier <markand@malikania.fr> | |
5 * | |
6 * Permission to use, copy, modify, and/or distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
19 #include <gtest/gtest.h> | |
20 | |
21 #include <base64.hpp> | |
22 | |
23 TEST(Lookup, lookup) | |
24 { | |
25 ASSERT_EQ('A', base64::lookup(0b000000)); | |
26 ASSERT_EQ('B', base64::lookup(0b000001)); | |
27 ASSERT_EQ('C', base64::lookup(0b000010)); | |
28 ASSERT_EQ('D', base64::lookup(0b000011)); | |
29 ASSERT_EQ('E', base64::lookup(0b000100)); | |
30 ASSERT_EQ('F', base64::lookup(0b000101)); | |
31 ASSERT_EQ('G', base64::lookup(0b000110)); | |
32 ASSERT_EQ('H', base64::lookup(0b000111)); | |
33 ASSERT_EQ('I', base64::lookup(0b001000)); | |
34 ASSERT_EQ('J', base64::lookup(0b001001)); | |
35 ASSERT_EQ('K', base64::lookup(0b001010)); | |
36 ASSERT_EQ('L', base64::lookup(0b001011)); | |
37 ASSERT_EQ('M', base64::lookup(0b001100)); | |
38 ASSERT_EQ('N', base64::lookup(0b001101)); | |
39 ASSERT_EQ('O', base64::lookup(0b001110)); | |
40 ASSERT_EQ('P', base64::lookup(0b001111)); | |
41 ASSERT_EQ('Q', base64::lookup(0b010000)); | |
42 ASSERT_EQ('R', base64::lookup(0b010001)); | |
43 ASSERT_EQ('S', base64::lookup(0b010010)); | |
44 ASSERT_EQ('T', base64::lookup(0b010011)); | |
45 ASSERT_EQ('U', base64::lookup(0b010100)); | |
46 ASSERT_EQ('V', base64::lookup(0b010101)); | |
47 ASSERT_EQ('W', base64::lookup(0b010110)); | |
48 ASSERT_EQ('X', base64::lookup(0b010111)); | |
49 ASSERT_EQ('Y', base64::lookup(0b011000)); | |
50 ASSERT_EQ('Z', base64::lookup(0b011001)); | |
51 ASSERT_EQ('a', base64::lookup(0b011010)); | |
52 ASSERT_EQ('b', base64::lookup(0b011011)); | |
53 ASSERT_EQ('c', base64::lookup(0b011100)); | |
54 ASSERT_EQ('d', base64::lookup(0b011101)); | |
55 ASSERT_EQ('e', base64::lookup(0b011110)); | |
56 ASSERT_EQ('f', base64::lookup(0b011111)); | |
57 ASSERT_EQ('g', base64::lookup(0b100000)); | |
58 ASSERT_EQ('h', base64::lookup(0b100001)); | |
59 ASSERT_EQ('i', base64::lookup(0b100010)); | |
60 ASSERT_EQ('j', base64::lookup(0b100011)); | |
61 ASSERT_EQ('k', base64::lookup(0b100100)); | |
62 ASSERT_EQ('l', base64::lookup(0b100101)); | |
63 ASSERT_EQ('m', base64::lookup(0b100110)); | |
64 ASSERT_EQ('n', base64::lookup(0b100111)); | |
65 ASSERT_EQ('o', base64::lookup(0b101000)); | |
66 ASSERT_EQ('p', base64::lookup(0b101001)); | |
67 ASSERT_EQ('q', base64::lookup(0b101010)); | |
68 ASSERT_EQ('r', base64::lookup(0b101011)); | |
69 ASSERT_EQ('s', base64::lookup(0b101100)); | |
70 ASSERT_EQ('t', base64::lookup(0b101101)); | |
71 ASSERT_EQ('u', base64::lookup(0b101110)); | |
72 ASSERT_EQ('v', base64::lookup(0b101111)); | |
73 ASSERT_EQ('w', base64::lookup(0b110000)); | |
74 ASSERT_EQ('x', base64::lookup(0b110001)); | |
75 ASSERT_EQ('y', base64::lookup(0b110010)); | |
76 ASSERT_EQ('z', base64::lookup(0b110011)); | |
77 ASSERT_EQ('0', base64::lookup(0b110100)); | |
78 ASSERT_EQ('1', base64::lookup(0b110101)); | |
79 ASSERT_EQ('2', base64::lookup(0b110110)); | |
80 ASSERT_EQ('3', base64::lookup(0b110111)); | |
81 ASSERT_EQ('4', base64::lookup(0b111000)); | |
82 ASSERT_EQ('5', base64::lookup(0b111001)); | |
83 ASSERT_EQ('6', base64::lookup(0b111010)); | |
84 ASSERT_EQ('7', base64::lookup(0b111011)); | |
85 ASSERT_EQ('8', base64::lookup(0b111100)); | |
86 ASSERT_EQ('9', base64::lookup(0b111101)); | |
87 ASSERT_EQ('+', base64::lookup(0b111110)); | |
88 ASSERT_EQ('/', base64::lookup(0b111111)); | |
89 } | |
90 | |
91 TEST(Lookup, rlookup) | |
92 { | |
93 ASSERT_EQ(0b000000U, base64::rlookup('A')); | |
94 ASSERT_EQ(0b000001U, base64::rlookup('B')); | |
95 ASSERT_EQ(0b000010U, base64::rlookup('C')); | |
96 ASSERT_EQ(0b000011U, base64::rlookup('D')); | |
97 ASSERT_EQ(0b000100U, base64::rlookup('E')); | |
98 ASSERT_EQ(0b000101U, base64::rlookup('F')); | |
99 ASSERT_EQ(0b000110U, base64::rlookup('G')); | |
100 ASSERT_EQ(0b000111U, base64::rlookup('H')); | |
101 ASSERT_EQ(0b001000U, base64::rlookup('I')); | |
102 ASSERT_EQ(0b001001U, base64::rlookup('J')); | |
103 ASSERT_EQ(0b001010U, base64::rlookup('K')); | |
104 ASSERT_EQ(0b001011U, base64::rlookup('L')); | |
105 ASSERT_EQ(0b001100U, base64::rlookup('M')); | |
106 ASSERT_EQ(0b001101U, base64::rlookup('N')); | |
107 ASSERT_EQ(0b001110U, base64::rlookup('O')); | |
108 ASSERT_EQ(0b001111U, base64::rlookup('P')); | |
109 ASSERT_EQ(0b010000U, base64::rlookup('Q')); | |
110 ASSERT_EQ(0b010001U, base64::rlookup('R')); | |
111 ASSERT_EQ(0b010010U, base64::rlookup('S')); | |
112 ASSERT_EQ(0b010011U, base64::rlookup('T')); | |
113 ASSERT_EQ(0b010100U, base64::rlookup('U')); | |
114 ASSERT_EQ(0b010101U, base64::rlookup('V')); | |
115 ASSERT_EQ(0b010110U, base64::rlookup('W')); | |
116 ASSERT_EQ(0b010111U, base64::rlookup('X')); | |
117 ASSERT_EQ(0b011000U, base64::rlookup('Y')); | |
118 ASSERT_EQ(0b011001U, base64::rlookup('Z')); | |
119 ASSERT_EQ(0b011010U, base64::rlookup('a')); | |
120 ASSERT_EQ(0b011011U, base64::rlookup('b')); | |
121 ASSERT_EQ(0b011100U, base64::rlookup('c')); | |
122 ASSERT_EQ(0b011101U, base64::rlookup('d')); | |
123 ASSERT_EQ(0b011110U, base64::rlookup('e')); | |
124 ASSERT_EQ(0b011111U, base64::rlookup('f')); | |
125 ASSERT_EQ(0b100000U, base64::rlookup('g')); | |
126 ASSERT_EQ(0b100001U, base64::rlookup('h')); | |
127 ASSERT_EQ(0b100010U, base64::rlookup('i')); | |
128 ASSERT_EQ(0b100011U, base64::rlookup('j')); | |
129 ASSERT_EQ(0b100100U, base64::rlookup('k')); | |
130 ASSERT_EQ(0b100101U, base64::rlookup('l')); | |
131 ASSERT_EQ(0b100110U, base64::rlookup('m')); | |
132 ASSERT_EQ(0b100111U, base64::rlookup('n')); | |
133 ASSERT_EQ(0b101000U, base64::rlookup('o')); | |
134 ASSERT_EQ(0b101001U, base64::rlookup('p')); | |
135 ASSERT_EQ(0b101010U, base64::rlookup('q')); | |
136 ASSERT_EQ(0b101011U, base64::rlookup('r')); | |
137 ASSERT_EQ(0b101100U, base64::rlookup('s')); | |
138 ASSERT_EQ(0b101101U, base64::rlookup('t')); | |
139 ASSERT_EQ(0b101110U, base64::rlookup('u')); | |
140 ASSERT_EQ(0b101111U, base64::rlookup('v')); | |
141 ASSERT_EQ(0b110000U, base64::rlookup('w')); | |
142 ASSERT_EQ(0b110001U, base64::rlookup('x')); | |
143 ASSERT_EQ(0b110010U, base64::rlookup('y')); | |
144 ASSERT_EQ(0b110011U, base64::rlookup('z')); | |
145 ASSERT_EQ(0b110100U, base64::rlookup('0')); | |
146 ASSERT_EQ(0b110101U, base64::rlookup('1')); | |
147 ASSERT_EQ(0b110110U, base64::rlookup('2')); | |
148 ASSERT_EQ(0b110111U, base64::rlookup('3')); | |
149 ASSERT_EQ(0b111000U, base64::rlookup('4')); | |
150 ASSERT_EQ(0b111001U, base64::rlookup('5')); | |
151 ASSERT_EQ(0b111010U, base64::rlookup('6')); | |
152 ASSERT_EQ(0b111011U, base64::rlookup('7')); | |
153 ASSERT_EQ(0b111100U, base64::rlookup('8')); | |
154 ASSERT_EQ(0b111101U, base64::rlookup('9')); | |
155 ASSERT_EQ(0b111110U, base64::rlookup('+')); | |
156 ASSERT_EQ(0b111111U, base64::rlookup('/')); | |
157 } | |
158 | |
159 TEST(Encode, basic) | |
160 { | |
161 ASSERT_EQ("YQ==", base64::encode("a")); | |
162 ASSERT_EQ("YWI=", base64::encode("ab")); | |
163 ASSERT_EQ("YWJj", base64::encode("abc")); | |
164 ASSERT_EQ("aGVsbG8=", base64::encode("hello")); | |
165 ASSERT_EQ("dGhpcyBpcyBhIGxvbmcgc2VudGVuY2U=", base64::encode("this is a long sentence")); | |
166 } | |
167 | |
168 TEST(Decode, basic) | |
169 { | |
170 ASSERT_EQ("a", base64::decode("YQ==")); | |
171 ASSERT_EQ("ab", base64::decode("YWI=")); | |
172 ASSERT_EQ("abc", base64::decode("YWJj")); | |
173 ASSERT_EQ("hello", base64::decode("aGVsbG8=")); | |
174 ASSERT_EQ("this is a long sentence", base64::decode("dGhpcyBpcyBhIGxvbmcgc2VudGVuY2U=")); | |
175 ASSERT_EQ("Welcome to our server dude", base64::decode("V2VsY29tZSB0byBvdXIgc2VydmVyIGR1ZGU=")); | |
176 } | |
177 | |
178 TEST(Failure, truncated) | |
179 { | |
180 ASSERT_THROW(base64::decode("YW="), std::invalid_argument); | |
181 } | |
182 | |
183 TEST(Failure, invalid) | |
184 { | |
185 ASSERT_THROW(base64::decode("?!"), std::invalid_argument); | |
186 } | |
187 | |
188 TEST(Failure, wrong1) | |
189 { | |
190 ASSERT_THROW(base64::decode("=ABC"), std::invalid_argument); | |
191 } | |
192 | |
193 TEST(Failure, wrong2) | |
194 { | |
195 ASSERT_THROW(base64::decode("A=BC"), std::invalid_argument); | |
196 } | |
197 | |
198 TEST(Failure, wrong3) | |
199 { | |
200 ASSERT_THROW(base64::decode("==BC"), std::invalid_argument); | |
201 } | |
202 | |
203 TEST(Failure, wrong4) | |
204 { | |
205 ASSERT_THROW(base64::decode("AB=C"), std::invalid_argument); | |
206 } | |
207 | |
208 int main(int argc, char **argv) | |
209 { | |
210 testing::InitGoogleTest(&argc, argv); | |
211 | |
212 return RUN_ALL_TESTS(); | |
213 } |