// test_base64.c // Base64 unit test for libutil // Copyright (C) 2021, Jakob Wakeling // MIT Licence #include "../base64.h" #include "unit.h" #include #include #include int main(void) { { uint8_t i[9] = "123456789"; uint8_t o[12] = { 0 }; b64encode(o, i, 0); ASSERT("T000 ENCODE STRING LENGTH 0", !memcmp(o, "", 1)); b64encode(o, i, 1); ASSERT("T001 ENCODE STRING LENGTH 1", !memcmp(o, "MQ==", 4)); b64encode(o, i, 2); ASSERT("T002 ENCODE STRING LENGTH 2", !memcmp(o, "MTI=", 4)); b64encode(o, i, 3); ASSERT("T003 ENCODE STRING LENGTH 3", !memcmp(o, "MTIz", 4)); b64encode(o, i, 4); ASSERT("T004 ENCODE STRING LENGTH 4", !memcmp(o, "MTIzNA==", 8)); b64encode(o, i, 5); ASSERT("T005 ENCODE STRING LENGTH 5", !memcmp(o, "MTIzNDU=", 8)); b64encode(o, i, 6); ASSERT("T006 ENCODE STRING LENGTH 6", !memcmp(o, "MTIzNDU2", 8)); b64encode(o, i, 7); ASSERT("T007 ENCODE STRING LENGTH 7", !memcmp(o, "MTIzNDU2Nw==", 12)); b64encode(o, i, 8); ASSERT("T008 ENCODE STRING LENGTH 8", !memcmp(o, "MTIzNDU2Nzg=", 12)); b64encode(o, i, 9); ASSERT("T009 ENCODE STRING LENGTH 9", !memcmp(o, "MTIzNDU2Nzg5", 12)); } { uint8_t i[12] = "MTIzNDU2Nw=="; uint8_t o[10] = { 0 }; b64decode(o, i, 10); ASSERT("T010 DECODE STRING LENGTH 10", !memcmp(o, "1234567", 7)); b64decode(o, i, 11); ASSERT("T011 DECODE STRING LENGTH 10 HALF PADDED", !memcmp(o, "1234567", 7)); b64decode(o, i, 12); ASSERT("T012 DECODE STRING LENGTH 10 PADDED", !memcmp(o, "1234567", 7)); } { uint8_t i[12] = "MTIzNDU2Nzg="; uint8_t o[10] = { 0 }; b64decode(o, i, 11); ASSERT("T013 DECODE STRING LENGTH 11", !memcmp(o, "12345678", 8)); b64decode(o, i, 12); ASSERT("T014 DECODE STRING LENGTH 11 PADDED", !memcmp(o, "12345678", 8)); } { uint8_t i[12] = "MTIzNDU2Nzg5"; uint8_t o[10] = { 0 }; b64decode(o, i, 12); ASSERT("T015 DECODE STRING LENGTH 12", !memcmp(o, "123456789", 9)); } printf("%d of %d tests passed\n", testspassed, testsrun); return testsfailed; }