1895f502bSjmmv //
2895f502bSjmmv // Automated Testing Framework (atf)
3895f502bSjmmv //
4*a551a20fSjmmv // Copyright (c) 2007 The NetBSD Foundation, Inc.
5895f502bSjmmv // All rights reserved.
6895f502bSjmmv //
7895f502bSjmmv // Redistribution and use in source and binary forms, with or without
8895f502bSjmmv // modification, are permitted provided that the following conditions
9895f502bSjmmv // are met:
10895f502bSjmmv // 1. Redistributions of source code must retain the above copyright
11895f502bSjmmv // notice, this list of conditions and the following disclaimer.
12895f502bSjmmv // 2. Redistributions in binary form must reproduce the above copyright
13895f502bSjmmv // notice, this list of conditions and the following disclaimer in the
14895f502bSjmmv // documentation and/or other materials provided with the distribution.
15895f502bSjmmv //
16895f502bSjmmv // THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
17895f502bSjmmv // CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18895f502bSjmmv // INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19895f502bSjmmv // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20895f502bSjmmv // IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
21895f502bSjmmv // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22895f502bSjmmv // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
23895f502bSjmmv // GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24895f502bSjmmv // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25895f502bSjmmv // IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26895f502bSjmmv // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27895f502bSjmmv // IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28895f502bSjmmv //
29895f502bSjmmv
30895f502bSjmmv #include "../macros.hpp"
31895f502bSjmmv
32895f502bSjmmv #include "env.hpp"
33895f502bSjmmv
34895f502bSjmmv // ------------------------------------------------------------------------
35895f502bSjmmv // Test cases for the free functions.
36895f502bSjmmv // ------------------------------------------------------------------------
37895f502bSjmmv
38895f502bSjmmv ATF_TEST_CASE(has_get);
ATF_TEST_CASE_HEAD(has_get)39895f502bSjmmv ATF_TEST_CASE_HEAD(has_get)
40895f502bSjmmv {
41895f502bSjmmv set_md_var("descr", "Tests the has and get functions");
42895f502bSjmmv }
ATF_TEST_CASE_BODY(has_get)43895f502bSjmmv ATF_TEST_CASE_BODY(has_get)
44895f502bSjmmv {
45895f502bSjmmv ATF_REQUIRE(atf::env::has("PATH"));
46895f502bSjmmv ATF_REQUIRE(!atf::env::get("PATH").empty());
47895f502bSjmmv
48895f502bSjmmv ATF_REQUIRE(!atf::env::has("_UNDEFINED_VARIABLE_"));
49895f502bSjmmv }
50895f502bSjmmv
51895f502bSjmmv ATF_TEST_CASE(set);
ATF_TEST_CASE_HEAD(set)52895f502bSjmmv ATF_TEST_CASE_HEAD(set)
53895f502bSjmmv {
54895f502bSjmmv set_md_var("descr", "Tests the set function");
55895f502bSjmmv }
ATF_TEST_CASE_BODY(set)56895f502bSjmmv ATF_TEST_CASE_BODY(set)
57895f502bSjmmv {
58895f502bSjmmv ATF_REQUIRE(atf::env::has("PATH"));
59895f502bSjmmv const std::string& oldval = atf::env::get("PATH");
60895f502bSjmmv atf::env::set("PATH", "foo-bar");
61895f502bSjmmv ATF_REQUIRE(atf::env::get("PATH") != oldval);
62895f502bSjmmv ATF_REQUIRE_EQ(atf::env::get("PATH"), "foo-bar");
63895f502bSjmmv
64895f502bSjmmv ATF_REQUIRE(!atf::env::has("_UNDEFINED_VARIABLE_"));
65895f502bSjmmv atf::env::set("_UNDEFINED_VARIABLE_", "foo2-bar2");
66895f502bSjmmv ATF_REQUIRE_EQ(atf::env::get("_UNDEFINED_VARIABLE_"), "foo2-bar2");
67895f502bSjmmv }
68895f502bSjmmv
69895f502bSjmmv ATF_TEST_CASE(unset);
ATF_TEST_CASE_HEAD(unset)70895f502bSjmmv ATF_TEST_CASE_HEAD(unset)
71895f502bSjmmv {
72895f502bSjmmv set_md_var("descr", "Tests the unset function");
73895f502bSjmmv }
ATF_TEST_CASE_BODY(unset)74895f502bSjmmv ATF_TEST_CASE_BODY(unset)
75895f502bSjmmv {
76895f502bSjmmv ATF_REQUIRE(atf::env::has("PATH"));
77895f502bSjmmv atf::env::unset("PATH");
78895f502bSjmmv ATF_REQUIRE(!atf::env::has("PATH"));
79895f502bSjmmv }
80895f502bSjmmv
81895f502bSjmmv // ------------------------------------------------------------------------
82895f502bSjmmv // Main.
83895f502bSjmmv // ------------------------------------------------------------------------
84895f502bSjmmv
ATF_INIT_TEST_CASES(tcs)85895f502bSjmmv ATF_INIT_TEST_CASES(tcs)
86895f502bSjmmv {
87895f502bSjmmv // Add the test cases for the free functions.
88895f502bSjmmv ATF_ADD_TEST_CASE(tcs, has_get);
89895f502bSjmmv ATF_ADD_TEST_CASE(tcs, set);
90895f502bSjmmv ATF_ADD_TEST_CASE(tcs, unset);
91895f502bSjmmv }
92