matsutakegohan1's blog

matsutakegohan1(きゅーぞう)による、釣り、狩猟、技術?、セキュリティ?、その他の話

未分類

初めてのテストケース

投稿日:

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の取得に走るのです。

-未分類
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

腰を痛めている

腰を痛めている。先日隅田川で数時間釣り、その後ウェーディングで数時間釣り腹立ったので帰り道のおかっぱりポイントで数時間釣り。 結果。次の日から腰から異音と、ただ座っているだけで腹がたって腹がたってしょ …

no image

XSSで儲ける?

以下の妄想にはバグがありましたので修正を行いました。 20070201・ノートパソコン20万円なりを20個購入する  → 登録されてるカードがそこまで与信枠があるとは思えませんね。はい。     2個 …

no image

おっぎー

PHP Design Patterns (Deutsche Ausgabe) Stephan Schmidt 明日ちら見頼む。 唐突に引用小野和俊のブログ:デザインパターンというものはhttp://b …

no image

日本ふるさと沈没

日本ふるさと沈没 鶴田 謙二 他 これはすごい 執筆陣の頭悪さが最高だ。 【北海道】吾妻ひでお、あさりよしとお、唐沢なをき 【東北】遠藤浩輝 【関東】西島大介、伊藤伸平 【北陸/甲信越】米村孝一郎 【 …

no image

サントリーRED

僕は味がわからない子なのかもしれない。 サントリー RED サントリーの誇るエントリーウィスキー「RED」これのストレートが意外といけてしまったのだ。高いのばかり飲んでいたので、たまにはエントリーモデ …

第一精工の高速リサイクラーはすべての釣り人の必需品だと思っています。糸の巻き替え、巻き直しにこれが在るのと無いのでは天地の差があります!

シマノの防水クッションは、すべての時期で船釣りのオトモ。一番小さいサイズで大抵大丈夫です。冷えから守ってくれたり、エンジンの振動から守ってくれたり、寝るときに枕になります。

%d人のブロガーが「いいね」をつけました。