/[LeafOK_CVS]/lbbs/src/test_lml.c
ViewVC logotype

Annotation of /lbbs/src/test_lml.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.31 - (hide annotations)
Sat Nov 22 10:35:51 2025 UTC (3 months, 3 weeks ago) by sysadm
Branch: MAIN
Changes since 1.30: +40 -3 lines
Content type: text/x-csrc
Fix bug: return immediately when the last char (at offset = tag_out_len - 1) of tag_out is NULL

1 sysadm 1.27 /* SPDX-License-Identifier: GPL-3.0-or-later */
2     /*
3     * test_lml
4     * - tester for LML render
5     *
6 sysadm 1.28 * Copyright (C) 2004-2025 Leaflet <leaflet@leafok.com>
7 sysadm 1.27 */
8 sysadm 1.1
9 sysadm 1.30 #ifdef HAVE_CONFIG_H
10     #include "config.h"
11     #endif
12    
13 sysadm 1.1 #include "lml.h"
14     #include "log.h"
15 sysadm 1.9 #include <errno.h>
16 sysadm 1.31 #include <locale.h>
17 sysadm 1.1 #include <stdio.h>
18     #include <string.h>
19 sysadm 1.26 #include <time.h>
20 sysadm 1.1 #include <unistd.h>
21    
22 sysadm 1.29 enum _test_lml_constant_t
23     {
24 sysadm 1.31 STR_OUT_BUF_SIZE = 4096,
25 sysadm 1.29 };
26 sysadm 1.1
27     const char *str_in[] = {
28     "[left]ABCD[right]EFG",
29 sysadm 1.6 "A[u]B[italic]CD[/i]E[/u]F[b]G[/bold]",
30 sysadm 1.10 "A[url BC DE]测试a网址[/url]FG",
31 sysadm 1.2 "AB[email CDE]F[/eMAil]G01[emaiL]23456[/email]789",
32 sysadm 1.10 "A[user DE]BC[/User]FG",
33 sysadm 1.20 "[article A B CD]EF[ /article]G[article 789]123[/article]456",
34 sysadm 1.1 "A[ image BCD]EFG",
35     "AB[ Flash CDE ]FG",
36     "AB[bwf]CDEFG",
37     "[lef]A[rightBCD[right]EF[left[left[]G[left",
38 sysadm 1.3 "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]",
39 sysadm 1.4 "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",
40 sysadm 1.8 ": ABCDE[quote]FG\r\nab[/quote]cd[quote]ef[quote]g\r\n: : 012[/quote]345[/quote]6789\nABC[quote]DEFG",
41 sysadm 1.21 "\033[1;35;42mABC\033[0mDE\033[334mF\033[33mG\033[12345\033[m",
42 sysadm 1.8 "123456",
43 sysadm 1.13 "[color red]Red[/color][plain][color blue]Blue[/color][plain]",
44 sysadm 1.16 "[color yellow]Yellow[/color][nolml][left][color blue]Blue[/color][right][lml][color red]Red[/color]",
45 sysadm 1.18 "[abc][left ][ right ][ colory ][left \nABCD[left]EFG[right ",
46 sysadm 1.22 "ABCD]EFG",
47     ": : A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J123456789",
48 sysadm 1.26 "\033[0m\033[I \033[1;32m;, ;,\033[m",
49 sysadm 1.24 "\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n2\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n4\n5\n",
50 sysadm 1.25 "A[012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789]B",
51 sysadm 1.31 "[nolml]发信人:feilan.bbs@bbs.sjtu.edu.cn (蓝,本是路人),信区:cn.bbs.sci.medicine\n"
52     "标 题:Re: 阑尾有益寿延年功能 尾骨是有用的“小尾巴”\n"
53     "发信站:饮水思源\n"
54     "转信站:LeafOK!news.ccie.net.cn!SJTU\n"
55     "\n"
56     "昏\n"
57     "当然是阑尾\n"
58     "【 在 lang (浪子~继续减肥&戒酒) 的大作中提到: 】\n"
59     ": 阑尾?\n"
60     ": 扁桃体?\n"
61     ": 还是尾椎?\n"
62     ": 【 在 feilan (蓝,本是路人) 的大作中提到: 】\n"
63     ": : -________________-!!!\n"
64     ": : 完了\n"
65     ": : 我已经割掉了\n"
66     ": : 555555555555\n"
67     ": : ",
68 sysadm 1.1 };
69    
70 sysadm 1.16 const int str_cnt = sizeof(str_in) / sizeof(const char *);
71 sysadm 1.1
72     int main(int argc, char *argv[])
73     {
74 sysadm 1.26 clock_t clock_begin;
75     clock_t clock_end;
76     double prog_time_spent;
77     double lml_time_spent;
78    
79 sysadm 1.1 char str_out_buf[STR_OUT_BUF_SIZE];
80     int i;
81     int j;
82    
83 sysadm 1.31 // Apply the specified locale
84     if (setlocale(LC_ALL, "en_US.UTF-8") == NULL)
85     {
86     fprintf(stderr, "setlocale(LC_ALL, en_US.UTF-8) error\n");
87     return -1;
88     }
89    
90 sysadm 1.1 if (log_begin("../log/bbsd.log", "../log/error.log") < 0)
91     {
92     printf("Open log error\n");
93     return -1;
94     }
95    
96 sysadm 1.7 log_common_redir(STDOUT_FILENO);
97     log_error_redir(STDERR_FILENO);
98 sysadm 1.1
99 sysadm 1.26 clock_begin = clock();
100    
101 sysadm 1.20 printf("Test #1: quote_mode = 0\n");
102 sysadm 1.1 for (i = 0; i < str_cnt; i++)
103     {
104 sysadm 1.22 j = lml_render(str_in[i], str_out_buf, sizeof(str_out_buf), 80, 0);
105 sysadm 1.1
106 sysadm 1.31 printf("Input(len=%ld): %s\nOutput(len=%d): %s\n",
107     strlen(str_in[i]), str_in[i], j, str_out_buf);
108     if (j != strlen(str_out_buf))
109     {
110     printf("Output len(%ld) != ret(%d)\n", strlen(str_out_buf), j);
111     return -1;
112     }
113 sysadm 1.1 }
114 sysadm 1.26 printf("Test #1: Done\n\n");
115 sysadm 1.11
116 sysadm 1.20 printf("Test #2: quote_mode = 1\n");
117 sysadm 1.11 for (i = 0; i < str_cnt; i++)
118     {
119 sysadm 1.22 j = lml_render(str_in[i], str_out_buf, sizeof(str_out_buf), 80, 1);
120 sysadm 1.11
121 sysadm 1.31 printf("Input(len=%ld): %s\nOutput(len=%d): %s\n",
122     strlen(str_in[i]), str_in[i], j, str_out_buf);
123     if (j != strlen(str_out_buf))
124     {
125     printf("Output len(%ld) != ret(%d)\n", strlen(str_out_buf), j);
126     return -1;
127     }
128 sysadm 1.11 }
129 sysadm 1.26 printf("Test #2: Done\n\n");
130    
131     clock_end = clock();
132     prog_time_spent = (double)(clock_end - clock_begin) / (CLOCKS_PER_SEC / 1000);
133     lml_time_spent = (double)lml_total_exec_duration / (CLOCKS_PER_SEC / 1000);
134    
135     printf("\npage_exec_duration=%.2f, lml_exec_duration=%.2f\n", prog_time_spent, lml_time_spent);
136 sysadm 1.1
137     log_end();
138    
139     return 0;
140     }

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1