1240116Smarcel// Copyright (c) 2007 The NetBSD Foundation, Inc. 2240116Smarcel// All rights reserved. 3240116Smarcel// 4240116Smarcel// Redistribution and use in source and binary forms, with or without 5240116Smarcel// modification, are permitted provided that the following conditions 6240116Smarcel// are met: 7240116Smarcel// 1. Redistributions of source code must retain the above copyright 8240116Smarcel// notice, this list of conditions and the following disclaimer. 9240116Smarcel// 2. Redistributions in binary form must reproduce the above copyright 10240116Smarcel// notice, this list of conditions and the following disclaimer in the 11240116Smarcel// documentation and/or other materials provided with the distribution. 12240116Smarcel// 13240116Smarcel// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 14240116Smarcel// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 15240116Smarcel// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 16240116Smarcel// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17240116Smarcel// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 18240116Smarcel// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19240116Smarcel// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 20240116Smarcel// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21240116Smarcel// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 22240116Smarcel// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 23240116Smarcel// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 24240116Smarcel// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25240116Smarcel 26273929Sjmmv#include "atf-c++/detail/env.hpp" 27240116Smarcel 28273929Sjmmv#include <atf-c++.hpp> 29240116Smarcel 30240116Smarcel// ------------------------------------------------------------------------ 31240116Smarcel// Test cases for the free functions. 32240116Smarcel// ------------------------------------------------------------------------ 33240116Smarcel 34240116SmarcelATF_TEST_CASE(has_get); 35240116SmarcelATF_TEST_CASE_HEAD(has_get) 36240116Smarcel{ 37240116Smarcel set_md_var("descr", "Tests the has and get functions"); 38240116Smarcel} 39240116SmarcelATF_TEST_CASE_BODY(has_get) 40240116Smarcel{ 41240116Smarcel ATF_REQUIRE(atf::env::has("PATH")); 42240116Smarcel ATF_REQUIRE(!atf::env::get("PATH").empty()); 43240116Smarcel 44240116Smarcel ATF_REQUIRE(!atf::env::has("_UNDEFINED_VARIABLE_")); 45240116Smarcel} 46240116Smarcel 47273929SjmmvATF_TEST_CASE(get_with_default); 48273929SjmmvATF_TEST_CASE_HEAD(get_with_default) 49273929Sjmmv{ 50273929Sjmmv set_md_var("descr", "Tests the get function with a default value"); 51273929Sjmmv} 52273929SjmmvATF_TEST_CASE_BODY(get_with_default) 53273929Sjmmv{ 54273929Sjmmv ATF_REQUIRE(atf::env::has("PATH")); 55273929Sjmmv ATF_REQUIRE(atf::env::get("PATH", "default value") != "default value"); 56273929Sjmmv 57273929Sjmmv ATF_REQUIRE_EQ(atf::env::get("_UNDEFINED_VARIABLE_", "foo bar"), "foo bar"); 58273929Sjmmv} 59273929Sjmmv 60240116SmarcelATF_TEST_CASE(set); 61240116SmarcelATF_TEST_CASE_HEAD(set) 62240116Smarcel{ 63240116Smarcel set_md_var("descr", "Tests the set function"); 64240116Smarcel} 65240116SmarcelATF_TEST_CASE_BODY(set) 66240116Smarcel{ 67240116Smarcel ATF_REQUIRE(atf::env::has("PATH")); 68240116Smarcel const std::string& oldval = atf::env::get("PATH"); 69240116Smarcel atf::env::set("PATH", "foo-bar"); 70240116Smarcel ATF_REQUIRE(atf::env::get("PATH") != oldval); 71240116Smarcel ATF_REQUIRE_EQ(atf::env::get("PATH"), "foo-bar"); 72240116Smarcel 73240116Smarcel ATF_REQUIRE(!atf::env::has("_UNDEFINED_VARIABLE_")); 74240116Smarcel atf::env::set("_UNDEFINED_VARIABLE_", "foo2-bar2"); 75240116Smarcel ATF_REQUIRE_EQ(atf::env::get("_UNDEFINED_VARIABLE_"), "foo2-bar2"); 76240116Smarcel} 77240116Smarcel 78240116SmarcelATF_TEST_CASE(unset); 79240116SmarcelATF_TEST_CASE_HEAD(unset) 80240116Smarcel{ 81240116Smarcel set_md_var("descr", "Tests the unset function"); 82240116Smarcel} 83240116SmarcelATF_TEST_CASE_BODY(unset) 84240116Smarcel{ 85240116Smarcel ATF_REQUIRE(atf::env::has("PATH")); 86240116Smarcel atf::env::unset("PATH"); 87240116Smarcel ATF_REQUIRE(!atf::env::has("PATH")); 88240116Smarcel} 89240116Smarcel 90240116Smarcel// ------------------------------------------------------------------------ 91240116Smarcel// Main. 92240116Smarcel// ------------------------------------------------------------------------ 93240116Smarcel 94240116SmarcelATF_INIT_TEST_CASES(tcs) 95240116Smarcel{ 96240116Smarcel // Add the test cases for the free functions. 97240116Smarcel ATF_ADD_TEST_CASE(tcs, has_get); 98273929Sjmmv ATF_ADD_TEST_CASE(tcs, get_with_default); 99240116Smarcel ATF_ADD_TEST_CASE(tcs, set); 100240116Smarcel ATF_ADD_TEST_CASE(tcs, unset); 101240116Smarcel} 102