首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以不同的顺序执行时,测试失败

以不同的顺序执行时,测试失败
EN

Stack Overflow用户
提问于 2019-11-29 22:42:10
回答 1查看 64关注 0票数 4

当我执行这个程序时:

代码语言:javascript
运行
复制
use Test;
use NativeCall;

constant LIB  = ('gsl', v23);

sub gsl_sf_airy_Ai(num64 $x, uint32 $mode --> num64) is native(LIB) is export { * }
sub Ai(Numeric $x, UInt $mode --> Num) is export { gsl_sf_airy_Ai($x.Num, $mode) }

ok Ai(0, 0) == 0.3550280538878172, 'Ai 1';
ok gsl_sf_airy_Ai(0e0, 0) == 0.3550280538878172, 'Ai 2';

测试工作正常,即使我这样交换了两个"ok“测试:

代码语言:javascript
运行
复制
ok gsl_sf_airy_Ai(0e0, 0) == 0.3550280538878172, 'Ai 2';
ok Ai(0, 0) == 0.3550280538878172, 'Ai 1';

如果我将声明移到一个模块中:

代码语言:javascript
运行
复制
unit module mymodule;
use NativeCall;

constant LIB  = ('gsl', v23);

sub gsl_sf_airy_Ai(num64 $x, uint32 $mode --> num64) is native(LIB) is export { * }
sub Ai(Numeric $x, UInt $mode --> Num) is export { gsl_sf_airy_Ai($x.Num, $mode) }

并编写一个测试程序:

代码语言:javascript
运行
复制
use Test;
use lib '.';
use mymodule;

ok Ai(0, 0) == 0.3550280538878172, 'Ai 1';
ok gsl_sf_airy_Ai(0e0, 0) == 0.3550280538878172, 'Ai 2';

同样,这两个测试执行时没有错误,但如果我交换最后两行:

代码语言:javascript
运行
复制
ok gsl_sf_airy_Ai(0e0, 0) == 0.3550280538878172, 'Ai 2';
ok Ai(0, 0) == 0.3550280538878172, 'Ai 1';

我得到了这个错误:Type check failed for return value; expected Num but got Whatever (*),我不明白为什么。我甚至怀疑可能是内存损坏,所以我使用valgrind执行了测试程序,但显然在那个部门没有任何问题。有什么提示吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-30 00:54:37

请在最近发布的rakudo 2019.11上重新测试。当我重构NativeCall设置代码时,我很可能已经修复了这个问题。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59106793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档