Test::Simple、アラヤダほんとにシンプル。
パッケージのコード
1 #!/usr/local/bin/perl
2
3 # Class Structを使わないパターン
4
5 package DataContainer;
6 use strict;
7 use warnings;
8 use Data::Dumper;
9
10 sub new {
11 my $class = shift;
12 return bless { _container => {} }, $class;
13 }
14
15 sub set {
16 my $self = shift;
17 my ($key,$val) = @_;
18 $self->{_container}->{$key} = $val;
19 return 1;
20 }
21
22 sub get {
23 my $self = shift;
24 my $key = shift;
25 return $self->{_container}->{$key} if exists $self->{_container}->{$key};
26 }
27
28
29 1;
Test::Simpleのコード
1 #!/usr/local/bin/perl
2
3 # Class Structを使わないパターン
4
5 use strict;
6 use warnings;
7 use Test::Simple tests => 9;
8 use DataContainer;
9
10 my $data = new DataContainer();
11 my $ret1 = $data->set("aaa", "bbb");
12 my $ret2 = $data->set("ccc", "ddd");
13
14 ok ( $ret1 == 1, '$data->set() #1 set string');
15 ok ( $ret2 == 1, '$data->set() #2 set string ');
16 ok ( $data->get("aaa") eq "bbb", '$data->get() #1 get string');
17 ok ( $data->get("ccc") eq "ddd", '$data->get() #2 get string');
18 ok ( $data->get("eee") eq "", '$data->get() #3 not exists key');
19
20 my @array = ( 1, 2, 3 );
21 my %hash = ( "111"=>"222", "333"=>"444");
22 my $ret3 = $data->set("sage", @array);
23 my $ret4 = $data->set("age" , %hash);
24
25 ok ( $ret3 == 1, '$data->set() set array ');
26 ok ( $ret4 == 1, '$data->set() set hash ');
27
28 my @sage_array = $data->get("sage");
29 my %age_hash = $data->get("age");
30
31 ok ( $sage_array[1] == 2, '$data->get() get array');
32 ok ( $age_hash{"111"} eq "222", '$data->get() get array');
33
34 1;
でもって結果。
1..9
ok 1 – $data->set() \#1 set string
ok 2 – $data->set() \#2 set string
ok 3 – $data->get() \#1 get string
ok 4 – $data->get() \#2 get string
ok 5 – $data->get() \#3 not exists key
ok 6 – $data->set() set array
ok 7 – $data->set() set hash
Odd number of elements in hash assignment at test3.t line 29.
Use of uninitialized value in numeric eq (==) at test3.t line 31.
not ok 8 – $data->get() get array
# Failed test '$data->get() get array'
# in test3.t at line 31.
Use of uninitialized value in string eq at test3.t line 32.
not ok 9 – $data->get() get array
# Failed test '$data->get() get array'
# in test3.t at line 32.
# Looks like you failed 2 tests of 9.
おうふぁっく。
配列やハッシュはvaluesに入れちゃ駄目なのか。
17行目でスカラーきめうちだからかな。
perlってスクリプト言語にしてはかなり型に煩いですね。
嫌いじゃないですけど。
スクリプト言語は先にテストを書きたい人なので、
順番を無視してTest::MoreやTest::Harnessの取得に走るのです。