aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/ada/acats/tests/cd/cd70001.a
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/ada/acats/tests/cd/cd70001.a')
-rw-r--r--gcc-4.9/gcc/testsuite/ada/acats/tests/cd/cd70001.a201
1 files changed, 201 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/ada/acats/tests/cd/cd70001.a b/gcc-4.9/gcc/testsuite/ada/acats/tests/cd/cd70001.a
new file mode 100644
index 000000000..484009588
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/ada/acats/tests/cd/cd70001.a
@@ -0,0 +1,201 @@
+--
+-- CD70001.A
+--
+-- 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 package System includes Max_Base_Digits, Address,
+-- Null_Address, Word_Size, functions "<", "<=", ">", ">=", "="
+-- (with Address parameters and Boolean results), Bit_Order,
+-- Default_Bit_Order, Any_Priority, Interrupt_Priority,
+-- and Default_Priority.
+--
+-- Check that package System.Storage_Elements includes all required
+-- types and operations.
+--
+-- TEST DESCRIPTION:
+-- The test checks for the existence of the names additional
+-- to package system above those names tested for in 9Xbasic.
+--
+-- This test checks that the semantics provided in Storage_Elements
+-- are present and operate marginally within expectations (to the best
+-- extent possible in a portable implementation independent fashion).
+--
+--
+-- CHANGE HISTORY:
+-- 09 MAY 95 SAIC Initial version
+-- 27 JAN 96 SAIC Revised for 2.1; Allow negative address delta
+--
+--!
+
+with Report;
+with Ada.Text_IO;
+with System.Storage_Elements;
+with System.Address_To_Access_Conversions;
+procedure CD70001 is
+ use System;
+
+ procedure CD70 is
+
+ type Int_Max is range Min_Int .. Max_Int;
+
+ My_Int : Int_Max := System.Max_Base_Digits + System.Word_Size;
+
+ An_Address : Address;
+ An_Other_Address : Address := An_Address'Address;
+
+ begin -- 7.0
+
+
+ if Default_Bit_Order not in High_Order_First..Low_Order_First then
+ Report.Failed ("Default_Bit_Order invalid");
+ end if;
+
+ if Bit_Order'Pos(High_Order_First) /= 0 then
+ Report.Failed ("Bit_Order'Pos(High_Order_First) /= 0");
+ end if;
+
+ if Bit_Order'Pos(Low_Order_First) /= 1 then
+ Report.Failed ("Bit_Order'Pos(Low_Order_First) /= 1");
+ end if;
+
+ An_Address := My_Int'Address;
+
+ if An_Address = Null_Address then
+ Report.Failed ("Null_Address matched a real address");
+ end if;
+
+
+ if An_Address'Address /= An_Other_Address then
+ Report.Failed("Value set at elaboration not equal to itself");
+ end if;
+
+ if An_Address'Address > An_Other_Address
+ and An_Address'Address < An_Other_Address then
+ Report.Failed("Address is both greater and less!");
+ end if;
+
+ if not (An_Address'Address >= An_Other_Address
+ and An_Address'Address <= An_Other_Address) then
+ Report.Failed("Address comparisons wrong");
+ end if;
+
+
+ if Priority'First /= Any_Priority'First then
+ Report.Failed ("Priority'First /= Any_Priority'First");
+ end if;
+
+ if Interrupt_Priority'First /= Priority'Last+1 then
+ Report.Failed ("Interrupt_Priority'First /= Priority'Last+1");
+ end if;
+
+ if Interrupt_Priority'Last /= Any_Priority'Last then
+ Report.Failed ("Interrupt_Priority'Last /= Any_Priority'Last");
+ end if;
+
+ if Default_Priority /= ((Priority'First + Priority'Last)/2) then
+ Report.Failed ("Default_Priority wrong value");
+ end if;
+
+ end CD70;
+
+ procedure CD71 is
+ use System.Storage_Elements;
+
+ Storehouse_1 : Storage_Array(0..127);
+ Storehouse_2 : Storage_Array(0..127);
+
+ House_Offset : Storage_Offset;
+
+ begin -- 7.1
+
+
+ if Storage_Count'First /= 0 then
+ Report.Failed ("Storage_Count'First /= 0");
+ end if;
+
+ if Storage_Count'Last /= Storage_Offset'Last then
+ Report.Failed ("Storage_Count'Last /= Storage_Offset'Last");
+ end if;
+
+
+ if Storage_Element'Size /= Storage_Unit then
+ Report.Failed ("Storage_Element'Size /= Storage_Unit");
+ end if;
+
+ if Storage_Array'Component_Size /= Storage_Unit then
+ Report.Failed ("Storage_Array'Element_Size /= Storage_Unit");
+ end if;
+
+ if Storage_Element'Last+1 /= 0 then
+ Report.Failed ("Storage_Element not modular");
+ end if;
+
+
+ -- "+", "-"( Address, Storage_Offset) and inverse
+
+ House_Offset := Storehouse_2'Address - Storehouse_1'Address;
+ -- Address - Address = Offset
+ -- Note that House_Offset may be a negative value
+
+ if House_Offset + Storehouse_1'Address /= Storehouse_2'Address then
+ -- Offset + Address = Address
+ Report.Failed ("Storage arithmetic non-linear O+A");
+ end if;
+
+ if Storehouse_1'Address + House_Offset /= Storehouse_2'Address then
+ -- Address + Offset = Address
+ Report.Failed ("Storage arithmetic non-linear A+O");
+ end if;
+
+ if Storehouse_2'Address - House_Offset /= Storehouse_1'Address then
+ -- Address - Offset = Address
+ Report.Failed ("Storage arithmetic non-linear A-O");
+ end if;
+
+ if (Storehouse_2'Address mod abs(House_Offset) > abs(House_Offset)) then
+ -- "mod"( Address, Storage_Offset)
+ Report.Failed("Mod arithmetic");
+ end if;
+
+
+ if Storehouse_1'Address
+ /= To_Address(To_Integer(Storehouse_1'Address)) then
+ Report.Failed("To_Address, To_Integer not symmetric");
+ end if;
+
+ end CD71;
+
+
+begin -- Main test procedure.
+
+ Report.Test ("CD70001", "Check package System" );
+
+ CD70;
+
+ CD71;
+
+ Report.Result;
+
+end CD70001;