aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats-4/tests/cxa/cxah003.a
blob: 77b20b07b91a6f756760aba3503418abc8fd54e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
-- CXAH003.A
--
--                             Grant of Unlimited Rights
--
--     The Ada Conformity Assessment Authority (ACAA) holds unlimited
--     rights in the software and documentation contained herein. Unlimited
--     rights are the same as those granted by the U.S. Government for older
--     parts of the Ada Conformity Assessment Test Suite, and are defined
--     in DFAR 252.227-7013(a)(19). By making this public release, the ACAA
--     intends to confer upon all recipients unlimited rights equal to those
--     held by the ACAA. These rights include rights to use, duplicate,
--     release or disclose the released technical data and computer software
--     in whole or in part, in any manner and for any purpose whatsoever, and
--     to have or permit others to do so.
--
--                                    DISCLAIMER
--
--     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
--     DISCLOSED ARE AS IS. THE ACAA MAKES NO EXPRESS OR IMPLIED
--     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
--     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
--     PARTICULAR PURPOSE OF SAID MATERIAL.
--
--                                     Notice
--
--     The ACAA has created and maintains the Ada Conformity Assessment Test
--     Suite for the purpose of conformity assessments conducted in accordance
--     with the International Standard ISO/IEC 18009 - Ada: Conformity
--     assessment of a language processor. This test suite should not be used
--     to make claims of conformance unless used in accordance with
--     ISO/IEC 18009 and any applicable ACAA procedures.
--
--*
-- OBJECTIVE:
--     Check that the two parameter Value in package Ada.Environment_Variables
--     works as expected.
--
-- TEST DESCRIPTION:
--     We try to use a non-existent specified environment variable, then
--     create it and try again. This test tests Exists, Set, Clear
--     (one parameter version), Value (two parameter version), and Iterate.
--     This is a separate test so that this Ada 2012 feature is tested
--     separately from the rest of the package.
--
--     This test assumes that no other process will change the environment
--     while the test is running. It also assumes that the specified
--     environment variable does not exist when the test starts.
--
--     If the target execution environment does not support modifying
--     environment variables, the Impdef constant
--     Unused_Environment_Variable_To_Modify MUST be set to the null string.
--     If it is not, the test will fail with an unexpected exception.
--
-- APPLICABILITY CRITERIA:
--      This test is applicable to all implementations capable of modifying,
--      creating, and deleting environment variables.
--
-- CHANGE HISTORY:
--     14 Jan 2015  RLB  Created test.
--      9 Feb 2015  RLB  Added missing Applicability Criteria.
--     12 Mar 2015  RLB  Fixed overlength lines.
--
--!
with Report;
with Ada.Environment_Variables; use Ada.Environment_Variables;
with Impdef;
procedure CXAH003 is
   Env_Name : constant String := Impdef.Unused_Environment_Variable_To_Modify;

begin
   Report.Test ("CXAH003", "Check that the two parameter Value in package " &
                           "Ada.Environment_Variables works as expected");

   if Env_Name = "" then
      Report.Not_Applicable ("No writable environment variable defined");
      goto Done;
   elsif Exists (Env_Name) then
      Report.Failed ("Writable environment variable already exists");
   elsif Value (Env_Name, "Maui") /= "Maui" then
      Report.Failed ("Wrong result from two parameter Value when the " &
                     "variable does not exist");
   end if;

   -- Create the environment variable:
   Set (Env_Name, "Madison");

   if not Exists (Env_Name) then
      Report.Failed ("Environment variable does not exist after creation");
   elsif Value (Env_Name, "Maui") /= "Madison" then
      Report.Failed ("Wrong result from two parameter Value when the " &
                     "variable does exist");
   end if;

   -- Delete the environment variable:
   Clear (Env_Name);

   if Exists (Env_Name) then
      Report.Failed ("Environment variable still exists");
   elsif Value (Env_Name, "Nassau") /= "Nassau" then
      Report.Failed ("Wrong result from two parameter Value when the " &
                     "variable does not exist after deletion");
   end if;

<<Done>>
   Report.Result;
end CXAH003;