Ada 我如何激发多个电话来完成?
在最近的一份声明中 Finalize的实现稍微复杂一些:Ada参考手册指出Finalize过程应该始终是幂等的。Ada编译器可以在同一对象上多次调用Finalize,特别是在发生异常时。 我需要测试一个私人控制的类型Ada 我如何激发多个电话来完成?,ada,finalize,Ada,Finalize,在最近的一份声明中 Finalize的实现稍微复杂一些:Ada参考手册指出Finalize过程应该始终是幂等的。Ada编译器可以在同一对象上多次调用Finalize,特别是在发生异常时。 我需要测试一个私人控制的类型 type T is private; private type T is new Ada.Finalization.Controlled with ... 我可以更改源以使类型可见地受控 type T is new Ada.Finalization.Contro
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)代码>(甚至我的T.定稿
?);但是,有没有任何方法可以在不更改被测软件的情况下导致多次终结?为了进行测试,我使用了一个子包。它允许测试私有部分。
假设您的包是:
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;
哇。这件事让我很难堪。我能想到的最好办法是找出是什么(如果有的话)条件导致编译器使用多重定稿技巧,并尝试归纳它。不过,这不适合便携式测试。也许我只需要接受它必须被明显控制。最好是让它可以测试,即使它添加了一些不必要的脚手架。我也发现特殊的子包(有时称为“私生子”)对于单元测试非常有用,因为它们能够从外部获取包的内部。我知道!真正地非常感谢,只是这份工作。