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 39c243e490SMarcel Moolenaar ATF_TC_HEAD(empty, tc) 40c243e490SMarcel Moolenaar { 41c243e490SMarcel Moolenaar if (tc != NULL) {} 42c243e490SMarcel Moolenaar } 43c243e490SMarcel Moolenaar ATF_TC_BODY(empty, tc) 44c243e490SMarcel Moolenaar { 45c243e490SMarcel Moolenaar } 46c243e490SMarcel Moolenaar 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); 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 } 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); 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 } 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); 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 } 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); 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 } 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 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