清单 24. target.pl
#! /usr/bin/perl
my $p = 'tpt %d> '; # 输入提示符
printf( $p, 0 );
while( <> ){
do { print "byebye/n"; last } if /quit/;
# 如果用户输入 quit 则输出"byebye",跳出循环
print uc( $_ ); # 否则以大写的形式输出用户本次输入
printf( $p, $. ); # 更新输入提示符,$. 为读入行数计数器
}
print "quit> /n"; # 打印结束输入提示符
某次运行结果如下:
清单 25. target.pl 执行结果示例
# ./target.pl tpt 0> 1 1 tpt 1> 2 2 tpt 2> quit byebye quit> #
exptest.pl 脚本用来模拟用户输入不同数据以测试目标程序的功能:
清单 26. exptest.pl
#! /usr/bin/perl
use Test::More tests => 4; # 计划执行的测试用例总数
use Expect::Simple;
my %attr = ( Cmd => "./target.pl"
DisconnectCmd => 'quit',
Prompt => [ -re => 'tpt/s/d+> ', 'quit> '],
RawPty => 1,
Verbose =>3,
);
my $res; # 实际输出结果
my $obj = Expect::Simple->new( /%attr );
# 测试用例 1,用户输入 a,预期目标程序输出 A
$obj->send( 'a' );
chomp( $res = $obj->before );
is( $res, 'A', 'Test case 1: Input "a" -> Output "A"' );
# 测试用例 2,用户输入 b,预期目标程序输出 B
$obj->send( 'b' );
chomp( $res = $obj->before );
is( $res, 'B', 'Test case 2: Input "b" -> Output "B"' );
# 测试用例 3,用户输入 quit,预期目标程序输出 byebye
$obj->send( 'quit' );
chomp( $res = $obj->before );
is( $res, 'byebye', 'Test case 3: Input "quit" -> Output "byebye"' );
# 测试用例 4,目标程序输出 byebye 后应直接输出 quit>
is ( $obj->match_str, 'quit> ', 'Test case 4: Output "byebye" -> Output "quit>" ' );
程序引用了 Test::More 模块,Test::More 是一个编写测试脚本的框架,这里只介绍程序中涉及的部分,更多内容请查阅 CPAN 网站上相关信息。整个测试过程使用 is 函数来判断用例的执行结果:is ( $got, $expected, $comments )。该函数判断 $got 与 $expected 是否相等,相等则通过,输出“ok”,否则输出“not ok”。
对您的摸拟数字电路进行计算机仿真非常重要,这是因为您可以使用 spice(电路仿真程序)计算机程序来进行模拟仿真或使用 ibis(输入/输出缓冲信息规范)程序来进行数字...。watches窗口可以让我们观察变量的变化情况,具体操作是在watches窗口内按insert键:这时,屏幕上弹出一个菜单,我们输入所需要观察的变量名,分别输入i,a,b,c这4个变量名,于是watches窗口内就有如下的4个变量的状态:这时,再次使用单步执行法,我们会发现,这4个变量的状态随着程序的执行而不断变化,这样我们就可以方便地知道执行每一步之后,程序的各个变量的变化情况,从中我们可以知道我们的程序是否出错,在哪里出错,方便我们及时地修改。 迭代器 迭代器的概念图 * 输入迭代器 input iterator 输出迭代器 output iterator 前向迭代器 forward iterator 双向迭代器 bidirectional iterator 随机访问迭代器 random access iterator 迭代器 * 迭代器支持的操作 迭代器是泛化的指针,提供了类似指针的操作(诸如++、*、- 运算符) 输入迭代器 可以用来从序列中读取数据,如输入流迭代器 输出迭代器 允许向序列中写入数据,如输出流迭代器 前向迭代器 既是输入迭代器又是输出迭代器,并且可以对序列进行单向的遍历 双向迭代器 与前向迭代器相似,但是在两个方向上都可以对数据遍历 随机访问迭代器 也是双向迭代器,但能够在序列中的任意两个位置之间进行跳转,如指针、使用vector的begin 、end 函数得到的迭代器 迭代器 迭代器的区间 两个迭代器表示一个区间:[p1, p2 stl算法常以迭代器的区间作为输入,传递输入数据 合法的区间 p1经过n次 n 0 自增 ++ 操作后满足p1 p2 区间包含p1,但不包含p2 * 迭代器 迭代器的辅助函数 advance p, n 对p执行n次自增操作 distance first, last 计算两个迭代器first和last的距离,即对first执行多少次“++”操作后能够使得first last * 迭代器 * 容器 容器类是容纳、包含一组元素或元素集合的对象。
清单 27.exptest.pl 执行结果
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-118246-4.html
甚至对我们示好
再配上奶茶的歌声
台湾问题得到彻底解决的那一天