OSDN Git Service

implement menu handling logic.
[bbk/bchanl.git] / src / test_extbbslist.c
1 /*
2  * test_extbbslist.c
3  *
4  * Copyright (c) 2012 project bchan
5  *
6  * This software is provided 'as-is', without any express or implied
7  * warranty. In no event will the authors be held liable for any damages
8  * arising from the use of this software.
9  *
10  * Permission is granted to anyone to use this software for any purpose,
11  * including commercial applications, and to alter it and redistribute it
12  * freely, subject to the following restrictions:
13  *
14  * 1. The origin of this software must not be misrepresented; you must not
15  *    claim that you wrote the original software. If you use this software
16  *    in a product, an acknowledgment in the product documentation would be
17  *    appreciated but is not required.
18  *
19  * 2. Altered source versions must be plainly marked as such, and must not be
20  *    misrepresented as being the original software.
21  *
22  * 3. This notice may not be removed or altered from any source
23  *    distribution.
24  *
25  */
26
27 #include    "test.h"
28
29 #include    "extbbslist.h"
30
31 #include    <btron/btron.h>
32 #include        <tcode.h>
33 #include    <bstdio.h>
34 #include    <bstring.h>
35 #include    <tstring.h>
36
37 #include    <unittest_driver.h>
38
39 LOCAL TC test_extbbslist_testtitle001[] = {TK_A, TK_A, TK_A, TNULL};
40 LOCAL TC test_extbbslist_testtitle002[] = {TK_B, TK_B, TK_B, TNULL};
41 LOCAL TC test_extbbslist_testtitle003[] = {TK_C, TK_C, TK_C, TNULL};
42 LOCAL TC test_extbbslist_testtitle004[] = {TK_D, TK_D, TK_D, TNULL};
43 LOCAL UB test_extbbslist_testurl001[] = "http://aaa.bbb.ccc/abcdef/";
44 LOCAL UB test_extbbslist_testurl002[] = "http://ddd.eee.fff/abcdef/";
45 LOCAL UB test_extbbslist_testurl003[] = "http://aaa.bbb.ccc/ghijkl/";
46 LOCAL UB test_extbbslist_testurl004[] = "http://aaa.bbb.ccc/mnopqr/";
47
48 LOCAL UNITTEST_RESULT test_extbbslist_1()
49 {
50         extbbslist_t *list;
51         extbbslist_readcontext_t *ctx;
52         UNITTEST_RESULT result = UNITTEST_RESULT_PASS;
53         TC *title;
54         UB *url;
55         W err, title_len, url_len;
56         Bool cont;
57
58         list = extbbslist_new(NULL, 0, 0);
59
60         title = test_extbbslist_testtitle001;
61         title_len = tc_strlen(title);
62         url = test_extbbslist_testurl001;
63         url_len = strlen(url);
64         err = extbbslist_appenditem(list, title, title_len, url, url_len);
65         if (err < 0) {
66                 printf("extbbslist_appenditem 001\n");
67                 result = UNITTEST_RESULT_FAIL;
68         }
69         title = test_extbbslist_testtitle002;
70         title_len = tc_strlen(title);
71         url = test_extbbslist_testurl002;
72         url_len = strlen(url);
73         err = extbbslist_appenditem(list, title, title_len, url, url_len);
74         if (err < 0) {
75                 printf("extbbslist_appenditem 002\n");
76                 result = UNITTEST_RESULT_FAIL;
77         }
78         title = test_extbbslist_testtitle003;
79         title_len = tc_strlen(title);
80         url = test_extbbslist_testurl003;
81         url_len = strlen(url);
82         err = extbbslist_appenditem(list, title, title_len, url, url_len);
83         if (err < 0) {
84                 printf("extbbslist_appenditem 003\n");
85                 result = UNITTEST_RESULT_FAIL;
86         }
87         title = test_extbbslist_testtitle004;
88         title_len = tc_strlen(title);
89         url = test_extbbslist_testurl004;
90         url_len = strlen(url);
91         err = extbbslist_appenditem(list, title, title_len, url, url_len);
92         if (err < 0) {
93                 printf("extbbslist_appenditem 004\n");
94                 result = UNITTEST_RESULT_FAIL;
95         }
96
97         ctx = extbbslist_startread(list);
98         if (ctx == NULL) {
99                 printf("extbbslist_startread\n");
100                 extbbslist_delete(list);
101                 return UNITTEST_RESULT_FAIL;
102         }
103
104         cont = extbbslist_readcontext_getnext(ctx, &title, &title_len, &url, &url_len);
105         if (cont == False) {
106                 printf("extbbslist_readcontext_getnext return value 001\n");
107                 result = UNITTEST_RESULT_FAIL;
108         }
109         if (tc_strncmp(title, test_extbbslist_testtitle001, title_len) != 0) {
110                 printf("extbbslist_readcontext_getnext title 001\n");
111                 result = UNITTEST_RESULT_FAIL;
112         }
113         if (strncmp(url, test_extbbslist_testurl001, url_len) != 0) {
114                 printf("extbbslist_readcontext_getnext url 001\n");
115                 printf("                               expected = %s\n", test_extbbslist_testurl001);
116                 printf("                               result = %s\n", url);
117                 result = UNITTEST_RESULT_FAIL;
118         }
119         cont = extbbslist_readcontext_getnext(ctx, &title, &title_len, &url, &url_len);
120         if (cont == False) {
121                 printf("extbbslist_readcontext_getnext return value 002\n");
122                 result = UNITTEST_RESULT_FAIL;
123         }
124         if (tc_strncmp(title, test_extbbslist_testtitle002, title_len) != 0) {
125                 printf("extbbslist_readcontext_getnext title 002\n");
126                 result = UNITTEST_RESULT_FAIL;
127         }
128         if (strncmp(url, test_extbbslist_testurl002, url_len) != 0) {
129                 printf("extbbslist_readcontext_getnext url 002\n");
130                 result = UNITTEST_RESULT_FAIL;
131         }
132         cont = extbbslist_readcontext_getnext(ctx, &title, &title_len, &url, &url_len);
133         if (cont == False) {
134                 printf("extbbslist_readcontext_getnext return value 003\n");
135                 result = UNITTEST_RESULT_FAIL;
136         }
137         if (tc_strncmp(title, test_extbbslist_testtitle003, title_len) != 0) {
138                 printf("extbbslist_readcontext_getnext title 003\n");
139                 result = UNITTEST_RESULT_FAIL;
140         }
141         if (strncmp(url, test_extbbslist_testurl003, url_len) != 0) {
142                 printf("extbbslist_readcontext_getnext url 003\n");
143                 result = UNITTEST_RESULT_FAIL;
144         }
145         cont = extbbslist_readcontext_getnext(ctx, &title, &title_len, &url, &url_len);
146         if (cont == False) {
147                 printf("extbbslist_readcontext_getnext return value 004\n");
148                 result = UNITTEST_RESULT_FAIL;
149         }
150         if (tc_strncmp(title, test_extbbslist_testtitle004, title_len) != 0) {
151                 printf("extbbslist_readcontext_getnext title 004\n");
152                 result = UNITTEST_RESULT_FAIL;
153         }
154         if (strncmp(url, test_extbbslist_testurl004, url_len) != 0) {
155                 printf("extbbslist_readcontext_getnext url 004\n");
156                 result = UNITTEST_RESULT_FAIL;
157         }
158         cont = extbbslist_readcontext_getnext(ctx, &title, &title_len, &url, &url_len);
159         if (cont != False) {
160                 printf("extbbslist_readcontext_getnext return value 005\n");
161                 result = UNITTEST_RESULT_FAIL;
162         }
163
164         extbbslist_endread(list, ctx);
165
166         extbbslist_delete(list);
167
168         return result;
169 }
170
171 LOCAL UNITTEST_RESULT test_extbbslist_2()
172 {
173         extbbslist_t *list;
174         UNITTEST_RESULT result = UNITTEST_RESULT_PASS;
175         TC *title;
176         UB *url;
177         W err, title_len, url_len, num;
178
179         list = extbbslist_new(NULL, 0, 0);
180
181         num = extbbslist_number(list);
182         if (num != 0) {
183                 printf("extbbslist_number 000\n");
184                 result = UNITTEST_RESULT_FAIL;
185         }
186
187         title = test_extbbslist_testtitle001;
188         title_len = tc_strlen(title);
189         url = test_extbbslist_testurl001;
190         url_len = strlen(url);
191         err = extbbslist_appenditem(list, title, title_len, url, url_len);
192         if (err < 0) {
193                 printf("extbbslist_appenditem 001\n");
194                 result = UNITTEST_RESULT_FAIL;
195         }
196         num = extbbslist_number(list);
197         if (num != 1) {
198                 printf("extbbslist_number 001\n");
199                 result = UNITTEST_RESULT_FAIL;
200         }
201
202         title = test_extbbslist_testtitle002;
203         title_len = tc_strlen(title);
204         url = test_extbbslist_testurl002;
205         url_len = strlen(url);
206         err = extbbslist_appenditem(list, title, title_len, url, url_len);
207         if (err < 0) {
208                 printf("extbbslist_appenditem 002\n");
209                 result = UNITTEST_RESULT_FAIL;
210         }
211         num = extbbslist_number(list);
212         if (num != 2) {
213                 printf("extbbslist_number 002\n");
214                 result = UNITTEST_RESULT_FAIL;
215         }
216
217         title = test_extbbslist_testtitle003;
218         title_len = tc_strlen(title);
219         url = test_extbbslist_testurl003;
220         url_len = strlen(url);
221         err = extbbslist_appenditem(list, title, title_len, url, url_len);
222         if (err < 0) {
223                 printf("extbbslist_appenditem 003\n");
224                 result = UNITTEST_RESULT_FAIL;
225         }
226         num = extbbslist_number(list);
227         if (num != 3) {
228                 printf("extbbslist_number 003\n");
229                 result = UNITTEST_RESULT_FAIL;
230         }
231
232         title = test_extbbslist_testtitle004;
233         title_len = tc_strlen(title);
234         url = test_extbbslist_testurl004;
235         url_len = strlen(url);
236         err = extbbslist_appenditem(list, title, title_len, url, url_len);
237         if (err < 0) {
238                 printf("extbbslist_appenditem 004\n");
239                 result = UNITTEST_RESULT_FAIL;
240         }
241         num = extbbslist_number(list);
242         if (num != 4) {
243                 printf("extbbslist_number 004\n");
244                 result = UNITTEST_RESULT_FAIL;
245         }
246
247         title = test_extbbslist_testtitle002;
248         title_len = tc_strlen(title);
249         err = extbbslist_deleteitem(list, title, title_len);
250         if (err < 0) {
251                 printf("extbbslist_deleteitem 002\n");
252                 result = UNITTEST_RESULT_FAIL;
253         }
254         num = extbbslist_number(list);
255         if (num != 3) {
256                 printf("extbbslist_number 002\n");
257                 result = UNITTEST_RESULT_FAIL;
258         }
259
260         extbbslist_delete(list);
261
262         return result;
263 }
264
265 EXPORT VOID test_extbbslist_main(unittest_driver_t *driver)
266 {
267         UNITTEST_DRIVER_REGIST(driver, test_extbbslist_1);
268         UNITTEST_DRIVER_REGIST(driver, test_extbbslist_2);
269 }