Testing Tagged Records

Component Testing for Ada

Component Testing for Ada supports tagged record types. As with other classic records, you can omit a field in the initialization or evaluation part. You can also define tagged types with a discriminant part. In such cases, the only limitation is that of the discriminant.

Example

The following example illustrates tagged records. First, the source code:

Package Items Is

 Type Item Is Tagged Record

 X_Coord : Float;

 Y_Coord : Float;

 End Record;

Procedure foo_test;

End Items;

With Items; Use Items;

Package Forms Is

 Type Point Is New Item With Null Record;

 Type Circle Is New Item With Record

 Radius : Float;

 End Record;

 Type Triangle Is New Item With Record

 A,B,C : Float;

 End Record;

 Type Cylinder Is New Circle With Record

 Height : Float;

 End Record;

End Forms;

 

Following is the associated test script:

HEADER Items, ,

#With Items; Use Items;

#With Forms; Use Forms;

BEGIN Items

#I : Item := (1.0,0.5);

#C : Circle := (0.0,1.0,13.5);

#T : Triangle;

#P : Point;

#Cyl : Cylinder;

SERVICE Compute_Items

 SERVICE_TYPE extern

 TEST 1

  FAMILY Nominal

  ELEMENT

   Var T, Init = (0.0,1.5,4.5,5.0,6.5), Ev = (I with A=>4.0, B=>5.0, C=>6.0)

   Var P, Init = I, Ev = (Y_coord => 1.0, X_coord => 0.0)

   Var I, Init = (0.0,1.0), Ev = Item(C)

   Var P, Init = (I with NULL record), Ev = (Y_coord => 1.0, X_coord => 0.0)

  End Element

 END TEST -- Test 1

 TEST 2

  FAMILY Nominal

  ELEMENT

   Var I, Init = (2.0,3.0), Ev ==

   Var T, Init = (2.0,3.0,4.0,5.0,6.0), Ev = (I with A=>4.0, B=>5.0, C=>6.0)

   Var Cyl, Init = (2.0, 3.0, 4.0, 5.0), Ev ==

   Var I, Init ==, Ev = Item(Cyl)

  END ELEMENT

 END TEST -- Test 2

END SERVICE -- Compute_Items

 

Related Topics

Testing RecordsTesting a Record with Ada ExpressionsTesting a Record with Another RecordTesting Records with DiscriminantsNo Test