Mercurial > code
view C++/tests/Base64/main.cpp @ 485:898d8b29a4f1
Switch to lowercase filenames
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 12 Nov 2015 21:53:36 +0100 |
parents | 3f29e6c05983 |
children |
line wrap: on
line source
/* * main.cpp -- main test file for Base64 * * Copyright (c) 2013-2015 David Demelier <markand@malikania.fr> * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include <gtest/gtest.h> #include <base64.h> TEST(Lookup, lookup) { ASSERT_EQ('A', base64::lookup(0b000000)); ASSERT_EQ('B', base64::lookup(0b000001)); ASSERT_EQ('C', base64::lookup(0b000010)); ASSERT_EQ('D', base64::lookup(0b000011)); ASSERT_EQ('E', base64::lookup(0b000100)); ASSERT_EQ('F', base64::lookup(0b000101)); ASSERT_EQ('G', base64::lookup(0b000110)); ASSERT_EQ('H', base64::lookup(0b000111)); ASSERT_EQ('I', base64::lookup(0b001000)); ASSERT_EQ('J', base64::lookup(0b001001)); ASSERT_EQ('K', base64::lookup(0b001010)); ASSERT_EQ('L', base64::lookup(0b001011)); ASSERT_EQ('M', base64::lookup(0b001100)); ASSERT_EQ('N', base64::lookup(0b001101)); ASSERT_EQ('O', base64::lookup(0b001110)); ASSERT_EQ('P', base64::lookup(0b001111)); ASSERT_EQ('Q', base64::lookup(0b010000)); ASSERT_EQ('R', base64::lookup(0b010001)); ASSERT_EQ('S', base64::lookup(0b010010)); ASSERT_EQ('T', base64::lookup(0b010011)); ASSERT_EQ('U', base64::lookup(0b010100)); ASSERT_EQ('V', base64::lookup(0b010101)); ASSERT_EQ('W', base64::lookup(0b010110)); ASSERT_EQ('X', base64::lookup(0b010111)); ASSERT_EQ('Y', base64::lookup(0b011000)); ASSERT_EQ('Z', base64::lookup(0b011001)); ASSERT_EQ('a', base64::lookup(0b011010)); ASSERT_EQ('b', base64::lookup(0b011011)); ASSERT_EQ('c', base64::lookup(0b011100)); ASSERT_EQ('d', base64::lookup(0b011101)); ASSERT_EQ('e', base64::lookup(0b011110)); ASSERT_EQ('f', base64::lookup(0b011111)); ASSERT_EQ('g', base64::lookup(0b100000)); ASSERT_EQ('h', base64::lookup(0b100001)); ASSERT_EQ('i', base64::lookup(0b100010)); ASSERT_EQ('j', base64::lookup(0b100011)); ASSERT_EQ('k', base64::lookup(0b100100)); ASSERT_EQ('l', base64::lookup(0b100101)); ASSERT_EQ('m', base64::lookup(0b100110)); ASSERT_EQ('n', base64::lookup(0b100111)); ASSERT_EQ('o', base64::lookup(0b101000)); ASSERT_EQ('p', base64::lookup(0b101001)); ASSERT_EQ('q', base64::lookup(0b101010)); ASSERT_EQ('r', base64::lookup(0b101011)); ASSERT_EQ('s', base64::lookup(0b101100)); ASSERT_EQ('t', base64::lookup(0b101101)); ASSERT_EQ('u', base64::lookup(0b101110)); ASSERT_EQ('v', base64::lookup(0b101111)); ASSERT_EQ('w', base64::lookup(0b110000)); ASSERT_EQ('x', base64::lookup(0b110001)); ASSERT_EQ('y', base64::lookup(0b110010)); ASSERT_EQ('z', base64::lookup(0b110011)); ASSERT_EQ('0', base64::lookup(0b110100)); ASSERT_EQ('1', base64::lookup(0b110101)); ASSERT_EQ('2', base64::lookup(0b110110)); ASSERT_EQ('3', base64::lookup(0b110111)); ASSERT_EQ('4', base64::lookup(0b111000)); ASSERT_EQ('5', base64::lookup(0b111001)); ASSERT_EQ('6', base64::lookup(0b111010)); ASSERT_EQ('7', base64::lookup(0b111011)); ASSERT_EQ('8', base64::lookup(0b111100)); ASSERT_EQ('9', base64::lookup(0b111101)); ASSERT_EQ('+', base64::lookup(0b111110)); ASSERT_EQ('/', base64::lookup(0b111111)); } TEST(Lookup, rlookup) { ASSERT_EQ(0b000000, base64::rlookup('A')); ASSERT_EQ(0b000001, base64::rlookup('B')); ASSERT_EQ(0b000010, base64::rlookup('C')); ASSERT_EQ(0b000011, base64::rlookup('D')); ASSERT_EQ(0b000100, base64::rlookup('E')); ASSERT_EQ(0b000101, base64::rlookup('F')); ASSERT_EQ(0b000110, base64::rlookup('G')); ASSERT_EQ(0b000111, base64::rlookup('H')); ASSERT_EQ(0b001000, base64::rlookup('I')); ASSERT_EQ(0b001001, base64::rlookup('J')); ASSERT_EQ(0b001010, base64::rlookup('K')); ASSERT_EQ(0b001011, base64::rlookup('L')); ASSERT_EQ(0b001100, base64::rlookup('M')); ASSERT_EQ(0b001101, base64::rlookup('N')); ASSERT_EQ(0b001110, base64::rlookup('O')); ASSERT_EQ(0b001111, base64::rlookup('P')); ASSERT_EQ(0b010000, base64::rlookup('Q')); ASSERT_EQ(0b010001, base64::rlookup('R')); ASSERT_EQ(0b010010, base64::rlookup('S')); ASSERT_EQ(0b010011, base64::rlookup('T')); ASSERT_EQ(0b010100, base64::rlookup('U')); ASSERT_EQ(0b010101, base64::rlookup('V')); ASSERT_EQ(0b010110, base64::rlookup('W')); ASSERT_EQ(0b010111, base64::rlookup('X')); ASSERT_EQ(0b011000, base64::rlookup('Y')); ASSERT_EQ(0b011001, base64::rlookup('Z')); ASSERT_EQ(0b011010, base64::rlookup('a')); ASSERT_EQ(0b011011, base64::rlookup('b')); ASSERT_EQ(0b011100, base64::rlookup('c')); ASSERT_EQ(0b011101, base64::rlookup('d')); ASSERT_EQ(0b011110, base64::rlookup('e')); ASSERT_EQ(0b011111, base64::rlookup('f')); ASSERT_EQ(0b100000, base64::rlookup('g')); ASSERT_EQ(0b100001, base64::rlookup('h')); ASSERT_EQ(0b100010, base64::rlookup('i')); ASSERT_EQ(0b100011, base64::rlookup('j')); ASSERT_EQ(0b100100, base64::rlookup('k')); ASSERT_EQ(0b100101, base64::rlookup('l')); ASSERT_EQ(0b100110, base64::rlookup('m')); ASSERT_EQ(0b100111, base64::rlookup('n')); ASSERT_EQ(0b101000, base64::rlookup('o')); ASSERT_EQ(0b101001, base64::rlookup('p')); ASSERT_EQ(0b101010, base64::rlookup('q')); ASSERT_EQ(0b101011, base64::rlookup('r')); ASSERT_EQ(0b101100, base64::rlookup('s')); ASSERT_EQ(0b101101, base64::rlookup('t')); ASSERT_EQ(0b101110, base64::rlookup('u')); ASSERT_EQ(0b101111, base64::rlookup('v')); ASSERT_EQ(0b110000, base64::rlookup('w')); ASSERT_EQ(0b110001, base64::rlookup('x')); ASSERT_EQ(0b110010, base64::rlookup('y')); ASSERT_EQ(0b110011, base64::rlookup('z')); ASSERT_EQ(0b110100, base64::rlookup('0')); ASSERT_EQ(0b110101, base64::rlookup('1')); ASSERT_EQ(0b110110, base64::rlookup('2')); ASSERT_EQ(0b110111, base64::rlookup('3')); ASSERT_EQ(0b111000, base64::rlookup('4')); ASSERT_EQ(0b111001, base64::rlookup('5')); ASSERT_EQ(0b111010, base64::rlookup('6')); ASSERT_EQ(0b111011, base64::rlookup('7')); ASSERT_EQ(0b111100, base64::rlookup('8')); ASSERT_EQ(0b111101, base64::rlookup('9')); ASSERT_EQ(0b111110, base64::rlookup('+')); ASSERT_EQ(0b111111, base64::rlookup('/')); } TEST(Encode, basic) { ASSERT_EQ("YQ==", base64::encode("a")); ASSERT_EQ("YWI=", base64::encode("ab")); ASSERT_EQ("YWJj", base64::encode("abc")); ASSERT_EQ("aGVsbG8=", base64::encode("hello")); ASSERT_EQ("dGhpcyBpcyBhIGxvbmcgc2VudGVuY2U=", base64::encode("this is a long sentence")); } TEST(Decode, basic) { ASSERT_EQ("a", base64::decode("YQ==")); ASSERT_EQ("ab", base64::decode("YWI=")); ASSERT_EQ("abc", base64::decode("YWJj")); ASSERT_EQ("hello", base64::decode("aGVsbG8=")); ASSERT_EQ("this is a long sentence", base64::decode("dGhpcyBpcyBhIGxvbmcgc2VudGVuY2U=")); ASSERT_EQ("Welcome to our server dude", base64::decode("V2VsY29tZSB0byBvdXIgc2VydmVyIGR1ZGU=")); } TEST(Failure, truncated) { try { base64::decode("YW="); FAIL() << "exception expected"; } catch (...) {} } TEST(Failure, invalid) { try { base64::decode("?!"); FAIL() << "exception expected"; } catch (...) {} } TEST(Failure, wrong1) { try { base64::decode("=ABC"); FAIL() << "exception expected"; } catch (...) {} } TEST(Failure, wrong2) { try { base64::decode("A=BC"); FAIL() << "exception expected"; } catch (...) {} } TEST(Failure, wrong3) { try { base64::decode("==BC"); FAIL() << "exception expected"; } catch (...) {} } TEST(Failure, wrong4) { try { base64::decode("AB=C"); FAIL() << "exception expected"; } catch (...) {} } int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }