summaryrefslogtreecommitdiffstats
path: root/testsuites/ada/support/test_support.adb
diff options
context:
space:
mode:
Diffstat (limited to 'testsuites/ada/support/test_support.adb')
-rw-r--r--testsuites/ada/support/test_support.adb266
1 files changed, 266 insertions, 0 deletions
diff --git a/testsuites/ada/support/test_support.adb b/testsuites/ada/support/test_support.adb
new file mode 100644
index 0000000000..bc636cee11
--- /dev/null
+++ b/testsuites/ada/support/test_support.adb
@@ -0,0 +1,266 @@
+--
+-- Test_Support / Specification
+--
+-- DESCRIPTION:
+--
+-- This package provides routines which aid the Test Suites
+-- and simplify their design and operation.
+--
+-- DEPENDENCIES:
+--
+--
+--
+-- COPYRIGHT (c) 1989-2011.
+-- On-Line Applications Research Corporation (OAR).
+--
+-- The license and distribution terms for this file may in
+-- the file LICENSE in this distribution or at
+-- http://www.rtems.org/license/LICENSE.
+--
+
+with Interfaces; use Interfaces;
+with Unsigned32_IO;
+with Status_IO;
+with Text_IO;
+with RTEMS.Fatal;
+
+package body Test_Support is
+
+--
+-- Fatal_Directive_Status
+--
+
+ procedure Fatal_Directive_Status (
+ Status : in RTEMS.Status_Codes;
+ Desired : in RTEMS.Status_Codes;
+ Message : in String
+ ) is
+ begin
+
+ if not RTEMS.Are_Statuses_Equal( Status, Desired ) then
+
+ Text_IO.Put( Message );
+ Text_IO.Put( " FAILED -- expected " );
+ Status_IO.Put( Desired );
+ Text_IO.Put( " got " );
+ Status_IO.Put( Status );
+ Text_IO.New_Line;
+
+ RTEMS.Fatal.Error_Occurred( RTEMS.Status_Codes'Pos( Status ) );
+
+ end if;
+
+ end Fatal_Directive_Status;
+
+--
+-- Directive_Failed
+--
+
+ procedure Directive_Failed (
+ Status : in RTEMS.Status_Codes;
+ Message : in String
+ ) is
+ begin
+
+ Test_Support.Fatal_Directive_Status(
+ Status,
+ RTEMS.Successful,
+ Message
+ );
+
+ end Directive_Failed;
+
+--
+-- Print_Time
+--
+
+ procedure Print_Time (
+ Prefix : in String;
+ Time_Buffer : in RTEMS.Time_Of_Day;
+ Suffix : in String
+ ) is
+ begin
+
+ Text_IO.Put( Prefix );
+ Unsigned32_IO.Put( Time_Buffer.Hour, Width=>2 );
+ Text_IO.Put( ":" );
+ Unsigned32_IO.Put( Time_Buffer.Minute, Width=>2 );
+ Text_IO.Put( ":" );
+ Unsigned32_IO.Put( Time_Buffer.Second, Width=>2 );
+ Text_IO.Put( " " );
+ Unsigned32_IO.Put( Time_Buffer.Month, Width=>2 );
+ Text_IO.Put( "/" );
+ Unsigned32_IO.Put( Time_Buffer.Day, Width=>2 );
+ Text_IO.Put( "/" );
+ Unsigned32_IO.Put( Time_Buffer.Year, Width=>2 );
+ Text_IO.Put( Suffix );
+
+ end Print_Time;
+
+--
+-- Put_Dot
+--
+
+ procedure Put_Dot (
+ Buffer : in String
+ ) is
+ begin
+ Text_IO.Put( Buffer );
+ Text_IO.FLUSH;
+ end Put_Dot;
+
+--
+-- Pause
+--
+
+ procedure Pause is
+ -- Ignored_String : String( 1 .. 80 );
+ -- Ignored_Last : Natural;
+
+ begin
+
+ --
+ -- Really should be a "put" followed by a "flush."
+ --
+ Text_IO.Put_Line( "<pause> " );
+ -- Text_IO.Get_Line( Ignored_String, Ignored_Last );
+
+ end Pause;
+
+--
+-- Pause_And_Screen_Number
+--
+
+ procedure Pause_And_Screen_Number (
+ SCREEN : in RTEMS.Unsigned32
+ ) is
+ -- Ignored_String : String( 1 .. 80 );
+ -- Ignored_Last : Natural;
+ begin
+
+ --
+ -- Really should be a "put" followed by a "flush."
+ --
+ Text_IO.Put( "<pause - screen " );
+ Unsigned32_IO.Put( SCREEN, Width=>2 );
+ Text_IO.Put_Line( "> " );
+ -- Text_IO.Get_Line( Ignored_String, Ignored_Last );
+
+ end Pause_And_Screen_Number;
+
+--
+-- Put_Name
+--
+
+ procedure Put_Name (
+ Name : in RTEMS.Name;
+ New_Line : in Boolean
+ ) is
+ C1 : Character;
+ C2 : Character;
+ C3 : Character;
+ C4 : Character;
+ begin
+
+ RTEMS.Name_To_Characters( Name, C1, C2, C3, C4 );
+
+ Text_IO.Put( C1 );
+ Text_IO.Put( C2 );
+ Text_IO.Put( C3 );
+ Text_IO.Put( C4 );
+
+ if New_Line then
+ Text_IO.New_Line;
+ end if;
+
+ end Put_Name;
+
+--
+-- Task_Number
+--
+
+ function Task_Number (
+ TID : in RTEMS.ID
+ ) return RTEMS.Unsigned32 is
+ begin
+
+ -- probably OK
+ return RTEMS.Get_Index( TID ) - 1;
+
+ end Task_Number;
+
+--
+-- Do_Nothing
+--
+
+ procedure Do_Nothing is
+ begin
+ NULL;
+ end Do_Nothing;
+
+
+--
+-- Milliseconds_Per_Tick
+--
+
+ function Milliseconds_Per_Tick
+ return RTEMS.Unsigned32 is
+ function Milliseconds_Per_Tick_Base return RTEMS.Unsigned32;
+ pragma Import (C, Milliseconds_Per_Tick_Base, "milliseconds_per_tick");
+ begin
+ return Milliseconds_Per_Tick_Base;
+ end Milliseconds_Per_Tick;
+
+--
+-- Milliseconds_Per_Tick
+--
+ function Ticks_Per_Second
+ return RTEMS.Interval is
+ function Ticks_Per_Second_Base return RTEMS.Unsigned32;
+ pragma Import (C, Ticks_Per_Second_Base, "ticks_per_second");
+ begin
+ return Ticks_Per_Second_Base;
+ end Ticks_Per_Second;
+
+--
+-- Return the size of the RTEMS Workspace
+--
+
+ function Work_Space_Size
+ return RTEMS.Unsigned32 is
+ function Work_Space_Size_Base return RTEMS.Unsigned32;
+ pragma Import (C, Work_Space_Size_Base, "work_space_size");
+ begin
+ return Work_Space_Size_Base;
+ end Work_Space_Size;
+
+--
+-- Return an indication of whether multiprocessing is configured
+--
+
+ function Is_Configured_Multiprocessing
+ return Boolean is
+ function Is_Configured_Multiprocessing_Base return RTEMS.Unsigned32;
+ pragma Import (
+ C, Is_Configured_Multiprocessing_Base, "is_configured_multiprocessing"
+ );
+ begin
+ if Is_Configured_Multiprocessing_Base = 1 then
+ return True;
+ else
+ return False;
+ end if;
+ end Is_Configured_Multiprocessing;
+
+--
+-- Node is the node number in a multiprocessor configuration
+--
+
+ function Node
+ return RTEMS.Unsigned32 is
+ function Get_Node_Base return RTEMS.Unsigned32;
+ pragma Import (C, Get_Node_Base, "get_node");
+ begin
+ return Get_Node_Base;
+ end Node;
+end Test_Support;