At our recent meeting, the ARG decided that it would review and provide recommendations on proposed test objectives for the ACATS (as no other organized group has the expertise to do so). We adopted the following procedure for this review: -- The editor makes the objectives available both on the web site and via E-mail to ARG@ACM.ORG. -- A four (4) week (E-mail) discussion period follows. All discussion is welcome during this period, including corrections/improvements to objectives, testability of objectives, and the desirability of testing objectives. (For this batch, the discussion period starts now and will end January 24th.) -- This is followed by a letter ballot, where each objective is voted "Approve" (test it); "Disapprove" (don't test it); or "Abstain". -- For an objective to be tested, 2/3rds of the ARG must approve it; for this purpose, abstentions are counted as half "Approve" and half "Disapprove". -- The editor will assign approved test objectives to ARG members, giving higher priority to those with larger approval majorities (but taking other factors into account as well). This document includes test objectives for Defect Reports 1 & 2, and for the AIs approved since the completion of the Technical Corrigendum. It includes all test objectives that I believe are testable and have not been tested. This includes those that I believe are not worth testing (that is for the full ARG to determine), but does not include those that are I believe are untestable, nor does it include those objectives already tested by the ACATS. I will send those objectives in a separate document; if anyone believes that any of those objectives are testable and should be tested, please bring it up during the discussion period. I've included test objectives for the six AIs approved since the completion of the Technical Corrigendum. Tests for these would not be added to the ACATS until after the AIs are approved by WG9, and (for Binding Interpretations), would effectively be optional. The test objectives in this document are organized by paragraph number. I've included a four part score giving my opinion on the important factors for each objective. (I don't give an overall score, as previous discussion has made it clear that different reviewers give the factors different weights.) The score is reported in the form: U-E-I-T. U - Likelyhood that a user would encounter problems because the issue: 5 - Very likely; 4 - Likely; 3 - Possibly; 2 - Unlikely; 1 - Very rarely; 0 - Never. E - Likelyhood that an implementation would implement the issue in a way other than that of the recommendation: 5 - Very likely; 4 - Likely; 3 - Possibly; 2 - Unlikely; 1 - Very rarely; 0 - Never. I - Difficulty of correcting an implementation to implement the issue correctly: 5 - Very easy; 4 - Easy; 3 - Moderate; 2 - Difficult; 1 - Very difficult; 0 - Impossible. T - Difficulty of constructing a test for the issue: 5 - Very easy; 4 - Easy; 3 - Moderate; 2 - Difficult; 1 - Very difficult; 0 - Impossible. Each objective has (in square brackets) my suggestion of the best way to test this particular objective. This is informational only (mostly for my use). Statistics on the test objectives. Total: 187 objectives. (6 objectives for new AIs, rest for Defect Reports.) Existing: 38 objectives. Untestable: 47 objectives. To be considered: 102 objectives. 12 as test cases in existing tests; rest as one or more new tests. ----- Test objectives to be considered: 3.2(9) 8652/0095 (AI-00034) Score: 1-4-4-5 Check that a generic formal type can be doubly constrained. [Create a C-Test out of the examples in the appendix of the AI.] 3.5.6(3) 8652/0099 (AI-00152) 4.5.5(17) Score: 2-1-5-4 Check that the mixed multiple and divide operators are not inherited by a Float_Type_Definition. [Create a B-Test to check this.] 3.5.8(2/1) 8652/0004 (AI-00203) Score: 1-1-4-4 Check that if Machine_Radix is 10, then S'Digits = S'Model_Mantissa. [Create a C-Test to check this; it would be not applicable on a machine for which Machine_Radix /= 10 (virtually all machines).] 3.5.10(2/1) 8652/0005 (AI-00054) Score: 2-1-5-5 Check that 'Small cannot be specified for derived fixed point types and for decimal fixed point types. [Create a B-Test to check this.] 3.6(22/1) 8652/0002 (AI-00171) 3.8(18/1) 3.8(18.1/1) 9.5.2(22/1) Score: 2-3-3-4 Check that per-object expressions are evaluated as specified for entry families and protected components. [Create C-test(s) to check this. There are no existing tests for these cases. The basic structure of C37213x and C37215x can be used, but of course we don't want that many tests! Note that a test was created for protected objects, but the per-object cases were eventually removed.] 3.7(8/1) 8652/0007 (AI-00098) Score: 1-4-5-5 Check that unknown_discriminant_parts are not allowed on generic formal types that are either array types or elementary types. [Create a B-Test to check this. This sounds like a minimal value test, but since the syntax clearly allows this, and we had to resort to a rather obscure wording change, the likelyhood of implementations getting this wrong is significant.] 3.7.1(7/1) 8652/0008 (AI-00168) Score: 3-5-5-4 Check that a discriminant_constraint of a general access type is illegal if there is a place within the immediate scope of the designated subtype where the designated subtype's view is constrained. [Create a B-Test out of the example in the discussion of the AI. Note that this rule is necessary to prevent the ability to change discriminants of constrained objects. Thus, encountering this is unlikely, but the results if it happens could be disasterous.] 3.8(5/1) 8652/0009 (AI-00137) 13.1(1/1) [And a large number of other paragraphs. This is the Aspect_Clause/operational items change.] Score: 4-4-4-3 Check that operational items are allowed in some contexts where representation items are not: Check that the name of a partial view can be used when specifying an operational item; (see 7.3(5)) Check that operational items can be specified for a derived untagged type even if the type is a by-reference type, or has user-defined primitive subprograms; (see 13.1(10)) Check that operational items can be specified for a descendant of a of a generic formal untagged type. (see 13.1(11/1)) Note: Implementations may not not place implementation-defined restrictions on operational items, so these test(s) are applicable to all implementations. [Create one or more C-Tests to check that these rules are supported; use each of the 5 operational attributes to test these. Possibly create a B-Test to check the rules that remain (we don't want an implementation to go too far) - i.e. 13.1(5/1, 6/1, 8.1/1, 9.1/1); this would be related to the existing tests BDE006/7/8.] 3.8(18/1) 8652/0002 (AI-00171) 3.8(18.1/1) Score: 2-4-3-3 Check that checks are made properly when a per-object expression contains a attribute whose prefix denotes the current instance of the type. [Create a C-test to check this.] 3.8(18.1/1) 8652/0002 (AI-00171) Score: 2-4-3-4 Check if a expression in a per-object discriminant_constraint is part of a named association, it is evaluated once for each associated description. [Create a C-Test to check this; check both per-object expressions and other expressions in a per-object constraint.] 3.9.2(7/1) 8652/0010 (AI-00127) 3.10.2(24/1) 3.10.2(27/1) 4.8(3/1) Score: 5-5-3-4 Check that objects designated by X'Access (where X is of a class-wide type) and new T'() where T is a class-wide type are dynamically tagged. [Create a C-Test that demonstates that items with these forms are dispatching. Consider using the example in the AI's question.] 3.9.2(9/1) 8652/0010 (AI-00127) Score: 4-3-5-4 Check that if the expected type for an expression is an anonymous access-to-specific tagged type, then the object designated by the expression shall not be dynamically tagged unless it is a controlling operand in a call on a dispatching operation. [Create a B-Test to check this, or add test cases to the existing test B392004.] 3.9.2(10/1) 8652/0011 (AI-00117) Score: 3-3-4-4 Check that the "/=" implicitly declared with the declaration of "=" for a tagged type is legal and callable. [Create a C-test to check dispatching of tagged type "=". (C452001 tests user-defined equality of tagged types, but it does not test dispatching.)] 3.9.2(10/1) 8652/0011 (AI-00117) 6.3.1(13.1/1) Score: 2-2-5-4 Check that convention of an inherited or overriding dispatching operation is the convention of the corresponding primitive operation of the type. Check that default convention of a new dispatching operation for a tagged type is the convention of the type. [Create a B-Test and/or C-Test to check this. The obvious way to test this is to declare a package of convention C subprograms, and check that the inherited ones can be used with a convention C access to subprogram type. (Note that such a test will not be applicable to all implementations. Alternatively, a macro substitution of any supported language could be used instead of C, but the test still would not be applicable to every implementation.) It's not clear if such a test really would be testing anything valuable.] 3.10(7/1) 8652/0012 (AI-00062) Score: 2-3-4-4 Check that a derived access type has the same storage pool as its parent. [Create a C-Test to check this. In particular, allocate an object from the parent type, convert it to the derived type, and deallocate it. Also vice-versa. This was legal in Ada 83, and should remain so in Ada 95.] 3.10.2(2) 8652/---- (AI-00235) Score: 4-5-3-4 Check that the prefix type of 'Access (and 'Unchecked_Access) can be used to resolve the expected access type. [Create a C-Test to check that this can be done for overloaded routines (preferably out of the example circulated in June 2000); also update existing test B3A2016.A to reflect this rule (it currently reflects that the rule is being considered. This is a Binding Interpretation not in the TC.] 4.5.2(32/1) 8652/0016 (AI-00123) Score: 2-1-3-2 Check that "=" for all language-defined nonlimited types behaves as if it is predefined for composition and generic formal type purposes. [Create a C-Test to check. This test will have to check a lot of types, and will have a low likelyhood of failure. If a test is created, check that the results of predefined equality on a type with components of the language-defined types matches the results of the equality for each of the components individually. Make sure that the objects are independently derived.] 4.6(5/1) 8652/0017 (AI-00184) Score: 3-5-5-4 Check that type conversion where the target type is tagged and the operand is not is treated as a value conversion. [Create a B-Test to check this, using a renaming similar to the example in the discussion of the AI. Note that there is no test for the reverse case (untagged target and tagged operand), so this test should include that as well. Also, find existing tests with view conversions, and add them to the coverage document for this paragraph. (It is marked as being untested, but that is highly unlikely.) Note that failure to implement this properly can allow renamings of components that have disappeared - that is, encountering this is unlikely, but the results if it happens could be disasterous.] 4.6(12.1/1) 8652/0008 (AI-00168) Score: 3-5-5-5 Check that in a view conversion, the target and operand array's components may not have different aliasing (that is, if one has aliased components, the other must have aliased components, and vice-versa). [Create a B-Test out of the example in AARM 4.6(12.a.2-3/1). Note that this rule does not apply to value conversions. This rule is necessary to prevent the ability to change discriminants of constrained objects. Thus, encountering this is unlikely, but the results if it happens could be disasterous.] 4.6(54/1) 8652/0017 (AI-00184) Score: 3-5-4-4 Check that the view created by a view conversion is constrained if the target subtype is indefinite. [Create a C-Test to check this, using code similar to the second example in the question of the AI. (This uses an In Out parameter in a view conversion to change a discriminant; the assignment ought to raise Constraint_Error.) Note that failure to implement this properly can allow components to disappear that have been renamed - that is, encountering this is unlikely, but the results if it happens could be disasterous.] 6.3.1(21.1/1) 8652/0018 (AI-00175) Score: 2-1-5-5 Check that attribute designators must be the same in conforming expressions. [Add test cases for this to the existing tests B63009A, 9B, 9C.] 7.3.1(3/1) 8652/0019 (AI-00033) 7.3.1(4/1) 7.3.1(5/1) 7.3.1(6/1) Score: 2-4-3-3 Check that operations of a type are not declared in an inner scope. (See AARM 7.3.1(7.v.1-4/1) for an example.) [Create a B-Test to check this. There is value in one test for this, but not one for each paragraph.] 7.6(4/1) 8652/0020 (AI-00126) Score: 2-5-5-3 Check that Ada.Finalization is a Remote_Types package. [Create a C-Test which insures this is true; it would only be applicable to Annex E. This probably just would be a check that Ada.Finalization can be withed into Remote_Types package; creating an actual distributed test would be pretty complex.] 7.6(11/1) 8652/0021 (AI-00182) Score: 4-1-4-5 Check that Initialize is not called for default-initialized controlled subcomponents of the ancestor type of an extension_aggregate. [Create a C-Test to check this; or add a test case to C760009.] 7.6.1(13/1) 8652/0021 (AI-00182) Score: 3-3-1-2 Check that a renaming of a controlled object returned from a function is not finalized until it cannot be accessed by any name. [Create a C-Test to check this.] 7.6.1(13.1/1) 8652/0023 (AI-00169) Score: 4-3-2-2 Check an anonymous object is finalized if a transfer of control or exception causes it to be finalized with it's innermost enclosing master. [Create a C-Test. Possibly combine with the test for 7.6.1(13/1).] 7.6.1(14/1) 8652/0023 (AI-00169) Score: 1-1-5-4 Check that it is not a bounded error for an explicit call to Adjust or Finalize to propagate an exception. [Create a C-test to insure that Program_Error is not propagated by such a call.] 7.6.1(17.1/1) 8652/0023 (AI-00169) 7.6.1(17.2/1) Score: 5-3-3-2 Check that if a finalize invoked due to finalization of an anonymous object propagates an exception, other finalizes due to be performed are performed. Check that if a finalize invoked due to the end of execution of a master, other finalizes due to be performed are performed. [Create a C-Test (probably like C760008) to check this. Note that the raising Program_Error part is minimal value, but insuring that other finalizes are performed is important so that one broken abstraction does not break other, unrelated abstractions.] 8.5.1(5/1) 8652/0017 (AI-00184) Score: 3-5-4-4 Check that the restrictions on renaming components that depend on a discriminant are enforced in the public and private parts of an instance. Check that the restrictions on renaming components that depend on a discriminant are enforced in the body of a generic unit. Include the decendant of an untagged generic formal derived type case. [Create a B-Test to do this; use the first example in the question of the AI for a basis. Note that failure to implement this properly can allow components to disappear that have been renamed -- that is, encountering this is unlikely, but the results if it happens could be disasterous.] 8.5.4(5/1) 8652/0027 (AI-00135) Score: 3-3-5-4 Check that a renaming-as-body is illegal if the declaration occurs before the subprogram it completes is frozen, and the renaming renames the subprogram itself (directly or indirectly). [Create a B-Test; use the example in the AI as a guide. Try to include some legal cases as well.] 8.5.4.(5/1) 8652/0028 (AI-00145) Score: 4-3-4-4 Check that a renames-as-body used before the subprogram is frozen only requires mode conformance. [Create a C-Test, similar to the examples in the AI.] 8.5.4(8.1/1) 8652/0027 (AI-00135) Score: 2-1-5-4 Check that a legal circular renames (that is, doesn't violate 8.5.4(5/1)) is a bounded error, and raises Program_Error or Storage_Error or goes infinitely recursive (which ought to eventually raise Storage_Error). [Create a C-Test to check this (handling Program_Error and Storage_Error. This test could cause problems on some systems because of uncontrolled stack growth; it might not be possible to recover from infinite recursion. It doesn't seem likely that an implementation would get this wrong.] 9.6(26/1) 8652/0030 (AI-00113) Score: 1-1-5-4 Check that (Ada.Calendar) Month, Day, and Seconds raise Time_Error if the Year_Number is out of range. [Create a C-Test as follows: Create a Time value with the year 2099; Call "+" to move to year 2100. (That may raise Time_Error); If the "+" does not raise Time_Error, then call Month, Day, etc. and verify that Time_Error is raised. Such a test has little value; if an implementation returned the correct month, etc. rather than raising Time_Error, it would be harmless (although not portable). For many implementations, "+" would raise Time_Error (as that was required by Ada 83), and the test would be Not_Applicable.] 9.10(6.1/1) 8652/0031 (AI-00118) Score: 3-2-3-2 Check that termination of T signals a task that uses T'Terminated or Ada.Task_Identification.Is_Terminated. [Create a C-Test. However, this test would likely work even for an implementation that got this wrong. That is, it would be unlikely for it to catch any errors.] 10.1.5(7.1/1) 8652/0034 (AI-00041) Score: 4-3-4-4 Check that a library unit pragma applied to a generic does not apply to its instances. [Add a B-test to check; put pragma Pure/Preelaborate on a generic unit; instantiate at library level; with into Pure/Preelaborated package, requiring an error. Could also do this with the annex E categorization pragmas.] 10.1.5(7.1/1) 8652/0034 (AI-00041) Score: 3-4-4-4 Check that a library unit pragma applied to a generic does not apply to its instances. [Add a C-test to check that a pragma Pure on a generic unit does not prevent instantiating it with an access formal type; similarly for a Preelaborated generic unit. Could also do this with the annex E categorization pragmas.] 10.2(9) 8652/0107 (AI-00180) Score: 2-4-5-4 Check that pragma Elaborate on a child unit doesn't create a dependence on its parent unit. [Add a C-Test to check this; use the example in the Appendix of the AI for a basis.] 11.4.1(14) 8652/---- (AI-00241) Score: 4-5-5-5 Check that Exception_Identity applied to Null_Occurrence returns Null_Id (and does *not* raise Constraint_Error). [Add a test case to CB41004 to check this. Note: It is certain that implementations implement this wrong; it was required to raise Constraint_Error until 2000-Dec-27.] 12.5(8/1) 8652/0037 (AI-00043) Score: 3-4-3-3 Check that the predefined operators for a generic formal composite type are inherited as described in 7.3.1. [Add a C-Test which is similar to the example given in the AI; use the added operators in the generic body.] 12.5.1(21/1) 8652/0038 (AI-00202) Score: 3-4-3-3 Check that operations are inherited for a formal derived type whose ancestor is also a formal type as described in this paragraph. [Add a C-test to check this; use the example in the AI as a basis.] 13.1(11/1) 8652/0011 (AI-00117) Score: 4-0-5-4 Check that operational and representation aspects of a partial view are the same as those of the full view. [Create a C-Test to check this. But it is hard to imagine what other interpretation could be taken.] 13.3(75/1) 8652/0040 (AI-00108) Score: 0-1-5-4 Check that the default value is always used for the External_Tag aspect. [Create a C-Test to check this, using a macro to provide the default value. However, the value can be essentially whatever the implementation wants, so the test would not have much value.] 13.7(15) 8652/---- (AI-00221) Score: 3-4-5-4 Check that Default_Bit_Order is static. [Add a C-test to check this. This is a Binding Interpretation not in the TC.] 13.12(8.1/1) 8652/0042 (AI-00130) 13.12(8.2/1) 13.12(8.3/1) 13.12(8.4/1) Score: 2-3-4-4 Check that the rules for testing restrictions are followed. [Create B-Tests to check that these rules are followed. Preferably for a variety of restrictions.] 13.13.1(4/1) 8652/0044 (AI-00181) 13.13.1(9.1/1) Score: 4-5-5-4 Check that components of Stream_Element_Array are aliased. [Create a C-test with appropriate applicability criteria. Note that the test cannot check the criteria itself, as the test would be rejected if they are not met. Also see 13.13.1(9.1/1) for a discussion of that paragraph separately.] 13.13.1(8) 8652/---- (AI-00227) Score: 4-3-5-3 Check that Last is set to Item'First - 1 if no items are transfered by Streams.Read. Check that Constraint_Error is raised if Item'First = Stream_Element_Offset'First. [Add a C-test to check this; probably that can only be done for concrete streams packages like Ada.Streams.Stream_IO. Possibly add this as a test case to CXAC002. This is a Binding Interpretation not in the TC.] 13.13.1(9.1/1) 8652/0044 (AI-00181) Score: 3-1-5-2 Check that this implementation permission is not used if its conditions are not met. [A C-Test could be created a test which reports "Tenatively Passed" if the criteria are not met and which required the passing of the test for 13.13.1(4/1), and "Passed" otherwise. I don't think this is necessary, the note of inapplicability in the test report is sufficent for checking this.] 13.13.2(8.1/1) 8652/0040 (AI-00108) 13.13.2(25/1) Score: 4-3-4-4 Check that the Read, Write, Input, and Output attributes are inherited for untagged derived types. [Create a C-Test to check this; I can't find a test that does this.] 13.13.2(9/1) 8652/0040 (AI-00108) Score: 4-5-3-4 Check that the default Read and Write attributes for a type extension are created from the parent type's attribute (which may be user-defined) and those for the extension components. [Create a C-Test to check this. Make sure that a user-defined parent type attribute is used. Note that it is not necessary to use this with Stream_IO -- currently all of the existing tests do that. Try a memory storage scheme. For instance, Claw uses stream attributes to convert complex items into a binary format for registry and clipboard storage.] 13.13.2(9/1) 8652/0040 (AI-00108) Score: 2-5-5-5 Check that a limited type extension is illegal if -- The parent type has user defined Read or Write attributes; and -- The extension has a limited component which does not have a user-defined Read or Write attribute. [Create a B-Test to check this.] 13.13.2(9/1) 8652/0040 (AI-00108) 13.13.2(36/1) Score: 2-5-4-4 Check that the default Read and Write attributes for a limited type extension are created from the parent type's attribute (which may be user-defined) and those for the extension components, if the extension components are non-limited or have user-defined attributes. Check that such limited type extension attributes are callable. [Create a C-Test to check this. Make sure that a user-defined parent type attribute is used.] 13.13.2(25/1) 8652/0040 (AI-00108) Score: 4-4-4-4 Check that the default Input and Output attributes are used for a type extension, even if the parent type's attribute is user-defined. [Create a C-Test to check this. Careful to avoid issue 3 of AI-00195.] 13.13.2(35.1/1)8652/0045 (AI-00132) Score: 5-3-4-4 Check that the default implementations of Read and Input raise End_Error if if the end of stream is reached before the reading of a value of the type is completed. [Add a C-Test to check this. "End of stream" means that Ada.Streams.Read returns Last < Item'Last.] 13.13.2(36.1/1)8652/0040 (AI-00108) Score: 3-3-4-2 Check that the stream attributes work for every language-defined type. [Create a C-Test. This can be tested by attempting to write and then read back every language-defined type, then insuring that the same result was received. This even sounds useful from a user perspective, and unlikely to be harmful to implementors. However, with about 100 language-defined types (check the RM's index for a list), this would be a *giant* test.] 13.14(3/1) 8652/0014 (AI-00064) Score: 2-2-5-4 Check that renames-as-bodies do not freeze. [Create a C-Test for this.] 13.14(4/1) 8652/0046 (AI-00106) 13.14(11.1/1) Score: 2-3-5-4 Check that implicit_dereferences cause freezing in a construct that is being frozen. Check that the nominal subtype of the implicit_dereference is frozen. [Create a B-Test to check this; make sure an example like that in question 2 of the AI is tried.] 13.14(5) 8652/0112 (AI-00040) Score: 2-2-5-4 Check that a box used in a formal subprogram_default freezes the actual subprogram determined in an instantiation. [Create a B-Test for this.] 13.14(8/1) 8652/0046 (AI-00106) Score: 2-2-5-4 Check that an object name causes freezing. [Create a B-Test to check this; make sure an example like that in question 1 of the AI is tried. Possibly combine with 13.14(4/1).] 13.14(8.1/1) 8652/0046 (AI-00106) Score: 3-3-5-4 Check that implicit calls cause freezing. [Create a B-Test to check this; make sure an example like that in question 3 of the AI is tried. (Also try for storage pool Allocate.) Possibly combine with 13.14(8/1).] 13.14(8.2/1) 8652/0046 (AI-00106) Score: 2-3-5-4 Check that implicit conversions to a type freezes the type. [Create a B-Test to check this; make sure an example like the second one in question 4 of the AI is tried. Possibly combine with 13.14(8/1).] A.4.3(68/1) 8652/0049 (AI-00130) Score: 1-1-5-5 Check Constraint_Error is raised by Ada.Strings.Fixed.Find_Token if Source'First is not in Positive. [Create a C-Test to check this. This can only happen for a null string with unusual bounds (for instance String(0..-1)).] A.4.3(74/1) 8652/0049 (AI-00128) A.4.3(74.1/1) A.4.3(74.2/1) A.4.3(86/1) A.4.3(106/1) Score: 3-1-5-5 Check that the results of the Ada.Strings.Fixed functions Replace_Slice, Delete, and "*" have lower bound 1. [Add test cases to CXA4005. Might as well check the other functions in Ada.Strings.Fixed as well: Trim, Head, Tail, Translate, Overwrite, and Insert.] A.4.4(82) 8652/0097 (AI-00115) Score: 4-2-4-5 Check that Ada.Strings.Bounded_String can be instantiated at any nesting depth. [Create a C-Test to do this, IF no existing test does so.] A.4.4(101/1) 8652/0049 (AI-00128) Score: 2-1-5-5 Check that Ada.Strings.Bounded.Slice raises Index_Error if High > Length(Source). [Add a test case to CXA4019. Also check that Low > Length(Source+1) raises Index_Error.] A.5.1(8) 8652/0097 (AI-00115) Score: 2-1-5-5 Check that Ada.Numerics.Generic_Elementary_Functions can be instantiated at any nesting depth. [Create a C-Test to do this, IF no existing test does so.] A.5.1(9/1) 8652/0020 (AI-00126) Score: 2-4-5-5 Check that Ada.Numerics.Elementary_Functions is declared Pure. [Create a C-Test which checks that this can be withed into a Pure package.] A.5.2(27) 8652/0097 (AI-00115) Score: 3-2-4-5 Check that Ada.Numerics.Discrete_Random can be instantiated at any nesting depth. [Create a C-Test to do this, IF no existing test does so.] A.8.1(16) 8652/0097 (AI-00115) Score: 4-2-4-5 Check that Ada.Sequential_IO can be instantiated at any nesting depth. [Create a C-Test to do this, IF no existing test does so.] A.8.4(19) 8652/0097 (AI-00115) Score: 4-2-4-5 Check that Ada.Direct_IO can be instantiated at any nesting depth. [Create a C-Test to do this, IF no existing test does so.] A.9(9) 8652/0097 (AI-00115) Score: 3-2-4-5 Check that Ada.Storage_IO can be instantiated at any nesting depth. [Create a C-Test to do this, IF no existing test does so.] A.10.1(21/1) 8652/0051 (AI-00057) A.10.3(20/1) Score: 2-5-5-5 Check that Standard_Output can be flushed. Check that 'in' Ada.Text_IO.File_Type parameters can be flushed. [Create a C-Test to check this.] A.10.1(52) 8652/0097 (AI-00115) A.10.1(57) A.10.1(63) A.10.1(68) A.10.1(73) A.10.1(79) Score: 2-1-5-5 Check that Ada.Text_IO.Integer_IO, Ada.Text_IO.Modular_IO, Ada.Text_IO.Float_IO, Ada.Text_IO.Fixed_IO, Ada.Text_IO.Decimal_IO, Ada.Text_IO.Enumeration_IO, and the wide versions of each of these can be instantiated at any nesting depth. [Create a C-Test to do this, IF no existing test does so. But it seems likely that existing tests cover these cases.] A.10.10(17) 8652/0054 (AI-00007) Score: 1-1-5-5 Check that Ada.Text_IO.Enumeration_IO cannot be instantiated for a float type. [Create a B-Test to check this. Note that this is a consequence of other language rules; a separate test probably is not justified.] A.12.1(1.1/1) 8652/0055 (AI-00026) A.12.1(31/1) A.12.1(32.1/1) A.12.1(32.2/1) A.12.1(32.3/1) A.12.1(32.4/1) A.12.1(32.5/1) A.12.1(32.6/1) Score: 5-3-5-4 Check that stream file positioning works as specified. [Add one or two C-tests to check this.] A.12.1(25/1) 8652/0051 (AI-00057) Score: 2-5-5-5 Check that 'in' Ada.Stream_IO.File_Type parameters can be flushed. [Create a C-Test to check this.] A.12.1(29/1) 8652/0056 (AI-00001) Score: 3-3-5-5 Check that Ada.Streams.Stream_IO.Stream raises Status_Error if the file is not open. [Add this as a test case to CXAC003.] B.1(9.1/1) 8652/0058 (AI-00036) Score: 2-4-5-5 Check that out-of-order arguments are not allowed in pragma Import and Export. [Add a B-Test to check this.] B.3(1/1) 8652/0059 (AI-00131) B.3(60.3/1) B.3(61/1) B.3(68.1/1) B.3(69/1) Score: 5-4-4-4 Check that C_Pass_by_Copy is implemented, and works as intended. [Create a C-test to check this; this will require some C code which has a function with a value struct parameter. (Consider using CXC3013 as a model.)] B.3(20/1) 8652/0060 (AI-00037) B.3(30/1) B.3(31/1) Score: 2-1-5-5 Check that Interfaces.C.Char and Interfaces.C.Wchar_T are discrete types. [Create a C-Test using these types in contexts which require discrete types.] B.3(60.1/1) 8652/0059 (AI-00131) Score: 3-3-5-5 Check that convention C_Pass_by_Copy cannot be applied to subprograms or objects. [Create a B-Test to check this.] B.3(60.2/1) 8652/0059 (AI-00131) Score: 1-4-5-5 Check that convention C_Pass_by_Copy cannot be applied to elementary types, array types, or record types with discriminants. [Create a B-Test to check this. Note that the permission to allow any type to have an appropriate convention (as given in B.1(20)) does not apply to C_Pass_By_Copy, as B.3(60.2/1) specifically says that the rules in B.1(20) do not apply. This test might cause trouble for existing implementations of C_Pass_By_Copy.] B.3.2(16) 8652/0097 (AI-00115) Score: 2-1-5-5 Check that Interfaces.C.Pointers can be instantiated at any nesting depth. [Create a C-Test to do this, IF no existing test does so.] B.4(71/1) 8652/0072 (AI-00072) Score: 2-1-5-5 Check that the bounds and length of the result of Interfaces.COBOL.To_Display are correct. [A test case should be added to the existing test CXB4004 to check that the lower bound is 1, and that the upper bound = Length().] B.4(79/1) 8652/0072 (AI-00072) Score: 2-1-5-5 Check that the bounds and length of the result of Interfaces.COBOL.To_Packed are correct. [A test case should be added to the existing test CXB4006 to check that the lower bound is 1, and that the upper bound = Length().] B.4(87/1) 8652/0072 (AI-00072) Score: 2-1-5-5 Check that the bounds and length of the result of Interfaces.COBOL.To_Binary are correct. [A test case should be added to the existing test CXB4007 to check that the lower bound is 1, and that the upper bound = Length().] C.3.2(16/1) 8652/0069 (AI-00166) C.3.2(18/1) Score: 2-2-5-5 Check that Current_Handler returns null if no user-defined handler is attached. Check that Exchange_Handler returns null if no user-defined handler is attached. [Add test cases to CXC3007 to check these requirements.] C.7.1(3/1) 8652/0070 (AI-00101) Score: 1-5-5-5 Check that the parameter to Ada.Task_Identification.Abort_Task has mode 'in'. [Create a C-test (or add test cases to existing tests) to insure that the parameter to Abort_Task can be a constant or function call.] D.1(21/1) 8652/0072 (AI-00092) D.1(22/1) Score: 3-3-5-1 Check that if Set_Priority or Hold is called on a task T, other tasks that are currently inheriting priority from T do not have their active priorities modified. [Add a C-Test to check this. Check that existing test CXDB005 does not assume the opposite.] D.7(4/1) 8652/0042 (AI-00130) Score: 1-5-5-4 Check that the No_Nested_Finalization restriction does not allow nested protected or task parts. [Create an L-Test to check this. Note: There is currently no test for this restriction at all; so checks for controlled and access types should also be included.] D.7(15/1) 8652/0076 (AI-00067) D.7(18/1) Score: 2-1-5-5 Check that Max_Asynchronous_Select_Nesting = 0 causes the rejection of any program containing an Asynchronous_Select. [Create a B-Test to check this. This test also applies to Annex H. (H.4(2))] D.7(15/1) 8652/0076 (AI-00067) D.7(19/1) Score: 2-1-5-5 Check that Max_Tasks = 0 causes the rejection of any program containing a task. [Create a B-Test to check this. This test also applies to Annex H. (H.4(2))] E.2.1(7/1) 8652/0080 (AI-00003) Score: 1-3-5-5 Check that access types are allowed in blocks in the body of a generic shared passive package. [Add a C-test to check this.] E.2.2(9.2/1) 8652/0082 (AI-00164) Score: 3-4-5-4 Check that a remote access type can be a general access type that designates a class-wide private extension whose ancestors are all private extensions or limited private types. [Add a test case to BXE2012 to check this.] E.2.2(9.3/1) 8652/0081 (AI-00004) Score: 3-3-5-4 Check that the restrictions on the use of a remote access type apply to a type derived from a remote access type. [Add test cases to BXE2011 to check this.] E.2.3(13/1) 8652/0078 (AI-00048) E.2.3(14/1) Score: 2-1-5-5 Check that a remote call interface library subprogram cannot have a pragma Inline, an access parameter, or a limited parameter whose type does not have user-defined Read and Write attributes. [Create a B-Test similar to BXE2009 to test this case.] E.3(5/1) 8652/0084 (AI-00104) E.3(5.1/1) Score: 2-2-3-1 Check that P'Version changes when P changes in a semantically significant way. Check that when P does not have a completion, P'Body_Version returns a value different than the value returned by a version of P that has a completion. [Create a pair of C-Tests with the following methodology: Compile a spec and body for a package P. Compile and link a main program that retrieves P'Version and P'Body_Version, and stores them in a file. (Prints "Tenatively passed") Compile different specs and bodies for the package P. Compile and link a main program that retrieves P'Version and P'Body_Version, and compares them with the stored values. The test fails if they are the same. Note that this would be much more complex than existing ACATS tests, and its unclear that it would catch many errors. (And the vagueness of "semantically significant" would open such a test to challenges.)] E.4(20.1/1) 8652/0086 (AI-00159) Score: 2-3-2-1 Check that with respect to shared variables, synchronous RPCs are part of the calling task, while asynchronous RPCs proceed in parallel. [Create a C-Test, if someone can induce a case where this would matter.] G.1.1(24) 8652/0097 (AI-00115) Score: 2-1-5-5 Check that Ada.Numerics.Generic_Complex_Types can be instantiated at any nesting depth. [Create a C-Test to do this, IF no existing test does so.] G.1.1(25/1) 8652/0020 (AI-00126) G.1.2(9/1) Score: 2-4-5-5 Check that Ada.Numerics.Complex_Types and Ada.Numerics.Complex_Elementary_Functions are declared Pure. [Create a C-Test which checks that these can be withed into a Pure package. Note that this test can't be combined with the check for Ada.Numerics.Elementary_Functions, as these packages are only applicable to Annex G, while Ada.Numerics.Elementary_Functions is applicable to everyone.] G.1.2(8) 8652/0097 (AI-00115) Score: 2-1-5-5 Check that Ada.Numerics.Generic_Complex_Elementary_Functions can be instantiated at any nesting depth. [Create a C-Test to do this, IF no existing test does so.] G.1.3(12/1) 8652/0092 (AI-00029) Score: 3-3-5-4 Check that extended float literals are supported by Ada.Text_IO.Complex_IO.Get. [Add a C-test to check this, or extend CXG1003 to do so. Note: It is unlikely that a user would use complex numbers, but if they do, encountering this is quite likely.] H.4(8/1) 8652/0042 (AI-00130) Score: 1-4-3-4 Check that the No_Local_Allocators restriction allows instantiations of generic packages, but that nested instantiations of such packages containing allocators are detected. [Create a B-Test to check this, and possibly a C-Test. Possibly update the existing BXH4003 and LXH4003 with this check.]