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

Diff of /lbbs/src/test_lml.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.25 by sysadm, Fri Oct 31 07:57:02 2025 UTC Revision 1.32 by sysadm, Fri Dec 19 14:08:44 2025 UTC
# Line 1  Line 1 
1  /***************************************************************************  /* SPDX-License-Identifier: GPL-3.0-or-later */
2                                               test_lml.c  -  description  /*
3                                                           -------------------   * test_lml
4          Copyright            : (C) 2004-2025 by Leaflet   *   - tester for LML render
5          Email                : leaflet@leafok.com   *
6   ***************************************************************************/   * Copyright (C) 2004-2025  Leaflet <leaflet@leafok.com>
7     */
8  /***************************************************************************  
9   *                                                                         *  #ifdef HAVE_CONFIG_H
10   *   This program is free software; you can redistribute it and/or modify  *  #include "config.h"
11   *   it under the terms of the GNU General Public License as published by  *  #endif
  *   the Free Software Foundation; either version 3 of the License, or     *  
  *   (at your option) any later version.                                   *  
  *                                                                         *  
  ***************************************************************************/  
12    
13  #include "lml.h"  #include "lml.h"
14  #include "log.h"  #include "log.h"
15    #include "trie_dict.h"
16  #include <errno.h>  #include <errno.h>
17    #include <locale.h>
18  #include <stdio.h>  #include <stdio.h>
19  #include <string.h>  #include <string.h>
20    #include <time.h>
21  #include <unistd.h>  #include <unistd.h>
22    
23  #define STR_OUT_BUF_SIZE 256  enum _test_lml_constant_t
24    {
25            STR_OUT_BUF_SIZE = 4096,
26    };
27    
28    static const char TRIE_DICT_SHM_FILE[] = "~trie_dict_shm.dat";
29    
30  const char *str_in[] = {  const char *str_in[] = {
31          "[left]ABCD[right]EFG",          "[left]ABCD[right]EFG",
# Line 44  const char *str_in[] = { Line 48  const char *str_in[] = {
48          "[abc][left ][ right ][ colory ][left  \nABCD[left]EFG[right ",          "[abc][left ][ right ][ colory ][left  \nABCD[left]EFG[right ",
49          "ABCD]EFG",          "ABCD]EFG",
50          ": : A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J123456789",          ": : A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J123456789",
51          "\033[0m\033[I             \033[1;32m;,                                               ;,\033[m",          "\033[0m\033[I             \033[1;32m;,                                           ;,\033[m",
52          "\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n2\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n4\n5\n",          "\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n2\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n4\n5\n",
53          "A[012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789]B",          "A[012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789]B",
54            "[nolml]发信人:feilan.bbs@bbs.sjtu.edu.cn (蓝,本是路人),信区:cn.bbs.sci.medicine\n"
55            "标  题:Re: 阑尾有益寿延年功能 尾骨是有用的“小尾巴”\n"
56            "发信站:饮水思源\n"
57            "转信站:LeafOK!news.ccie.net.cn!SJTU\n"
58            "\n"
59            "昏\n"
60            "当然是阑尾\n"
61            "【 在 lang (浪子~继续减肥&戒酒) 的大作中提到: 】\n"
62            ": 阑尾?\n"
63            ": 扁桃体?\n"
64            ": 还是尾椎?\n"
65            ": 【 在 feilan (蓝,本是路人) 的大作中提到: 】\n"
66            ": : -________________-!!!\n"
67            ": : 完了\n"
68            ": : 我已经割掉了\n"
69            ": : 555555555555\n"
70            ": : ",
71            "[image http://us.ent4.yimg.com/movies.yahoo.com/images/hv/photo/movie_pix/images/hv/photo/movie_pix/]\n",
72  };  };
73    
74  const int str_cnt = sizeof(str_in) / sizeof(const char *);  const int str_cnt = sizeof(str_in) / sizeof(const char *);
75    
76  int main(int argc, char *argv[])  int main(int argc, char *argv[])
77  {  {
78            clock_t clock_begin;
79            clock_t clock_end;
80            double prog_time_spent;
81            double lml_time_spent;
82    
83          char str_out_buf[STR_OUT_BUF_SIZE];          char str_out_buf[STR_OUT_BUF_SIZE];
84            FILE *fp;
85          int i;          int i;
86          int j;          int j;
87    
88            // Apply the specified locale
89            if (setlocale(LC_ALL, "en_US.UTF-8") == NULL)
90            {
91                    fprintf(stderr, "setlocale(LC_ALL, en_US.UTF-8) error\n");
92                    return -1;
93            }
94    
95          if (log_begin("../log/bbsd.log", "../log/error.log") < 0)          if (log_begin("../log/bbsd.log", "../log/error.log") < 0)
96          {          {
97                  printf("Open log error\n");                  printf("Open log error\n");
# Line 66  int main(int argc, char *argv[]) Line 101  int main(int argc, char *argv[])
101          log_common_redir(STDOUT_FILENO);          log_common_redir(STDOUT_FILENO);
102          log_error_redir(STDERR_FILENO);          log_error_redir(STDERR_FILENO);
103    
104            if ((fp = fopen(TRIE_DICT_SHM_FILE, "w")) == NULL)
105            {
106                    log_error("fopen(%s) error", TRIE_DICT_SHM_FILE);
107                    return -1;
108            }
109            fclose(fp);
110    
111            if (trie_dict_init(TRIE_DICT_SHM_FILE, TRIE_NODE_PER_POOL) < 0)
112            {
113                    printf("trie_dict_init failed\n");
114                    return -1;
115            }
116    
117            clock_begin = clock();
118    
119            if (lml_init() < 0)
120            {
121                    printf("lml_init() error\n");
122                    log_end();
123                    return -1;
124            }
125    
126          printf("Test #1: quote_mode = 0\n");          printf("Test #1: quote_mode = 0\n");
127          for (i = 0; i < str_cnt; i++)          for (i = 0; i < str_cnt; i++)
128          {          {
129                  j = lml_render(str_in[i], str_out_buf, sizeof(str_out_buf), 80, 0);                  j = lml_render(str_in[i], str_out_buf, sizeof(str_out_buf), 80, 0);
130    
131                  printf("Input(len=%ld): %s\nOutput(len=%d): %s\n", strlen(str_in[i]), str_in[i], j, str_out_buf);                  printf("Input(len=%ld): %s\nOutput(len=%d): %s\n",
132                               strlen(str_in[i]), str_in[i], j, str_out_buf);
133                    if (j != strlen(str_out_buf))
134                    {
135                            printf("Output len(%ld) != ret(%d)\n", strlen(str_out_buf), j);
136                            return -1;
137                    }
138          }          }
139          printf("Test #1: Done\n");          printf("Test #1: Done\n\n");
140    
141          printf("Test #2: quote_mode = 1\n");          printf("Test #2: quote_mode = 1\n");
142          for (i = 0; i < str_cnt; i++)          for (i = 0; i < str_cnt; i++)
143          {          {
144                  j = lml_render(str_in[i], str_out_buf, sizeof(str_out_buf), 80, 1);                  j = lml_render(str_in[i], str_out_buf, sizeof(str_out_buf), 80, 1);
145    
146                  printf("Input(len=%ld): %s\nOutput(len=%d): %s\n", strlen(str_in[i]), str_in[i], j, str_out_buf);                  printf("Input(len=%ld): %s\nOutput(len=%d): %s\n",
147                               strlen(str_in[i]), str_in[i], j, str_out_buf);
148                    if (j != strlen(str_out_buf))
149                    {
150                            printf("Output len(%ld) != ret(%d)\n", strlen(str_out_buf), j);
151                            return -1;
152                    }
153            }
154            printf("Test #2: Done\n\n");
155    
156            clock_end = clock();
157            prog_time_spent = (double)(clock_end - clock_begin) / (CLOCKS_PER_SEC / 1000);
158            lml_time_spent = (double)lml_total_exec_duration / (CLOCKS_PER_SEC / 1000);
159    
160            printf("\npage_exec_duration=%.2f, lml_exec_duration=%.2f\n", prog_time_spent, lml_time_spent);
161    
162            lml_cleanup();
163            trie_dict_cleanup();
164    
165            if (unlink(TRIE_DICT_SHM_FILE) < 0)
166            {
167                    log_error("unlink(%s) error", TRIE_DICT_SHM_FILE);
168                    return -1;
169          }          }
         printf("Test #2: Done\n");  
170    
171          log_end();          log_end();
172    


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

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