在最近的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
?);但是,如果没有对被测软件进行这些更改,我有什么方法可以导致多次最终确定?
答案 0 :(得分: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;