--- lbbs/src/test_lml.c 2025/06/03 03:41:19 1.6 +++ lbbs/src/test_lml.c 2025/11/11 00:28:05 1.30 @@ -1,48 +1,63 @@ -/*************************************************************************** - test_lml.c - description - ------------------- - Copyright : (C) 2004-2025 by Leaflet - Email : leaflet@leafok.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 3 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* + * test_lml + * - tester for LML render + * + * Copyright (C) 2004-2025 Leaflet + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include "lml.h" #include "log.h" +#include #include #include +#include #include -#include -#define STR_OUT_BUF_SIZE 1024 +enum _test_lml_constant_t +{ + STR_OUT_BUF_SIZE = 256, +}; const char *str_in[] = { "[left]ABCD[right]EFG", "A[u]B[italic]CD[/i]E[/u]F[b]G[/bold]", - "A[url BCDE[/url]FG", + "A[url BC DE]测试a网址[/url]FG", "AB[email CDE]F[/eMAil]G01[emaiL]23456[/email]789", - "A[user DE]BC[ /User ]FG", - "[article A B CD]EF[/article ]G", + "A[user DE]BC[/User]FG", + "[article A B CD]EF[ /article]G[article 789]123[/article]456", "A[ image BCD]EFG", "AB[ Flash CDE ]FG", "AB[bwf]CDEFG", "[lef]A[rightBCD[right]EF[left[left[]G[left", "A[ color BCD]EF[/color]G[color black]0[/color][color magenta]1[color cyan]23[/color]4[color red]5[/color]6[color yellOw]7[/color]8[color green]9[color blue]0[/color]", "A[quote]B[quote]C[quote]D[quote]E[/quote]F[/quote]G[/quote]0[/quote]1[/quote]2[quote]3[/quote]4[/quote]56789", - ": ABCDE[quote]FG\r\nab[/quote]cd[quote]ef[quote]g\r\n: : 012[/quote]345[/quote]6789\nABC[quote]DEFG" + ": ABCDE[quote]FG\r\nab[/quote]cd[quote]ef[quote]g\r\n: : 012[/quote]345[/quote]6789\nABC[quote]DEFG", + "\033[1;35;42mABC\033[0mDE\033[334mF\033[33mG\033[12345\033[m", + "123456", + "[color red]Red[/color][plain][color blue]Blue[/color][plain]", + "[color yellow]Yellow[/color][nolml][left][color blue]Blue[/color][right][lml][color red]Red[/color]", + "[abc][left ][ right ][ colory ][left \nABCD[left]EFG[right ", + "ABCD]EFG", + ": : A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J123456789", + "\033[0m\033[I \033[1;32m;, ;,\033[m", + "\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n2\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n4\n5\n", + "A[012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789]B", }; -int str_cnt = 13; +const int str_cnt = sizeof(str_in) / sizeof(const char *); int main(int argc, char *argv[]) { + clock_t clock_begin; + clock_t clock_end; + double prog_time_spent; + double lml_time_spent; + char str_out_buf[STR_OUT_BUF_SIZE]; int i; int j; @@ -53,15 +68,34 @@ int main(int argc, char *argv[]) return -1; } - log_std_redirect(STDOUT_FILENO); - log_err_redirect(STDERR_FILENO); + log_common_redir(STDOUT_FILENO); + log_error_redir(STDERR_FILENO); + + clock_begin = clock(); + + printf("Test #1: quote_mode = 0\n"); + for (i = 0; i < str_cnt; i++) + { + j = lml_render(str_in[i], str_out_buf, sizeof(str_out_buf), 80, 0); + printf("Input(len=%ld): %s\nOutput(len=%d): %s\n", strlen(str_in[i]), str_in[i], j, str_out_buf); + } + printf("Test #1: Done\n\n"); + + printf("Test #2: quote_mode = 1\n"); for (i = 0; i < str_cnt; i++) { - j = lml_plain(str_in[i], str_out_buf, sizeof(str_out_buf)); + j = lml_render(str_in[i], str_out_buf, sizeof(str_out_buf), 80, 1); printf("Input(len=%ld): %s\nOutput(len=%d): %s\n", strlen(str_in[i]), str_in[i], j, str_out_buf); } + printf("Test #2: Done\n\n"); + + clock_end = clock(); + prog_time_spent = (double)(clock_end - clock_begin) / (CLOCKS_PER_SEC / 1000); + lml_time_spent = (double)lml_total_exec_duration / (CLOCKS_PER_SEC / 1000); + + printf("\npage_exec_duration=%.2f, lml_exec_duration=%.2f\n", prog_time_spent, lml_time_spent); log_end();