diff options
Diffstat (limited to 'test.c')
-rw-r--r-- | test.c | 392 |
1 files changed, 0 insertions, 392 deletions
@@ -1,392 +0,0 @@ -# include <inttypes.h> -# include <stdarg.h> -# include <stdint.h> -# include <stdio.h> -# include <stdlib.h> -# include <string.h> -# include <u8c/SIZE_C.h> -# include <u8c/chk.h> -# include <u8c/err.h> -# include <u8c/fmt.h> -# include <u8c/main.h> -# include <u8c/str.h> -# include <u8c/u8.h> -static void errhandl(enum u8c_errtyp errtyp); -static int hlpscrn( char const * const restrict nm); -static void test( int n); -static char const * testnm( int n); -static const int maxtest = 0x17; -static void errhandl(enum u8c_errtyp errtyp) { - printf(":: Error handler called with type %d.\n",(int)errtyp); -} -static int hlpscrn(char const * const restrict nm) { - printf("u8c-test: Test u8c\n"); - printf("Usage: %s [test number]\n",nm); - printf("\n"); - printf("Test numbers:\n"); - for(int n = 0x0;n <= maxtest;n += 0x1) { - printf("\t %i - \"%s\"\n",n,testnm(n)); - } - printf("\n"); - return EXIT_SUCCESS; -} -static void test(int n) { - char const * const restrict _testnm = testnm(n); - /* printf("\n+->\n| \x1b[38:2::169:225:61mTesting\x1b[0m \""%s"\"...\n+->\n\n",_testnm); */ /* This command works in all of the terminals I tested, except Konsole (whic is funny, because it's xterm-based (and sets the TERM and COLORTERM environemnt variable to "xterm-256color" and "truecolor"), and xterm supports it). */ - printf("\n+->\n| \x1b[38;2;169;225;61mTesting\x1b[0m #%i \"%s\"...\n+->\n\n",n,_testnm); - switch(n) { - case 0x0: - { - char32_t const * err = u8c_geterr().err; - printf("default error message: "); - u8c_println(stdout,err); - u8c_seterr(u8c_errtyp_deferr,U"Gluchwein!"); - u8c_strfree(err); - err = u8c_geterr().err; - printf("set error message: "); - u8c_println(stdout,err); - u8c_strfree(err); - } - break; - case 0x1: - { - char32_t const * msg0 = U"¢,ह,𐍈,€,↊,👋"; - unsigned char const * msg1 = u8c_u8enc(msg0).u8; - printf("Encoded: %s\n",msg1); - u8c_u8free(msg1); - msg0 = u8c_u8dec(msg1).str; - msg1 = u8c_u8enc(msg0).u8; - printf("Encoded -> Decoded -> Encoded: %s\n",msg1); - u8c_strfree(msg0); - u8c_u8free(msg1); - } - break; - case 0x2: - { - u8c_print(stdout,U"Hello"); - u8c_print(stdout,U" ðere!\n"); - } - break; - case 0x3: - { - u8c_println(stdout,U"Hello"); - u8c_println(stdout,U" ðere!"); - } - break; - case 0x4: - { - u8c_println(stdout,U"The \uFFFCnumber\uFFFC is \uFFFC.",u8c_fmttyp_fgcol,u8c_col_mint,u8c_fmttyp_fgcol0,u8c_fmttyp_int,(int_least64_t){-0x10}); - } - break; - case 0x5: - { - u8c_println(stdout,U"\uFFFCred\uFFFCorange\uFFFCyellow\uFFFCchartreuse\uFFFCgreen\uFFFCmint\uFFFCcyan\uFFFCazure\uFFFCblue\uFFFCviolet\uFFFCmagenta\uFFFCrose\uFFFC",u8c_fmttyp_fgcol,u8c_col_red,u8c_fmttyp_fgcol,u8c_col_orange,u8c_fmttyp_fgcol,u8c_col_yellow,u8c_fmttyp_fgcol,u8c_col_chartreuse,u8c_fmttyp_fgcol,u8c_col_green,u8c_fmttyp_fgcol,u8c_col_mint,u8c_fmttyp_fgcol,u8c_col_cyan,u8c_fmttyp_fgcol,u8c_col_azure,u8c_fmttyp_fgcol,u8c_col_blue,u8c_fmttyp_fgcol,u8c_col_violet,u8c_fmttyp_fgcol,u8c_col_magenta,u8c_fmttyp_fgcol,u8c_col_rose,u8c_fmttyp_fgcol0); - } - break; - case 0x6: - { - for(register uint_least32_t n = UINT32_C(0x300);n <= UINT32_C(0x36F);n += UINT32_C(0x1)) { - u8c_print(stdout,(uint_least32_t[]){UINT32_C(0x61),n,UINT32_C(0x20),UINT32_C(0x0),}); - fflush(stdout); - } - u8c_print(stdout,U"\n"); - } - break; - case 0x7: - { - char32_t const * str0 = U"Hello"; - char32_t const * str1 = U"Hello"; - char32_t const * str2 = U"Goodbye"; - printf("str0: "); - u8c_println(stdout,str0); - printf("str1: "); - u8c_println(stdout,str1); - printf("str2: "); - u8c_println(stdout,str2); - uint_least8_t res = u8c_strcmp(str0,str1).res; - printf("str0,str1: %" PRIXLEAST8 ".\n",res); - res = u8c_strcmp(str1,str2).res; - printf("str0,str2: %" PRIXLEAST8 ".\n",res); - res = u8c_strcmp(str2,str1).res; - printf("str2,str1: %" PRIXLEAST8 ".\n",res); - } - break; - case 0x8: - { - for(register uint_least32_t n = UINT32_C(0x1);n <= UINT32_C(0x10FFFF);n += UINT32_C(0x1)) { - bool const res = u8c_isalnum(n).res; - if(res) { - u8c_print(stdout,(uint_least32_t[]){n,UINT32_C(0x20),UINT32_C(0x0),}); - } - } - u8c_println(stdout,U""); - } - break; - case 0x9: - { - for(register uint_least32_t n = UINT32_C(0x1);n <= UINT32_C(0x10FFFF);n += UINT32_C(0x1)) { - bool const res = u8c_isalpha(n).res; - if(res) { - u8c_print(stdout,(uint_least32_t[]){n,UINT32_C(0x20),UINT32_C(0x0),}); - } - } - u8c_println(stdout,U""); - } - break; - case 0xA: - { - for(register uint_least32_t n = UINT32_C(0x1);n <= UINT32_C(0x10FFFF);n += UINT32_C(0x1)) { - bool const res = u8c_isdigit(n).res; - if(res) { - u8c_print(stdout,(uint_least32_t[]){n,UINT32_C(0x20),UINT32_C(0x0),}); - } - } - u8c_println(stdout,U""); - } - break; - case 0xB: - { - for(register uint_least32_t n = UINT32_C(0x1);n <= UINT32_C(0x10FFFF);n += UINT32_C(0x1)) { - bool const res = u8c_ispunct(n).res; - if(res) { - u8c_print(stdout,(uint_least32_t[]){n,UINT32_C(0x20),UINT32_C(0x0),}); - } - } - u8c_println(stdout,U""); - } - break; - case 0xC: - { - u8c_println(stdout,U"Can you see ðis?"); - } - break; - case 0xD: - { - char32_t const * str0 = U"Free_as_in"; - char32_t const * str1 = U"_freedom!"; - char32_t const * str2 = u8c_strcat(str0,str1).str; - printf("string #0: "); - u8c_println(stdout,str0); - printf("string #1: "); - u8c_println(stdout,str1); - printf("string #2: "); - u8c_println(stdout,str2); - u8c_strfree(str2); - - } - break; - case 0xE: - { - char32_t const * str0 = U"I_wish_to_suck_big_duck."; - char32_t const * str1 = u8c_strsubstr(SIZE_C(0x0),SIZE_C(0xE),str0).str; - char32_t const * str2 = u8c_strsubstr(SIZE_C(0xF),SIZE_C(0x0),str0).str; - printf("string #0: "); - u8c_println(stdout,str0); - printf("string #1: "); - u8c_println(stdout,str1); - printf("string #2: "); - u8c_println(stdout,str2); - u8c_strfree(str1); - u8c_strfree(str2); - } - break; - case 0xF: - { - for(register uint_least32_t n = UINT32_C(0x1);n <= UINT32_C(0x10FFFF);n += UINT32_C(0x1)) { - bool const res = u8c_isxdigit(n).res; - if(res) { - u8c_print(stdout,(uint_least32_t[]){n,UINT32_C(0x20),UINT32_C(0x0),}); - } - } - u8c_println(stdout,U""); - } - break; - case 0x10: - { - u8c_dbgprint(U"Hello"); - u8c_dbgprint(U" ðere!"); - } - break; - case 0x11: - { - char32_t const * str = U"Proprietary as in Micro$oft."; - size_t pos0 = u8c_strfndchr(str,U'M').pos; - size_t pos1 = u8c_strfndchr(str,U'ŋ').pos; - printf("string: "); - u8c_println(stdout,str); - printf("Position of 'M': %zu\n",pos0); - printf("Position of 'ŋ': %zu\n",pos1); - } - break; - case 0x12: - { - char32_t const * str = U"Proprietary as in Micro$oft."; - size_t pos0 = u8c_strfndpat(str,U"as in").pos; - size_t pos1 = u8c_strfndpat(str,U"forever").pos; - printf("string: "); - u8c_println(stdout,str); - printf("Position of \"as in\": %zu\n",pos0); - printf("Position of \"forever\": %zu\n",pos1); - } - break; - case 0x13: - { - char32_t const * str0 = U"There_is_I_love."; - char32_t const * str1 = U"just_somebody_that_"; - char32_t const * str2 = u8c_strins(SIZE_C(0x9),str0,str1).str; - printf("String #0: "); - u8c_println(stdout,str0); - printf("String #1: "); - u8c_println(stdout,str1); - printf("String #2: "); - u8c_println(stdout,str2); - u8c_strfree(str2); - } - break; - case 0x14: - { - for(register uint_least32_t n = UINT32_C(0x1);n <= UINT32_C(0x10FFFF);n += UINT32_C(0x1)) { - bool const res = u8c_islower(n).res; - if(res) { - u8c_print(stdout,(uint_least32_t[]){n,UINT32_C(0x20),UINT32_C(0x0),}); - } - } - u8c_println(stdout,U""); - } - break; - case 0x15: - { - for(register uint_least32_t n = UINT32_C(0x1);n <= UINT32_C(0x10FFFF);n += UINT32_C(0x1)) { - bool const res = u8c_isupper(n).res; - if(res) { - u8c_print(stdout,(uint_least32_t[]){n,UINT32_C(0x20),UINT32_C(0x0),}); - } - } - u8c_println(stdout,U""); - } - break; - case 0x16: - { - register uint_least32_t num = UINT32_C(0x0); - for(register uint_least32_t n = UINT32_C(0x0);n <= UINT32_C(0x10FFFF);n += UINT32_C(0x1),num += UINT32_C(0x1)) { - { - bool const res = u8c_issurro(n).res; - if(res) { - num -= UINT32_C(0x1); - continue; - } - } - char32_t const * nm = u8c_uninm(n).nm; - uint_least8_t res = u8c_strcmp(nm,U"UNDEFINED IN UNICODE").res; - if(res == UINT8_C(0x1)) { - num -= UINT32_C(0x1); - u8c_strfree(nm); - continue; - } - printf("U+%" PRIXLEAST32 " ",n); - u8c_println(stdout,nm); - u8c_strfree(nm); - } - printf("\n:: The number of mapped (named) codepoints is %" PRIuLEAST32 ", which is %f%% of the total number of defined Unicode codepoints (143859).\n",num,((double)num) / (double)UINT32_C(0x231F3) * (double)UINT8_C(0x64)); - } - break; - case 0x17: - { - char32_t const * lastblk = u8c_strcp(U"").str; - for(register uint_least32_t n = UINT32_C(0x0);n <= UINT32_C(0x10FFFF);n += UINT32_C(0x1)) { - char32_t const * blk = u8c_uniblk(n).blk; - if(u8c_strcmp(blk,lastblk).res == UINT8_C(0x1) || u8c_strcmp(blk,U"UNDEFINED IN UNICODE").res == UINT8_C(0x1)) { - u8c_strfree(blk); - continue; - } - u8c_strfree(lastblk); - lastblk = u8c_strcp(blk).str; - printf("U+%" PRIXLEAST32 " = ",n); - u8c_println(stdout,blk); - u8c_strfree(blk); - } - u8c_strfree(lastblk); - } - break; - } - /* printf("\n+->\n| \x1b[38:2::61:225:169mDone\x1b[0m testing (%i) \"%s\"!\n+->\n",n,_testnm); */ - printf("\n+->\n| \x1b[38;2;61;225;169mDone\x1b[0m testing #%i \"%s\"!\n+->\n\n",n,_testnm); -} -static char const * testnm(int n) { - switch(n) { - default: - return "N/A"; - case 0x0: - return "Error messages"; - case 0x1: - return "UTF-8 encoding/decoding"; - case 0x2: - return "Printing (u8c_print)"; - case 0x3: - return "Printing (u8c_println)"; - case 0x4: - return "Text formatting"; - case 0x5: - return "Colour text"; - case 0x6: - return "Combining characters"; - case 0x7: - return "String comparison"; - case 0x8: - return "u8c_isalnum"; - case 0x9: - return "u8c_isalpha"; - case 0xA: - return "u8c_isdigit"; - case 0xB: - return "u8c_ispunct"; - case 0xC: - return "UTF-32 string literals"; - case 0xD: - return "String concatenation"; - case 0xE: - return "Sub-strings"; - case 0xF: - return "u8c_isxdigit"; - case 0x10: - return "Printing (u8c_dbgprint)"; - case 0x11: - return "u8c_strfndchr"; - case 0x12: - return "u8c_strfndpat"; - case 0x13: - return "String insertion"; - case 0x14: - return "u8c_islower"; - case 0x15: - return "u8c_isupper"; - case 0x16: - return "u8c_uninm"; - case 0x17: - return "u8c_uniblk"; - } -} -int main(int const argc,char const * * argv) { - if(argc == 0x2 && !strcmp(argv[SIZE_C(0x1)],"--help")) { - exit(hlpscrn(argv[SIZE_C(0x0)])); - } - if(u8c_init().stat) { - printf("Unable to initialise u8c!\n"); - exit(EXIT_FAILURE); - } - u8c_regerrhandl(u8c_errtyp_all,errhandl); - u8c_setfmt(UINT8_C(0xC),UINT8_C(0x1)); - printf("u8c version: %" PRIXLEAST64 "\n",u8c_ver); - printf("Debug build: %s\n",u8c_dbg ? "true" : "false"); - printf("Thread safe: %s\n",u8c_thrdsafe ? "true" : "false"); - if(argc == 0x2) { - test(atoi(argv[SIZE_C(0x1)])); - } - else { - for(int n = 0x0;n <= 0x17;n += 0x1) { - test(n); - } - } - u8c_end(); - exit(EXIT_SUCCESS); -} |