|
- /*
- * Carla Tests
- * Copyright (C) 2013 Filipe Coelho <falktx@falktx.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * For a full copy of the GNU General Public License see the GPL.txt file
- */
-
- #include "CarlaBase64Utils.hpp"
- #include "CarlaString.hpp"
-
- int main()
- {
- CARLA_ASSERT(std::strlen(kBase64) == 64);
-
- struct Blob {
- char s[4];
- int i;
- double d;
-
- char padding[100];
- void* ptr;
-
- Blob()
- : s{'1', 's', 't', 0},
- i(228),
- d(3.33333333333),
- ptr((void*)0x500)
- {
- carla_zeroMem(padding, sizeof(char)*100);
- }
-
- } blob;
-
- // binary -> base64
- void* const test0 = &blob;
- size_t test0Len = sizeof(Blob);
-
- char buf0[carla_base64_encoded_len(test0Len) + 1];
- carla_base64_encode((const uint8_t*)test0, test0Len, buf0);
-
- printf("BINARY '%s'\n", buf0);
-
- char buf0dec[carla_base64_decoded_max_len(buf0)+1];
- carla_zeroMem(buf0dec, sizeof(buf0dec));
- carla_base64_decode(buf0, (uint8_t*)buf0dec);
-
- Blob blobTester;
- blobTester.s[0] = 0;
- blobTester.i = 0;
- blobTester.d = 9999.99999999999999;
- std::memcpy(&blobTester, buf0dec, sizeof(Blob));
-
- CARLA_ASSERT(std::strcmp(blobTester.s, "1st") == 0);
- CARLA_ASSERT(blobTester.i == 228);
- CARLA_ASSERT(blobTester.d == 3.33333333333);
-
- // string -> base64
- const char* const test1 = "Hello World!";
- size_t test1Len = std::strlen(test1);
-
- char buf1[carla_base64_encoded_len(test1Len) + 1];
- carla_base64_encode((const uint8_t*)test1, test1Len, buf1);
-
- printf("'%s' => '%s'\n", test1, buf1);
-
- // base64 -> string
- const char* const test2 = "SGVsbG8gV29ybGQh";
-
- char buf2[carla_base64_decoded_max_len(test2)+1];
- carla_zeroMem(buf2, sizeof(buf2));
- carla_base64_decode(test2, (uint8_t*)buf2);
-
- printf("'%s' => '%s'\n", test2, buf2);
-
- printf("'%s' == '%s'\n", buf1, test2);
- printf("'%s' == '%s'\n", buf2, test1);
-
- CARLA_ASSERT(std::strcmp(buf1, test2) == 0);
- CARLA_ASSERT(std::strcmp(buf2, test1) == 0);
-
- // -----------------------------------------------------------------
-
- blob.s[0] = 'X';
- blob.i = 92320;
- blob.d = 9999887.99999999999999;
-
- CarlaString string;
- string.importBinaryAsBase64<Blob>(&blob);
-
- Blob* blob3 = string.exportAsBase64Binary<Blob>();
-
- CARLA_ASSERT(std::strcmp(blob3->s, blob.s) == 0);
- CARLA_ASSERT(blob3->i == blob.i);
- CARLA_ASSERT(blob3->d == blob.d);
- CARLA_ASSERT(blob3->ptr == blob.ptr);
-
- delete blob3;
-
- // -----------------------------------------------------------------
-
- return 0;
- }
|