summaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats/tests/cxb/cxb3001.a
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/ada/acats/tests/cxb/cxb3001.a
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/cxb/cxb3001.a')
-rw-r--r--gcc/testsuite/ada/acats/tests/cxb/cxb3001.a179
1 files changed, 179 insertions, 0 deletions
diff --git a/gcc/testsuite/ada/acats/tests/cxb/cxb3001.a b/gcc/testsuite/ada/acats/tests/cxb/cxb3001.a
new file mode 100644
index 000000000..4d79b24e1
--- /dev/null
+++ b/gcc/testsuite/ada/acats/tests/cxb/cxb3001.a
@@ -0,0 +1,179 @@
+-- CXB3001.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 the specifications of the package Interfaces.C are
+-- available for use.
+--
+-- TEST DESCRIPTION:
+-- This test verifies that the types and subprograms specified for the
+-- interface are present. It just checks for the presence of
+-- the subprograms. Other tests are designed to exercise the interface.
+--
+-- APPLICABILITY CRITERIA:
+-- If an implementation provides package Interfaces.C, this test
+-- must compile, execute, and report "PASSED".
+--
+--
+-- CHANGE HISTORY:
+-- 06 Dec 94 SAIC ACVC 2.0
+-- 15 Nov 95 SAIC Corrected To_C parameter list for ACVC 2.0.1.
+-- 28 Feb 96 SAIC Added applicability criteria.
+--
+--!
+
+with Report;
+with Interfaces.C; -- N/A => ERROR
+
+procedure CXB3001 is
+ package C renames Interfaces.C;
+ use type C.signed_char;
+ use type C.unsigned_char;
+ use type C.char;
+
+begin
+
+ Report.Test ("CXB3001", "Check the specification of Interfaces.C");
+
+ declare -- encapsulate the test
+
+
+ tst_CHAR_BIT : constant := C.CHAR_BIT;
+ tst_SCHAR_MIN : constant := C.SCHAR_MIN;
+ tst_SCHAR_MAX : constant := C.SCHAR_MAX;
+ tst_UCHAR_MAX : constant := C.UCHAR_MAX;
+
+ -- Signed and Unsigned Integers
+
+ tst_int : C.int := C.int'first;
+ tst_short : C.short := C.short'first;
+ tst_long : C.long := C.long'first;
+
+ tst_signed_char_min : C.signed_char := C.signed_char'first;
+ tst_signed_char_max : C.signed_char := C.signed_char'last;
+
+ tst_unsigned : C.unsigned;
+ tst_unsigned_short : C.unsigned_short;
+ tst_unsigned_long : C.unsigned_long;
+
+ tst_unsigned_char : C.unsigned_char;
+ tst_plain_char : C.plain_char;
+
+ tst_ptrdiff_t : C.ptrdiff_t;
+ tst_size_t : C.size_t;
+
+ -- Floating-Point
+
+ tst_C_float : C.C_float;
+ tst_double : C.double;
+ tst_long_double : C.long_double;
+
+ -- Characters and Strings
+
+ tst_char : C.char;
+ tst_nul : C.char := C.nul;
+
+ -- Collect all the subprogram calls such that they are compiled
+ -- but not executed
+ --
+ procedure Collect_All_Calls is
+
+ CAC_char : C.char;
+ CAC_Character : Character;
+ CAC_String : string (1..5);
+ CAC_Boolean : Boolean := false;
+ CAC_char_array : C.char_array(1..5);
+ CAC_Integer : integer;
+ CAC_Natural : natural;
+ CAC_wchar_t : C.wchar_t;
+ CAC_Wide_Character : Wide_Character;
+ CAC_wchar_array : C.wchar_array(1..5);
+ CAC_Wide_String : Wide_String(1..5);
+ CAC_size_t : C.size_t;
+
+ begin
+
+ CAC_char := C.To_C (CAC_Character);
+ CAC_Character := C.To_Ada (CAC_char);
+
+ CAC_char_array := C.To_C (CAC_String, CAC_Boolean);
+ CAC_String := C.To_Ada (CAC_char_array, CAC_Boolean);
+
+ -- This call is out of LRM order so that we can use the
+ -- array initialized above
+ CAC_Boolean := C.Is_Nul_Terminated (CAC_char_array);
+
+ C.To_C (CAC_String, CAC_char_array, CAC_size_t, CAC_Boolean);
+ C.To_Ada (CAC_char_array, CAC_String, CAC_Natural, CAC_Boolean);
+
+ CAC_wchar_t := C.To_C (CAC_Wide_Character);
+ CAC_Wide_Character := C.To_Ada (CAC_wchar_t);
+ CAC_wchar_t := C.wide_nul;
+
+ CAC_wchar_array := C.To_C (CAC_Wide_String, CAC_Boolean);
+ CAC_Wide_String := C.To_Ada (CAC_wchar_array, CAC_Boolean);
+
+ -- This call is out of LRM order so that we can use the
+ -- array initialized above
+ CAC_Boolean := C.Is_Nul_Terminated (CAC_wchar_array);
+
+ C.To_C (CAC_Wide_String, CAC_wchar_array, CAC_size_t, CAC_Boolean);
+ C.To_Ada (CAC_wchar_array, CAC_Wide_String, CAC_Natural, CAC_Boolean);
+
+ raise C.Terminator_Error;
+
+ end Collect_All_Calls;
+
+
+
+ begin -- encapsulation
+
+ if tst_signed_char_min /= C.SCHAR_MIN then
+ Report.Failed ("tst_signed_char_min is incorrect");
+ end if;
+ if tst_signed_char_max /= C.SCHAR_MAX then
+ Report.Failed ("tst_signed_char_max is incorrect");
+ end if;
+ if C.signed_char'Size /= C.CHAR_BIT then
+ Report.Failed ("C.signed_char'Size is incorrect");
+ end if;
+
+ if C.unsigned_char'first /= 0 or
+ C.unsigned_char'last /= C.UCHAR_MAX or
+ C.unsigned_char'size /= C.CHAR_BIT then
+
+ Report.Failed ("unsigned_char is incorrectly defined");
+
+ end if;
+
+ if tst_nul /= C.char'first then
+ Report.Failed ("tst_nul is incorrect");
+ end if;
+
+ end; -- encapsulation
+
+ Report.Result;
+
+end CXB3001;