小编Jon*_*n J的帖子

Perl单元测试 - 子程序是否可测试?

我一直在阅读和探索Perl中单元测试和测试驱动开发的概念.我正在研究如何将测试概念融入我的开发中.说我在这里有一个Perl子程序:

sub perforce_filelist {

    my ($date) = @_;

    my $path = "//depot/project/design/...module.sv";
    my $p4cmd = "p4 files -e $path\@$date,\@now";

    my @filelist = `$p4cmd`; 

    if (@filelist) {
        chomp @filelist;
        return @filelist;
    }
    else {
        print "No new files!"
        exit 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

子例程执行Perforce命令并将该命令的输出(文件列表)存储到@filelist数组中.这个子程序可以测试吗?测试返回@filelist的空是否有用?我正在努力教自己如何像单位测试开发人员那样思考.

tdd perl unit-testing subroutine

7
推荐指数
1
解决办法
571
查看次数

通过16位移位进行32位乘法

我正在使用移位和加法编写软乘法函数调用。现有的函数调用如下:

unsigned long __mulsi3 (unsigned long a, unsigned long b) {

    unsigned long answer = 0;

    while(b)
    {
        if(b & 1) {
            answer += a;
        };

        a <<= 1;
        b >>= 1;
    }
    return answer;
}
Run Code Online (Sandbox Code Playgroud)

尽管我的硬件没有乘法器,但我有一个硬移位器。该移位器一次最多可以移位16位。

如果我想充分利用我的16位移位器。关于如何修改上面的代码以反映我的硬件功能的任何建议?给定的代码每次迭代仅移位1位。

16位移位器一次最多可以将32位无符号长值移位16位。sizeof(unsigned long)== 32位

c assembly bit-manipulation bit-shift multiplication

5
推荐指数
1
解决办法
1665
查看次数

连接到Perforce的Perl单元测试 - 连接到服务器失败; 检查$ P4PORT

我正在编写一个P4Perl脚本来连接Perforce服务器并自动执行Perforce命令.随着子程序的开发以访问Perforce,我也在开发单元测试来验证它们.我是Perl和单元测试的新手.

这是我与Perforce建立连接的子例程.文件名是p4_connect.pl

use warnings;
use strict;

use P4;

my $clientname = "johndoe"
my $p4port = "icmanage:1667"

main();

sub main {
    my $status;
    $status = connect_perforce($clientname, $p4port);
};

sub connect_perforce {

    my ($clientname, $p4port) = @_;
    my $status;
    my $p4 = new P4;

    $p4->SetClient( $clientname );
    $p4->SetPort( $p4port );
    $status = $p4->Connect() or die( "Failed to connect to Perforce Server" );

    return $status;
}
Run Code Online (Sandbox Code Playgroud)

运行时Perl脚本执行正常"perl p4_connect.pl",不会抛出任何错误.

但是,当我将connect_perforce子例程移动到包模块(Perforce.pm)(perforce.t)为其编写单元测试时,我遇到了以下错误:

username@hostname% perl -Ilib t/perforce.t
ok …
Run Code Online (Sandbox Code Playgroud)

perl perforce unit-testing

4
推荐指数
1
解决办法
326
查看次数