-- CA110042.AM -- -- Grant of Unlimited Rights -- -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687, -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained -- unlimited rights in the software and documentation contained herein. -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making -- this public release, the Government intends to confer upon all -- recipients unlimited rights equal to those held by the Government. -- 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 GOVERNMENT 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. --* -- -- OBJECTIVE: -- Check that the private part of a child library unit package can -- utilize its parent unit's visible definitions. -- -- TEST DESCRIPTION: -- Declare a public library unit package and child package, with the -- child package having a private part in the specification. Within -- this child private part, make use of components that are declared in -- the visible part of the parent. -- -- Demonstrate visibility to the following parent components in the -- child private part: -- Parent -- Type X -- Constant X -- Object X -- Subprogram X -- Exception X -- -- -- TEST FILES: -- The following files comprise this test: -- -- CA110040.A -- CA110041.A -- => CA110042.AM -- -- -- CHANGE HISTORY: -- 06 Dec 94 SAIC ACVC 2.0 -- --! with Report; with CA110040.CA110041; procedure CA110042 is package System_Manager renames CA110040.CA110041; use CA110040; User1, User2, User3 : System_Manager.User_Account; begin Report.Test ("CA110042", "Check that the private part of a child " & "library unit package can utilize its " & "parent unit's visible definitions"); Assign_New_Accounts: -- This code simulates the entering of new -- user accounts into a computer system. -- It also simulates the processing that -- could occur when the limit on system -- accounts has been exceeded. -- This processing block demonstrates the -- use of child package functionality that -- takes advantage of components declared in -- the parent package. begin if Total_Accounts /= 2 then Report.Failed ("Incorrect number of accounts currently allocated"); end if; -- At this point, both -- System_Account and -- Auditor_Account have -- been declared and -- initialized in package -- CA110040.CA110041. System_Manager.Initialize_User_Account (User1); -- User_ID has been -- set to 3. System_Manager.Initialize_User_Account (User2); -- User_ID has been -- set to 4, which -- is the last value -- defined for the -- CA110040.ID_Type -- range. System_Manager.Initialize_User_Account (User3); -- This final call will -- result in an -- Account_Limit_Exceeded -- exception being raised. Report.Failed ("Control should have transferred with exception"); exception when Account_Limit_Exceeded => if (not (Administrator_Account.User_ID = ID_Type'First)) or (User2.User_ID /= CA110040.ID_Type'Last) then Report.Failed ("Account initialization failure"); end if; when others => Report.Failed ("Unexpected exception raised"); end Assign_New_Accounts; if (User1.User_ID /= 3) or (User2.User_ID /= 4) then Report.Failed ("Improper initialization of user accounts"); end if; Report.Result; end CA110042;