xref: /freebsd/contrib/atf/atf-c/tc_test.c (revision 8f0ea33f2bbf3a6aa80235f0a02fa5f2780c2b17)
1*0677dfd1SJulio Merino /* Copyright (c) 2008 The NetBSD Foundation, Inc.
2c243e490SMarcel Moolenaar  * All rights reserved.
3c243e490SMarcel Moolenaar  *
4c243e490SMarcel Moolenaar  * Redistribution and use in source and binary forms, with or without
5c243e490SMarcel Moolenaar  * modification, are permitted provided that the following conditions
6c243e490SMarcel Moolenaar  * are met:
7c243e490SMarcel Moolenaar  * 1. Redistributions of source code must retain the above copyright
8c243e490SMarcel Moolenaar  *    notice, this list of conditions and the following disclaimer.
9c243e490SMarcel Moolenaar  * 2. Redistributions in binary form must reproduce the above copyright
10c243e490SMarcel Moolenaar  *    notice, this list of conditions and the following disclaimer in the
11c243e490SMarcel Moolenaar  *    documentation and/or other materials provided with the distribution.
12c243e490SMarcel Moolenaar  *
13c243e490SMarcel Moolenaar  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
14c243e490SMarcel Moolenaar  * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
15c243e490SMarcel Moolenaar  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
16c243e490SMarcel Moolenaar  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17c243e490SMarcel Moolenaar  * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
18c243e490SMarcel Moolenaar  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19c243e490SMarcel Moolenaar  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
20c243e490SMarcel Moolenaar  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21c243e490SMarcel Moolenaar  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
22c243e490SMarcel Moolenaar  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23c243e490SMarcel Moolenaar  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
24*0677dfd1SJulio Merino  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  */
25*0677dfd1SJulio Merino 
26*0677dfd1SJulio Merino #include "atf-c/tc.h"
27c243e490SMarcel Moolenaar 
28c243e490SMarcel Moolenaar #include <stdbool.h>
29c243e490SMarcel Moolenaar #include <string.h>
30c243e490SMarcel Moolenaar 
31c243e490SMarcel Moolenaar #include <atf-c.h>
32c243e490SMarcel Moolenaar 
33*0677dfd1SJulio Merino #include "atf-c/detail/test_helpers.h"
34c243e490SMarcel Moolenaar 
35c243e490SMarcel Moolenaar /* ---------------------------------------------------------------------
36c243e490SMarcel Moolenaar  * Auxiliary test cases.
37c243e490SMarcel Moolenaar  * --------------------------------------------------------------------- */
38c243e490SMarcel Moolenaar 
ATF_TC_HEAD(empty,tc)39c243e490SMarcel Moolenaar ATF_TC_HEAD(empty, tc)
40c243e490SMarcel Moolenaar {
41c243e490SMarcel Moolenaar     if (tc != NULL) {}
42c243e490SMarcel Moolenaar }
ATF_TC_BODY(empty,tc)43c243e490SMarcel Moolenaar ATF_TC_BODY(empty, tc)
44c243e490SMarcel Moolenaar {
45c243e490SMarcel Moolenaar }
46c243e490SMarcel Moolenaar 
ATF_TC_HEAD(test_var,tc)47c243e490SMarcel Moolenaar ATF_TC_HEAD(test_var, tc)
48c243e490SMarcel Moolenaar {
49c243e490SMarcel Moolenaar     atf_tc_set_md_var(tc, "test-var", "Test text");
50c243e490SMarcel Moolenaar }
51c243e490SMarcel Moolenaar 
52c243e490SMarcel Moolenaar /* ---------------------------------------------------------------------
53c243e490SMarcel Moolenaar  * Test cases for the "atf_tc_t" type.
54c243e490SMarcel Moolenaar  * --------------------------------------------------------------------- */
55c243e490SMarcel Moolenaar 
56c243e490SMarcel Moolenaar ATF_TC(init);
ATF_TC_HEAD(init,tc)57c243e490SMarcel Moolenaar ATF_TC_HEAD(init, tc)
58c243e490SMarcel Moolenaar {
59c243e490SMarcel Moolenaar     atf_tc_set_md_var(tc, "descr", "Tests the atf_tc_init function");
60c243e490SMarcel Moolenaar }
ATF_TC_BODY(init,tcin)61c243e490SMarcel Moolenaar ATF_TC_BODY(init, tcin)
62c243e490SMarcel Moolenaar {
63c243e490SMarcel Moolenaar     atf_tc_t tc;
64c243e490SMarcel Moolenaar 
65c243e490SMarcel Moolenaar     RE(atf_tc_init(&tc, "test1", ATF_TC_HEAD_NAME(empty),
66c243e490SMarcel Moolenaar                    ATF_TC_BODY_NAME(empty), NULL, NULL));
67c243e490SMarcel Moolenaar     ATF_REQUIRE(strcmp(atf_tc_get_ident(&tc), "test1") == 0);
68c243e490SMarcel Moolenaar     ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var"));
69c243e490SMarcel Moolenaar     atf_tc_fini(&tc);
70c243e490SMarcel Moolenaar 
71c243e490SMarcel Moolenaar     RE(atf_tc_init(&tc, "test2", ATF_TC_HEAD_NAME(test_var),
72c243e490SMarcel Moolenaar                    ATF_TC_BODY_NAME(empty), NULL, NULL));
73c243e490SMarcel Moolenaar     ATF_REQUIRE(strcmp(atf_tc_get_ident(&tc), "test2") == 0);
74c243e490SMarcel Moolenaar     ATF_REQUIRE(atf_tc_has_md_var(&tc, "test-var"));
75c243e490SMarcel Moolenaar     atf_tc_fini(&tc);
76c243e490SMarcel Moolenaar }
77c243e490SMarcel Moolenaar 
78c243e490SMarcel Moolenaar ATF_TC(init_pack);
ATF_TC_HEAD(init_pack,tc)79c243e490SMarcel Moolenaar ATF_TC_HEAD(init_pack, tc)
80c243e490SMarcel Moolenaar {
81c243e490SMarcel Moolenaar     atf_tc_set_md_var(tc, "descr", "Tests the atf_tc_init_pack function");
82c243e490SMarcel Moolenaar }
ATF_TC_BODY(init_pack,tcin)83c243e490SMarcel Moolenaar ATF_TC_BODY(init_pack, tcin)
84c243e490SMarcel Moolenaar {
85c243e490SMarcel Moolenaar     atf_tc_t tc;
86c243e490SMarcel Moolenaar     atf_tc_pack_t tcp1 = {
87c243e490SMarcel Moolenaar         .m_ident = "test1",
88c243e490SMarcel Moolenaar         .m_head = ATF_TC_HEAD_NAME(empty),
89c243e490SMarcel Moolenaar         .m_body = ATF_TC_BODY_NAME(empty),
90c243e490SMarcel Moolenaar         .m_cleanup = NULL,
91c243e490SMarcel Moolenaar     };
92c243e490SMarcel Moolenaar     atf_tc_pack_t tcp2 = {
93c243e490SMarcel Moolenaar         .m_ident = "test2",
94c243e490SMarcel Moolenaar         .m_head = ATF_TC_HEAD_NAME(test_var),
95c243e490SMarcel Moolenaar         .m_body = ATF_TC_BODY_NAME(empty),
96c243e490SMarcel Moolenaar         .m_cleanup = NULL,
97c243e490SMarcel Moolenaar     };
98c243e490SMarcel Moolenaar 
99c243e490SMarcel Moolenaar     RE(atf_tc_init_pack(&tc, &tcp1, NULL));
100c243e490SMarcel Moolenaar     ATF_REQUIRE(strcmp(atf_tc_get_ident(&tc), "test1") == 0);
101c243e490SMarcel Moolenaar     ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var"));
102c243e490SMarcel Moolenaar     atf_tc_fini(&tc);
103c243e490SMarcel Moolenaar 
104c243e490SMarcel Moolenaar     RE(atf_tc_init_pack(&tc, &tcp2, NULL));
105c243e490SMarcel Moolenaar     ATF_REQUIRE(strcmp(atf_tc_get_ident(&tc), "test2") == 0);
106c243e490SMarcel Moolenaar     ATF_REQUIRE(atf_tc_has_md_var(&tc, "test-var"));
107c243e490SMarcel Moolenaar     atf_tc_fini(&tc);
108c243e490SMarcel Moolenaar }
109c243e490SMarcel Moolenaar 
110c243e490SMarcel Moolenaar ATF_TC(vars);
ATF_TC_HEAD(vars,tc)111c243e490SMarcel Moolenaar ATF_TC_HEAD(vars, tc)
112c243e490SMarcel Moolenaar {
113c243e490SMarcel Moolenaar     atf_tc_set_md_var(tc, "descr", "Tests the atf_tc_get_md_var, "
114c243e490SMarcel Moolenaar                       "atf_tc_has_md_var and atf_tc_set_md_var functions");
115c243e490SMarcel Moolenaar }
ATF_TC_BODY(vars,tcin)116c243e490SMarcel Moolenaar ATF_TC_BODY(vars, tcin)
117c243e490SMarcel Moolenaar {
118c243e490SMarcel Moolenaar     atf_tc_t tc;
119c243e490SMarcel Moolenaar 
120c243e490SMarcel Moolenaar     RE(atf_tc_init(&tc, "test1", ATF_TC_HEAD_NAME(empty),
121c243e490SMarcel Moolenaar                    ATF_TC_BODY_NAME(empty), NULL, NULL));
122c243e490SMarcel Moolenaar     ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var"));
123c243e490SMarcel Moolenaar     RE(atf_tc_set_md_var(&tc, "test-var", "Test value"));
124c243e490SMarcel Moolenaar     ATF_REQUIRE(atf_tc_has_md_var(&tc, "test-var"));
125c243e490SMarcel Moolenaar     ATF_REQUIRE(strcmp(atf_tc_get_md_var(&tc, "test-var"), "Test value") == 0);
126c243e490SMarcel Moolenaar     atf_tc_fini(&tc);
127c243e490SMarcel Moolenaar }
128c243e490SMarcel Moolenaar 
129c243e490SMarcel Moolenaar ATF_TC(config);
ATF_TC_HEAD(config,tc)130c243e490SMarcel Moolenaar ATF_TC_HEAD(config, tc)
131c243e490SMarcel Moolenaar {
132c243e490SMarcel Moolenaar     atf_tc_set_md_var(tc, "descr", "Tests the atf_tc_get_config_var, "
133c243e490SMarcel Moolenaar                       "atf_tc_get_config_var_wd and atf_tc_has_config_var "
134c243e490SMarcel Moolenaar                       "functions");
135c243e490SMarcel Moolenaar }
ATF_TC_BODY(config,tcin)136c243e490SMarcel Moolenaar ATF_TC_BODY(config, tcin)
137c243e490SMarcel Moolenaar {
138c243e490SMarcel Moolenaar     atf_tc_t tc;
139c243e490SMarcel Moolenaar     const char *const config[] = { "test-var", "test-value", NULL };
140c243e490SMarcel Moolenaar 
141c243e490SMarcel Moolenaar     RE(atf_tc_init(&tc, "test1", ATF_TC_HEAD_NAME(empty),
142c243e490SMarcel Moolenaar                    ATF_TC_BODY_NAME(empty), NULL, NULL));
143c243e490SMarcel Moolenaar     ATF_REQUIRE(!atf_tc_has_config_var(&tc, "test-var"));
144c243e490SMarcel Moolenaar     ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var"));
145c243e490SMarcel Moolenaar     atf_tc_fini(&tc);
146c243e490SMarcel Moolenaar 
147c243e490SMarcel Moolenaar     RE(atf_tc_init(&tc, "test1", ATF_TC_HEAD_NAME(empty),
148c243e490SMarcel Moolenaar                    ATF_TC_BODY_NAME(empty), NULL, config));
149c243e490SMarcel Moolenaar     ATF_REQUIRE(atf_tc_has_config_var(&tc, "test-var"));
150c243e490SMarcel Moolenaar     ATF_REQUIRE(strcmp(atf_tc_get_config_var(&tc, "test-var"),
151c243e490SMarcel Moolenaar                      "test-value") == 0);
152c243e490SMarcel Moolenaar     ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var"));
153c243e490SMarcel Moolenaar     ATF_REQUIRE(!atf_tc_has_config_var(&tc, "test-var2"));
154c243e490SMarcel Moolenaar     ATF_REQUIRE(strcmp(atf_tc_get_config_var_wd(&tc, "test-var2", "def-value"),
155c243e490SMarcel Moolenaar                      "def-value") == 0);
156c243e490SMarcel Moolenaar     atf_tc_fini(&tc);
157c243e490SMarcel Moolenaar }
158c243e490SMarcel Moolenaar 
159c243e490SMarcel Moolenaar /* ---------------------------------------------------------------------
160c243e490SMarcel Moolenaar  * Test cases for the free functions.
161c243e490SMarcel Moolenaar  * --------------------------------------------------------------------- */
162c243e490SMarcel Moolenaar 
163c243e490SMarcel Moolenaar /* TODO: Add test cases for atf_tc_run.  This is going to be very tough,
164c243e490SMarcel Moolenaar  * but good tests here could allow us to avoid much of the indirect
165c243e490SMarcel Moolenaar  * testing done later on. */
166c243e490SMarcel Moolenaar 
167c243e490SMarcel Moolenaar /* ---------------------------------------------------------------------
168c243e490SMarcel Moolenaar  * Main.
169c243e490SMarcel Moolenaar  * --------------------------------------------------------------------- */
170c243e490SMarcel Moolenaar 
ATF_TP_ADD_TCS(tp)171c243e490SMarcel Moolenaar ATF_TP_ADD_TCS(tp)
172c243e490SMarcel Moolenaar {
173c243e490SMarcel Moolenaar     /* Add the test cases for the "atf_tcr_t" type. */
174c243e490SMarcel Moolenaar     ATF_TP_ADD_TC(tp, init);
175c243e490SMarcel Moolenaar     ATF_TP_ADD_TC(tp, init_pack);
176c243e490SMarcel Moolenaar     ATF_TP_ADD_TC(tp, vars);
177c243e490SMarcel Moolenaar     ATF_TP_ADD_TC(tp, config);
178c243e490SMarcel Moolenaar 
179c243e490SMarcel Moolenaar     /* Add the test cases for the free functions. */
180c243e490SMarcel Moolenaar     /* TODO */
181c243e490SMarcel Moolenaar 
182c243e490SMarcel Moolenaar     return atf_no_error();
183c243e490SMarcel Moolenaar }
184