malloc
[protos/libecoli.git] / lib / main.c
1 /*
2  * Copyright (c) 2016, Olivier MATZ <zer0@droids-corp.org>
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  *     * Redistributions of source code must retain the above copyright
8  *       notice, this list of conditions and the following disclaimer.
9  *     * Redistributions in binary form must reproduce the above copyright
10  *       notice, this list of conditions and the following disclaimer in the
11  *       documentation and/or other materials provided with the distribution.
12  *     * Neither the name of the University of California, Berkeley nor the
13  *       names of its contributors may be used to endorse or promote products
14  *       derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27
28 #include <stdlib.h>
29 #include <stdio.h>
30 #include <assert.h>
31
32 #include <ecoli_test.h>
33 #include <ecoli_tk_str.h>
34 #include <ecoli_tk_seq.h>
35 #include <ecoli_tk_space.h>
36 #include <ecoli_tk_or.h>
37
38 static void test(void)
39 {
40         struct ec_tk *seq;
41         struct ec_parsed_tk *p;
42         const char *name;
43
44         seq = ec_tk_seq_new_list(NULL,
45                 ec_tk_str_new(NULL, "hello"),
46                 ec_tk_space_new(NULL),
47                 ec_tk_or_new_list("name",
48                         ec_tk_str_new(NULL, "john"),
49                         ec_tk_str_new(NULL, "mike"),
50                         EC_TK_ENDLIST),
51                 EC_TK_ENDLIST);
52         if (seq == NULL) {
53                 printf("cannot create token\n");
54                 return;
55         }
56
57         /* ok */
58         p = ec_tk_parse(seq, "hello  mike");
59         ec_parsed_tk_dump(p);
60         name = ec_parsed_tk_to_string(ec_parsed_tk_find_first(p, "name"));
61         printf("parsed with name=%s\n", name);
62         ec_parsed_tk_free(p);
63
64         /* ko */
65         p = ec_tk_parse(seq, "hello robert");
66         ec_parsed_tk_dump(p);
67         name = ec_parsed_tk_to_string(ec_parsed_tk_find_first(p, "name"));
68         printf("parsed with name=%s\n", name);
69         ec_parsed_tk_free(p);
70
71         ec_tk_free(seq);
72 }
73
74 int main(void)
75 {
76         ec_test_all();
77
78         test();
79
80         return 0;
81 }