3 * File: rec-parse-field.c
4 * Date: Sat Nov 13 17:37:11 2010
6 * GNU recutils - rec_parse_field unit tests.
10 /* Copyright (C) 2010-2015 Jose E. Marchesi */
12 /* This program is free software: you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation, either version 3 of the License, or
15 * (at your option) any later version.
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
22 * You should have received a copy of the GNU General Public License
23 * along with this program. If not, see <http://www.gnu.org/licenses/>.
35 * Test: rec_parse_field_nominal
36 * Unit: rec_parse_field
38 * + Parse valid fields.
40 START_TEST(rec_parse_field_nominal
)
48 fname
= rec_parse_field_name_str ("foo");
49 fail_if (fname
== NULL
);
50 parser
= rec_parser_new_str (str
, "dummy");
51 fail_if (parser
== NULL
);
52 fail_if (!rec_parse_field (parser
, &field
));
53 fail_if (strcmp (rec_field_value (field
), "bar") != 0);
55 rec_field_destroy (field
);
56 rec_parser_destroy (parser
);
59 fname
= rec_parse_field_name_str ("foo");
60 fail_if (fname
== NULL
);
61 parser
= rec_parser_new_str (str
, "dummy");
62 fail_if (parser
== NULL
);
63 fail_if (!rec_parse_field (parser
, &field
));
64 fail_if (strcmp (rec_field_value (field
), " bar") != 0);
66 rec_field_destroy (field
);
67 rec_parser_destroy (parser
);
70 fname
= rec_parse_field_name_str ("foo");
71 fail_if (fname
== NULL
);
72 parser
= rec_parser_new_str (str
, "dummy");
73 fail_if (parser
== NULL
);
74 fail_if (!rec_parse_field (parser
, &field
));
75 fail_if (strcmp (rec_field_value (field
), "bar ") != 0);
77 rec_field_destroy (field
);
78 rec_parser_destroy (parser
);
81 fname
= rec_parse_field_name_str ("foo");
82 fail_if (fname
== NULL
);
83 parser
= rec_parser_new_str (str
, "dummy");
84 fail_if (parser
== NULL
);
85 fail_if (!rec_parse_field (parser
, &field
));
86 fail_if (strcmp (rec_field_value (field
), "") != 0);
88 rec_field_destroy (field
);
89 rec_parser_destroy (parser
);
92 fname
= rec_parse_field_name_str ("foo");
93 fail_if (fname
== NULL
);
94 parser
= rec_parser_new_str (str
, "dummy");
95 fail_if (parser
== NULL
);
96 fail_if (!rec_parse_field (parser
, &field
));
97 fail_if (strcmp (rec_field_value (field
), "\nbar") != 0);
99 rec_field_destroy (field
);
100 rec_parser_destroy (parser
);
103 fname
= rec_parse_field_name_str ("foo");
104 fail_if (fname
== NULL
);
105 parser
= rec_parser_new_str (str
, "dummy");
106 fail_if (parser
== NULL
);
107 fail_if (!rec_parse_field (parser
, &field
));
108 fail_if (strcmp (rec_field_value (field
), "\nbar") != 0);
110 rec_field_destroy (field
);
111 rec_parser_destroy (parser
);
113 str
= "foo: bar\n+baz";
114 fname
= rec_parse_field_name_str ("foo");
115 fail_if (fname
== NULL
);
116 parser
= rec_parser_new_str (str
, "dummy");
117 fail_if (parser
== NULL
);
118 fail_if (!rec_parse_field (parser
, &field
));
119 fail_if (strcmp (rec_field_value (field
), "bar\nbaz") != 0);
121 rec_field_destroy (field
);
122 rec_parser_destroy (parser
);
124 str
= "foo: one\n+\n+ \n+ two";
125 fname
= rec_parse_field_name_str ("foo");
126 fail_if (fname
== NULL
);
127 parser
= rec_parser_new_str (str
, "dummy");
128 fail_if (parser
== NULL
);
129 fail_if (!rec_parse_field (parser
, &field
));
130 fail_if (strcmp (rec_field_value (field
), "one\n\n\ntwo") != 0);
132 rec_field_destroy (field
);
133 rec_parser_destroy (parser
);
135 str
= "foo: bar \\\nbaz";
136 fname
= rec_parse_field_name_str ("foo");
137 fail_if (fname
== NULL
);
138 parser
= rec_parser_new_str (str
, "dummy");
139 fail_if (parser
== NULL
);
140 fail_if (!rec_parse_field (parser
, &field
));
141 fail_if (strcmp (rec_field_value (field
), "bar baz") != 0);
143 rec_field_destroy (field
);
144 rec_parser_destroy (parser
);
147 stm = fmemopen (str, strlen (str), "r");
148 fail_if (stm == NULL);
149 parser = rec_parser_new (stm, "dummy");
150 fail_if (parser == NULL);
151 fail_if (!rec_parse_field (parser, &field));
152 rec_parser_destroy (parser);
158 * Test: rec_parse_field_invalid
159 * Unit: rec_parse_field
161 * + Try to parse invalid fields.
163 START_TEST(rec_parse_field_invalid
)
170 parser
= rec_parser_new_str (str
, "dummy");
171 fail_if (parser
== NULL
);
172 fail_if (rec_parse_field (parser
, &field
));
173 rec_parser_destroy (parser
);
178 * Test creation function
181 test_rec_parse_field (void)
183 TCase
*tc
= tcase_create ("rec_parse_field");
184 tcase_add_test (tc
, rec_parse_field_nominal
);
185 tcase_add_test (tc
, rec_parse_field_invalid
);
190 /* End of rec-parse-field.c */