ACAA Header
 

Submitted Tests by Language Version and Name

Tests indexed on this page have been submitted by Ada implementers and users for possible inclusion in future versions of the Ada Conformity Assessment Test Suite (ACATS). These tests are provided as a service to the Ada community.
These tests are also indexed by clause number, AI number, and can be downloaded in ZIP files.

Tests for Ada 95

  • B28002A.A
    Check that Pragma_Argument_Associations without a Pragma_Argument_Identifier shall precede any associations with a Pragma_Argument_Identifier.
  • B391001.A
    Check that:
    • A discriminant on a tagged type is not allowed to have a default
    • Private record extension is not allowed to be declared immediately within a subprogram declarative region
    • Record extension of a nonlimited type does not allow limited components
    • A record extension may not be declared in a nested package where it is not accessible from the declaration of its parent type
    • Record extension does not allow repeating identifiers used in the parent declaration.
  • B4600JC.A
    Check that a type conversion of a specific tagged object is rejected if it is not descended from the target type.
  • B7200010.A
    Part of test B7200016.A
  • B7200011.A
    Part of test B7200016.A
  • B7200012.A
    Part of test B7200016.A
  • B7200013.A
    Part of test B7200016.A
  • B7200014.A
    Part of test B7200016.A
  • B7200015.A
    Part of test B7200016.A
  • B7200016.A
    Check that if a library package declaration or library generic package declaration does not require a body, that a body is not allowed. Check that pragma Elaborate_Body can be used to require a body even if not otherwise required. (Add case of generic children.)
  • B74001A.ADA
    For non-generic packages and subprograms:
    • Check that a (limited or non-limited) private type definition cannot appear in the private part of a package spec, in a package body, a subprogram, a block, or a task body.
    • Check that the full definition of a private type cannot appear in the visible part, and cannot be omitted from the package specification (even if it is provided in the package body). [Added access discriminant case.]
    • Check that the full declaration of a private type cannot appear in the private part of a nested or enclosing package spec.
  • B83011A.ADA
    Check that within the declaration of an object, number, type, subtype, formal parameter of a subprogram or entry, or generic formal parameter, the declared entity is not visible, either directly or by selection. Include checks of renaming declaration for objects, exceptions, and packages. (Added test cases.)
  • B84007A.ADA
    Check that the names made visible by a use clause are not made visible until after the end of the use clause. (Added cases for "=".)
  • B84007B.ADA
    Check that logical operators for modular types declared in a package are not made visible until after the end of a use clause for the package.
  • B854002.A
    Check renaming of attribute function for extraneous parameters.
  • B87B26A.ADA
    Check that the meaning of the prefix of an attribute must be determinable independently of the attribute designator and independently of the fact that it is the prefix of an attribute. In particular, check that the following legality constraints are not used for overloading resolution:
    • For 'Size, 'First_Bit, 'Last_Bit, and 'Position, the requirement that the prefix denote an object rather than a value is not used for overloading resolution. The attribute 'Size is not being tested yet.
    • For 'Callable and 'Terminated, the requirement that the prefix be appropriate for a task type is not used for overloading resolution.
    • For 'First, 'First(N), 'Last, 'Last(N), 'Lenght, 'Length(N), 'Range, and 'Range(N), the requirement that the prefix be appropriate for an array type is not used for overloading resolution.
    • Even though the prefix of the attribute 'Count must denote an entry of a task, this information is not used to resolve any overloaded constituents of the prefix. (Added test case.)
  • BA1101G.ADA
    Check that a Use_Clause cannot mention a name made visible by a preceding Use_Clause in the same context specification (including a child unit).
  • BC1012A.ADA
    Check that the name of a generic package (i.e. the template) cannot be used in use_clauses, nor as the package name in selected components outside of the generic package (i.e. the name of an instantiation should be used). (Added formal package cases.)
  • BC3009C.ADA
    Check that a generic unit may not require an instantiation of itself. (Added formal package case.)
  • BC70006.A
    Check that if a formal package actual part is not (<>), the generic formal part of the template is not part of the visible part of the formal package. Check for the case where the formal package is declared in a library-level generic subprogram. (Added overloaded case.)
  • BXA3001.A
    Check that Ada.Characters.Latin_1 has no alphanumeric characters.
  • C4600JC.A
    Check that a check is performed when converting a variable of a class-wide type to a descendant specific type.
  • C730005.A
    Check that a subtype of a private type is allowed, where the full type has a discriminant.
  • C82001A.A
    Check that a generic subprogram's identifier can be used in its instantiation.
  • C854001.A
    Check that a subprogram declaration can be completed by a subprogram renaming declaration. In particular, check that such a renaming-as-body can be given in a package body to complete a subprogram declared in the package specification. Check that calls to the subprogram invoke the body of the renamed subprogram. Check that a renaming allows a copy of an inherited or predefined subprogram before overriding it later. Check that renaming a dispatching operation calls the correct body in case of overriding. (Added test case with default parameters.)
  • CC3015A.ADA
    Check that when a generic package instantiation is elaborated, statements in its package body are executed and expressions requiring evaluation are evaluated (e.g., defaults for object declarations are evaluated).
  • CC70001.A
    Check that the template for a generic formal package may be a child package, and that a child instance which is an instance of the template may be passed as an actual to the formal package. Check that the visible part of the generic formal package includes the first list of basic declarative items of the package specification. (Added grandchild case.)
  • CXA5B08.A
    Check that the function Arccot returns results in the correct quadrant and of the correct sign for results close to zero.
  • CY10000X.A
    In this test we have a private child package and we check all the basic usages of the with-clause available in Ada 95.

Tests for Corrigendum 1

  • B35A02A.ADA
    Check that 'Small cannot be specified for derived fixed point types and for decimal fixed point types.
  • B37008A.ADA
    Check that unknown_discriminant_parts are not allowed on generic formal types that are either array types or elementary types.
  • B73106A.ADA
    Check that operations of a type are not declared in an inner declarative region.
  • BA1507A.ADA
    Check that a library unit pragma applied to a generic does not apply to its instances.
  • BA1507B.DEP
    Check that a library unit pragma applied to a generic does not apply to its instances.
  • BDD109A.DEP
    Check that the implementation permission for components of Stream_Element_Array is used if its condition is met.
  • BDE0009.A
    Check the following:
    • An object name causes freezing where it occurs, unless the name is part of a default_expression, a default_name, or a per-object expression of a component's constraint, in which case, the freezing occurs later as part of another construct.
    • An implicit_dereference freezes entities according to the same rule that applies to a name that is an explicit_dereference.
    • An implicit call, such as an implicit call to Initialize, freezes the called subprogram. This is true even if the implicit call is removed via the implementation permissions in 7.6(18-21).
    • If a name or expression is implicitly converted to a type or subtype, then that type or subtype is frozen at the same place where the name or expression causes freezing.
  • BXA1007.ADA
    Check that the predefined boolean operators have the parameter type Boolean'Base.
  • BXB1009.ADA
    Check that out-of-order arguments are not allowed in pragmas Import, Export and Convention.
  • BXB3060.ADA
    Check that convention C_Pass_By_Copy cannot be applied to subprograms or objects, and that it cannot be applied to elementary types, array types, or record types with discriminants.
  • C35802A.DEP
    Check that if Short_Float'Machine_Radix is a power of 10, Short_Float'Digits is equal to Short_Float'Model_Mantissa.
  • C35802B.ADA
    Check that if Float'Machine_Radix is a power of 10, Float'Digits is equal to Float'Model_Mantissa.
  • C35802C.DEP
    Check that if Long_Float'Machine_Radix is a power of 10, Long_Float'Digits is equal to Long_Float'Model_Mantissa.
  • C36022A.ADA
    Check that per-object expressions are evaluated as specified for task and protected entry families.
  • C36022B.ADA
    Check that per-object expressions are evaluated as specified for protected components.
  • C38018A.ADA
    Check that checks are made properly when a per-object expression contains an attribute whose prefix denotes the current instance of the type.
  • C38018B.ADA
    Check that an expression in a per-object discriminant constraint which is part of a named association is evaluated once for each association.
  • C45232A.ADA
    Check that "=" for all language-defined nonlimited types behaves as if it is predefined for composition and generic formal type purposes.
  • C76114A.ADA
    Check that it is not a bounded error for an explicit call to Adjust or Finalize to propagate an exception.
  • C85408A.ADA
    Check that a legal circular renaming-as-body is a bounded error and raises Program_Error or Storage_Error or goes infinitely recursive.
  • C96026A.ADA
    Check that Month, Day and Seconds raise Time_Error when Year_Number is out of range.
  • CA1507A.ADA
    Check that a library unit pragma applied to a generic does not apply to its instances.
  • CA1507B.DEP
    Check that a library unit pragma applied to a generic does not apply to its instances.
  • CDE003A.ADA
    Check that renaming-as-bodies do not freeze.
  • CXA5109A.DEP
    Check that Ada.Numerics.Short_Elementary_Functions is declared pure.
  • CXA5109B.A
    Check that Ada.Numerics.Elementary_Functions is declared pure.
  • CXA5109C.DEP
    Check that Ada.Numerics.Long_Elementary_Functions is declared pure.
  • CXB3020.ADA
    Check that Interfaces.C.Char and Interfaces.C.Wchar_T are discrete types.
  • CXG1125A.DEP
    Check that Ada.Numerics.Short_Complex_Types and Ada.Numerics.Short_Complex_Elementary_Functions are declared pure.
  • CXG1125B.A
    Check that Ada.Numerics.Complex_Types and Ada.Numerics.Complex_Elementary_Functions are declared pure.
  • CXG1125C.DEP
    Check that Ada.Numerics.Long_Complex_Types and Ada.Numerics.Long_Complex_Elementary_Functions are declared pure.
  • LXD7003.ADA
    Check that the rules for checking restrictions are followed for No_Task_Hierarchy.
  • LXD7004.ADA
    Check that the rules for checking restrictions are followed for No_Nested_Finalization.
  • LXH4008.ADA
    Check that the rules for checking restrictions are followed. Also check that the No_Local_Allocators restriction allows instantiations of generic packages, but that nested instantiations of such packages containing allocators are detected.

Tests for Amendment 1

  • B313001.A
    Check that a null_procedure_declaration may not be declared at library level.
  • B394001.A
    Check that if a private extension is derived only from interface types, the full view may also be derived from an additional non-interface type. Check that the rules in 7.3 regarding private extensions and interface ancestors are still satisfied when the full view has a non-interface parent. (AI-396 plus AI-401).
  • B3A10010.A
    Part of test B3A1001C.AM.
  • B3A10011.A
    Part of test B3A1001C.AM.
  • B3A10012.A
    Part of test B3A1001C.AM.
  • B3A10013.A
    Part of test B3A1001C.AM.
  • B3A10014.A
    Part of test B3A1001C.AM.
  • B3A10015.A
    Part of test B3A1001C.AM.
  • B3A10016.A
    Part of test B3A1001C.AM.
  • B3A10017.A
    Part of test B3A1001C.AM.
  • B3A10018.A
    Part of test B3A1001C.AM.
  • B3A10019.A
    Part of test B3A1001C.AM.
  • B3A1001A.A
    Part of test B3A1001C.AM.
  • B3A1001B.A
    Part of test B3A1001C.AM.
  • B3A1001C.AM
    Check that incomplete types (including those exported by a limited view) behave as expected. The various children of this package correspond to the ARG meetings where various examples have been discussed. Some of the examples have been corrected to reflect the final wording of the RM.
  • B3A1002.A
    Check that an incomplete type exported by a limited view does not becomes complete too early.
  • B3A1801.ADA
    Check the legal and illegal uses of tagged incomplete types.
  • B832603.A
    Check the legality of overriding indicators for proper bodies, stubs and renaming-as-bodies. Use type derivation, either directly or through a private type, in which case the specification and body may know different things about overriding.
  • B832604.A
    Check the legality of overriding indicators in cases involving predefined operators and enumeration literals.
  • B832607.A
    Check the legality of overriding indicators in a case where a subprogram is primitive for more than one type.
  • BA146010.A
    An implementation may require that a unit be legal before it can be mentioned in a limited_with_clause.
  • BA146011.A
    Part of test BA146010.A.
  • BA146012.A
    Part of test BA146010.A.
  • BA146013.A
    Part of test BA146010.A.
  • BA146014.A
    Part of test BA146010.A.
  • BY100001.A
    Check limited with clauses. Check that the limited_with clause can not be used neither with with generics nor instances.
  • BY100003.A
    Check limited with clauses. Check that the limited view is not allowed in a child unit if the full view is visible in the parent. Based in an example described by the ARG in AI-217-6.
  • BY100008.A
    Check limited with clauses plus renamings.
  • BY30001.A
    Check generalized use of anonymous access to constants (AI-230 plus AI-231). (Many renames cases; and some accessibility checks.)
  • BY30004.A
    Check AI-254 (Anonymous access to subprograms). [Profile errors in 'Access.]
  • BY30005.A
    Check abstract interfaces.
  • BY30006.A
    Check task interfaces.
  • BY30007.A
    Check protected interfaces.
  • BY30008.A
    Check synchronized interfaces.
  • BY30009.A
    Check limited interfaces.
  • BY30010.A
    Check task interfaces with private extensions.
  • BY30011.A
    Check protected interfaces with private extensions.
  • BY30012.A
    Check synchronized interfaces with private extensions.
  • BY30013.A
    Check interfaces with generics.
  • BY30014.A
    Check interfaces with generics.
  • BY30015.A
    If an inherited subprogram is implemented by a protected procedure or an entry, then the first parameter of the inherited subprogram shall be of mode out or in out, or an access-to-variable parameter. Therefore none of the protected types declared in this program cover the primitives of the interface.
  • BY30016.A
    Check that the primitives of a protected interface cannot be covered simultaneously by
    protected subprograms and
    subprograms declared outside the protected type.
  • BY30017.A
    Check that the private data of the protected type is not visible in the subprograms covering a protected interface that are declared outside of the protected type.
  • BY30018.A
    If an inherited subprogram is implemented by a protected procedure or an entry, then the first parameter of the inherited subprogram shall be of mode out or in out, or an access-to-variable parameter. Therefore none of the protected types declared in this program cover the primitives of the interface.
  • BY30019.A
    Check that the primitives of a protected interface cannot be covered simultaneously by
    protected subprograms and
    subprograms declared outside the protected type.
  • BY30020.A
    Check parsing of entry declarations with overriding indicator in the context of task types.
  • BY30021.A
    Recognition of incorrect overriding / not overriding entries or subprograms in the context of protected types. Recognition of incorrect overriding / not overriding entries in the context of task types.
  • BY30024.A
    Recognition of incorrect overriding / not overriding entries or subprograms in the context of protected types. Recognition of incorrect overriding / not overriding entries in the context of task types. Specialized cases for null procedures.
  • BY30028.A
    Check the no hidden interfaces rule.
  • BY30029.A
    Check limited in derived and private types.
  • BY30030.A
    Check static matching rules for anonymous access-to-object types.
  • BY30031.A
    Check limited in derived and private types when the parent type is generic.
  • BY40001.A
    Check AI-287 for record aggregates. This test checks that the box can not be used in positional aggregates.
  • BY40002.A
    Check AI-287. This test checks that:
    • The box can be used when no default initialization is available
    • Default initialized components have default initialization value
    • If the discrete choice others is used for the default initialization of components, it must cover at least one component.
  • CY100001.A
    Check limited with clauses. Basic tests.
  • CY100002.A
    Check limited with clauses. Check the use of the limited view in local packages.
  • CY100003.A
    Check limited with clauses. Check the use of the limited view in a hierarchical library.
  • CY100005.A
    Check private with clause. In this test we have a private child package and we check all the basic usages of the private-with clause.
  • CY100006.A
    Check limited private with clauses. This test is based on the example proposed by the ARG and discussed in AI-217-06.
  • CY100007.A
    Check limited with clauses. This test is based on the example proposed by the ARG and discussed in AI-217-06, but implemented with a hierarchical library.
  • CY30001.A
    Check AI-230 (Generalized use of anonymous access types).
  • CY30002.A
    Check AI-230 (Generalized use of anonymous access types). Check renaming declarations plus the new predefined equality operator for access types. It is based on the example described in AI-230.
  • CY30009.A
    This test checks abstract interfaces in which the mode of the controlling argument of all the primitives is in out.
  • CY30010.A
    This test checks abstract interfaces in which the mode of the controlling argument of all the primitives is out.
  • CY30011.A
    This test checks abstract interfaces in which the mode of the controlling argument of all the primitives is access.
  • CY30012.A
    Check the equality operator applied to class-wide interfaces and the membership test applied to interfaces.
  • CY30014.A
    Check private types and interfaces.
  • CY30015.A
    This test checks a type implementing two interfaces that have exactly the same primitives.
  • CY30016.A
    Check interfaces with discriminants.
  • CY30017.A
    This test checks task interfaces in which the mode of the controlling argument of all the primitives is in out.
  • CY30018.A
    This test checks protected interfaces in which the mode of the controlling argument of all the primitives is in out.
  • CY30019.A
    This test checks synchronized interfaces in which the mode of the controlling argument of all the primitives is in out.
  • CY30020.A
    Test limited interfaces used as the progenitor of task types.
  • CY30021.A
    Similar to test CY30020 but the two tasks implementing the interface are in the same package. This is done to check that there is no conflict with the names of the dispatching subprograms corresponding to the entries of the two tasks.
  • CY30022.A
    Test limited interfaces used as the progenitor of protected types.
  • CY30023.A
    Similar to test CY30022 but the two tasks implementing the interface are in the same package. This is done to check that there is no conflict with the names of the dispatching subprograms corresponding to the entries of the two tasks.
  • CY30024.A
    Similar to test CY30022 but using access types.
  • CY30025.A
    Similar to previous tests but using access types.
  • CY30026.A
    Test based on the example in AI-345.
  • CY30027.A
    Test task interfaces with private extensions.
  • CY30028.A
    Test protected interfaces with private extensions.
  • CY30029.A
    Test synchronized interfaces with private extensions.
  • CY30030.A
    Check interfaces with generics.
  • CY30031.A
    Check task interfaces with generics.
  • CY30032.A
    Protected interfaces and parameter modes.
  • CY30033.A
    Check protected types: interface primitives overridden by means of
    protected entries and
    normal subprograms.
  • CY30034.A
    This test checks the usage of subprograms to cover interface primitives.
  • CY30035.A
    Check protected interfaces overriding function primitives.
  • CY30036.A
    Check task interfaces.
  • CY30037.A
    Check the usage of subprograms to cover task interface primitives.
  • CY30038.A
    Check controlled private types and interfaces.
  • CY30039.A
    Check controlled private types and interfaces.
  • CY30040.A
    Check null-excluding access subtypes.
  • CY30041.A
    Check dispatching calls through interfaces.
  • CY30042.A
    Check Size of classwide types.
  • CY30043.A
    Check dispatching in interfaces operations "implemented by" task entries and protected operations.
  • CY30044.A
    Check that a limited interface can be used as a progenitor of a non-limited type.
  • CY30045.A
    Check limited in derived and private types, with the ancestors being formal types.
  • CY30046.A
    Check the no hidden interfaces rule.
  • CY30047.A
    Recognition of correct overriding / not overriding entries or subprograms in the context of protected types. Recognition of incorrect overriding / not overriding entries in the context of task types.
  • CY30048.A
    Recognition of correct overriding / not overriding entries or subprograms in the context of protected types. Recognition of incorrect overriding / not overriding entries in the context of task types.
  • CY40001.A
    Check AI-287 for array aggregates. This test checks that the box can be used for the default initialization of non-limited unidimensional arrays (including allocated arrays).
  • CY40002.A
    Check AI-287 for array aggregates. This test checks that the box can be used for the default initialization of non-limited bidimensional arrays (including allocated arrays).
  • CY40003.A
    Check AI-287 for record aggregates. This test checks that the box can be used for the default initialization of non-limited records (including allocated records).
  • CY40007.A
    Check AI-287 for record aggregates. Check allocators.
  • CY40008.A
    Check AI-287 for record aggregates. This test checks discriminants in records with limited components.
  • CY40009.A
    Check AI-287 for record aggregates. Checks default initialization of deferred constants.
  • CY40010.A
    Check AI-287 for record aggregates. Checks default initialization of deferred constants in library packages.
  • CY40011.A
    Check AI-287 for record aggregates. This test checks limited aggregates used in the instantiation of generic packages.
  • CY40012.A
    This test checks basic combinations of the object.operation notation plus its usage combined with record components.
  • CY40014.A
    Check implicit dereference. Test based on the example described in AI-00252.txt.
  • CY80001.A
    Check entries renamed as procedures used in select statements.
  • CY90001.A
    Check dispatching interface procedures used in select statements.
  • CY90003.A
    Check dispatching interface procedures used in select statements.

Tests for Ada 2012

  • BXC30TV.A
    Check that if either the Attach_Handler or Interrupt_Handler aspect is specified for a protected procedure, the corresponding protected declaration must be at library-level.
  • C3900TK.A
    Check that an instance of Generic_Dispatching_Constructor raises Tag_Error if called with the tag of a type declared in a different, unrelated task than the instance.
  • C3A10RB.A
    Check that a tagged incomplete type whose completion is deferred to a package body can have non-primitive operations and that those operations can be called from a child unit, even though the child unit does not have visibility on the completion of the type.
  • C4160RB.A
    When both Constant_Indexing and Variable_Indexing are specified, check that the variable indexing function is called in variable contexts if the prefix is a variable, and that the constant indexing function is called in all other cases (including variable indexing contexts when the prefix is a constant).
  • C4800RB.A
    If the designated type of an initialized allocator is class-wide, check that Program_Error is raised if the master of the type of the tag of the qualified expression of the allocator does not include the elaboration of the type of the allocator. Case 2: Incomparable accessibility.
  • C7320JC.A
    Check that Assertion_Error is raised when the policy requires checks and there is an object for which the invariant check fails, but not when the invariant check passes - unconstrained array version.
  • C7320JC_A.A
    Part of test C7320JC.
  • C732AJC.A
    Check that an assertion error is raised when the policy requires checks and there is a parameter with a part of a type with an invariant that does not hold true, but not when the invariant does hold true, constrained array version.
  • C732AJC_A.A
    Part of test C732AJC.
  • C732AJC_B.A
    Part of test C732AJC.
  • C732BJC.A
    Check that an assertion error is raised when the policy requires checks and there is a parameter with a part of a type with an invariant that does not hold true, but not when the invariant does hold true, discriminant record version.
  • C732BJC_A.A
    Part of test C732BJC.
  • C732BJC_B.A
    Part of test C732BJC.
  • C732BJC_C.A
    Part of test C732BJC.