初めてのテストケース
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の取得に走るのです。