1119418Sobrien/* Copyright (c) 2008 The NetBSD Foundation, Inc. 223599Smarkm * All rights reserved. 351694Sroger * 423599Smarkm * Redistribution and use in source and binary forms, with or without 523599Smarkm * modification, are permitted provided that the following conditions 623599Smarkm * are met: 723599Smarkm * 1. Redistributions of source code must retain the above copyright 823599Smarkm * notice, this list of conditions and the following disclaimer. 923599Smarkm * 2. Redistributions in binary form must reproduce the above copyright 1023599Smarkm * notice, this list of conditions and the following disclaimer in the 1123599Smarkm * documentation and/or other materials provided with the distribution. 1223599Smarkm * 1323599Smarkm * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 1423599Smarkm * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 1523599Smarkm * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 1651694Sroger * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 1751694Sroger * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 1823599Smarkm * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1923599Smarkm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 2023599Smarkm * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2123599Smarkm * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 2223599Smarkm * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 2323599Smarkm * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 2423599Smarkm * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ 2523599Smarkm 2623599Smarkm#include "atf-c/tc.h" 2723599Smarkm 2823599Smarkm#include <stdbool.h> 2923599Smarkm#include <string.h> 3023599Smarkm 3123599Smarkm#include <atf-c.h> 3223599Smarkm 33119418Sobrien#include "atf-c/detail/test_helpers.h" 3423599Smarkm 3523599Smarkm/* --------------------------------------------------------------------- 3623599Smarkm * Auxiliary test cases. 3723599Smarkm * --------------------------------------------------------------------- */ 3823599Smarkm 3923599SmarkmATF_TC_HEAD(empty, tc) 4023599Smarkm{ 4123599Smarkm if (tc != NULL) {} 4223599Smarkm} 4323599SmarkmATF_TC_BODY(empty, tc) 4423599Smarkm{ 4523599Smarkm} 4623599Smarkm 4723599SmarkmATF_TC_HEAD(test_var, tc) 4823599Smarkm{ 4923599Smarkm atf_tc_set_md_var(tc, "test-var", "Test text"); 5023599Smarkm} 5123599Smarkm 5223599Smarkm/* --------------------------------------------------------------------- 5323599Smarkm * Test cases for the "atf_tc_t" type. 5423599Smarkm * --------------------------------------------------------------------- */ 5523599Smarkm 5623599SmarkmATF_TC(init); 5723599SmarkmATF_TC_HEAD(init, tc) 5823599Smarkm{ 5923599Smarkm atf_tc_set_md_var(tc, "descr", "Tests the atf_tc_init function"); 6023599Smarkm} 6123599SmarkmATF_TC_BODY(init, tcin) 6223599Smarkm{ 6323599Smarkm atf_tc_t tc; 6423599Smarkm 65119418Sobrien RE(atf_tc_init(&tc, "test1", ATF_TC_HEAD_NAME(empty), 66119418Sobrien ATF_TC_BODY_NAME(empty), NULL, NULL)); 67119418Sobrien ATF_REQUIRE(strcmp(atf_tc_get_ident(&tc), "test1") == 0); 68119418Sobrien ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var")); 69119418Sobrien atf_tc_fini(&tc); 70119418Sobrien 71119418Sobrien RE(atf_tc_init(&tc, "test2", ATF_TC_HEAD_NAME(test_var), 72119418Sobrien ATF_TC_BODY_NAME(empty), NULL, NULL)); 73119418Sobrien ATF_REQUIRE(strcmp(atf_tc_get_ident(&tc), "test2") == 0); 74119418Sobrien ATF_REQUIRE(atf_tc_has_md_var(&tc, "test-var")); 75119418Sobrien atf_tc_fini(&tc); 76119418Sobrien} 77119418Sobrien 78119418SobrienATF_TC(init_pack); 79119418SobrienATF_TC_HEAD(init_pack, tc) 80119418Sobrien{ 81119418Sobrien atf_tc_set_md_var(tc, "descr", "Tests the atf_tc_init_pack function"); 82119418Sobrien} 83119418SobrienATF_TC_BODY(init_pack, tcin) 84119418Sobrien{ 85119418Sobrien atf_tc_t tc; 86119418Sobrien atf_tc_pack_t tcp1 = { 87119418Sobrien .m_ident = "test1", 88119418Sobrien .m_head = ATF_TC_HEAD_NAME(empty), 89119418Sobrien .m_body = ATF_TC_BODY_NAME(empty), 90119418Sobrien .m_cleanup = NULL, 91119418Sobrien }; 9259014Sroger atf_tc_pack_t tcp2 = { 9323599Smarkm .m_ident = "test2", 9448781Sroger .m_head = ATF_TC_HEAD_NAME(test_var), 95100431Speter .m_body = ATF_TC_BODY_NAME(empty), 9648781Sroger .m_cleanup = NULL, 9748781Sroger }; 9848781Sroger 9948781Sroger RE(atf_tc_init_pack(&tc, &tcp1, NULL)); 10046877Sroger ATF_REQUIRE(strcmp(atf_tc_get_ident(&tc), "test1") == 0); 10162214Sroger ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var")); 10262214Sroger atf_tc_fini(&tc); 10362214Sroger 10462214Sroger RE(atf_tc_init_pack(&tc, &tcp2, NULL)); 10562214Sroger ATF_REQUIRE(strcmp(atf_tc_get_ident(&tc), "test2") == 0); 10662214Sroger ATF_REQUIRE(atf_tc_has_md_var(&tc, "test-var")); 10723599Smarkm atf_tc_fini(&tc); 10823599Smarkm} 10923599Smarkm 110139917SimpATF_TC(vars); 11176166SmarkmATF_TC_HEAD(vars, tc) 112254025Sjeff{ 11376166Smarkm atf_tc_set_md_var(tc, "descr", "Tests the atf_tc_get_md_var, " 11473930Sjhb "atf_tc_has_md_var and atf_tc_set_md_var functions"); 11523599Smarkm} 116139917SimpATF_TC_BODY(vars, tcin) 117139917Simp{ 11823599Smarkm atf_tc_t tc; 11923599Smarkm 12023599Smarkm RE(atf_tc_init(&tc, "test1", ATF_TC_HEAD_NAME(empty), 12123599Smarkm ATF_TC_BODY_NAME(empty), NULL, NULL)); 12223599Smarkm ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var")); 12323599Smarkm RE(atf_tc_set_md_var(&tc, "test-var", "Test value")); 12450693Sroger ATF_REQUIRE(atf_tc_has_md_var(&tc, "test-var")); 12548781Sroger ATF_REQUIRE(strcmp(atf_tc_get_md_var(&tc, "test-var"), "Test value") == 0); 12667306Sroger atf_tc_fini(&tc); 12767306Sroger} 12873930Sjhb 12973930SjhbATF_TC(config); 130119277SimpATF_TC_HEAD(config, tc) 131119277Simp{ 132119277Simp atf_tc_set_md_var(tc, "descr", "Tests the atf_tc_get_config_var, " 13367306Sroger "atf_tc_get_config_var_wd and atf_tc_has_config_var " 13467306Sroger "functions"); 13559014Sroger} 13659014SrogerATF_TC_BODY(config, tcin) 13759014Sroger{ 138123291Sobrien atf_tc_t tc; 139123291Sobrien const char *const config[] = { "test-var", "test-value", NULL }; 14051537Sroger 14151694Sroger RE(atf_tc_init(&tc, "test1", ATF_TC_HEAD_NAME(empty), 14251694Sroger ATF_TC_BODY_NAME(empty), NULL, NULL)); 14351694Sroger ATF_REQUIRE(!atf_tc_has_config_var(&tc, "test-var")); 14459014Sroger ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var")); 14551694Sroger atf_tc_fini(&tc); 14665692Sroger 14765692Sroger RE(atf_tc_init(&tc, "test1", ATF_TC_HEAD_NAME(empty), 14865692Sroger ATF_TC_BODY_NAME(empty), NULL, config)); 14948781Sroger ATF_REQUIRE(atf_tc_has_config_var(&tc, "test-var")); 15065692Sroger ATF_REQUIRE(strcmp(atf_tc_get_config_var(&tc, "test-var"), 15151537Sroger "test-value") == 0); 15250693Sroger ATF_REQUIRE(!atf_tc_has_md_var(&tc, "test-var")); 15350693Sroger ATF_REQUIRE(!atf_tc_has_config_var(&tc, "test-var2")); 15450693Sroger ATF_REQUIRE(strcmp(atf_tc_get_config_var_wd(&tc, "test-var2", "def-value"), 15550693Sroger "def-value") == 0); 15646877Sroger atf_tc_fini(&tc); 15748781Sroger} 15862112Sroger 15962112Sroger/* --------------------------------------------------------------------- 16062112Sroger * Test cases for the free functions. 16162112Sroger * --------------------------------------------------------------------- */ 16262112Sroger 16323599Smarkm/* TODO: Add test cases for atf_tc_run. This is going to be very tough, 16462112Sroger * but good tests here could allow us to avoid much of the indirect 16529233Smarkm * testing done later on. */ 16629233Smarkm 16748781Sroger/* --------------------------------------------------------------------- 16850693Sroger * Main. 16950693Sroger * --------------------------------------------------------------------- */ 17050693Sroger 17150693SrogerATF_TP_ADD_TCS(tp) 17273930Sjhb{ 17373930Sjhb /* Add the test cases for the "atf_tcr_t" type. */ 17450693Sroger ATF_TP_ADD_TC(tp, init); 17550693Sroger ATF_TP_ADD_TC(tp, init_pack); 17650693Sroger ATF_TP_ADD_TC(tp, vars); 17750693Sroger ATF_TP_ADD_TC(tp, config); 17850693Sroger 17950693Sroger /* Add the test cases for the free functions. */ 18050693Sroger /* TODO */ 18159014Sroger 18262214Sroger return atf_no_error(); 18362214Sroger} 18462214Sroger