5

在最近的AdaCore Gem中有一个声明

Finalize 的实现稍微复杂一些:Ada 参考手册指出 Finalize 过程应该始终是幂等的。Ada 编译器可以自由地对同一个对象多次调用 Finalize,尤其是在发生异常时。

我需要测试一个私人控制的类型,

   type T is private;
private
   type T is new Ada.Finalization.Controlled with ...

我可以更改源以使类型明显受控

   type T is new Ada.Finalization.Controlled with private;

然后打电话Finalize (My_T);(甚至My_T.Finalize?);但是有什么方法可以在不更改被测软件的情况下导致多个最终确定?

4

1 回答 1

3

为了测试的目的,我使用了一个子包。它允许测试私人部分。假设您的包裹是:

package A is
   type T is private;
private
   type T is new Ada.Finalization.Controlled with ...
end A;

我会用类似的东西进行测试:

package body A.Test is
   procedure Test_Finalize is
       My_T : T;
   begin
       My_T.Finalize;
   end Test_Finalize;
end A.Test;
于 2011-01-20T12:57:51.397 回答