テストを書かねばなりません

わかってたことだが役判定は結構なパターンがあるので
チェックが必要かしら。Test::Moreなどを調べ中。
 
Test::More 真偽値、数値や文字列の比較を行う関数 - Perl入門〜サンプルコードによるPerl入門〜
http://d.hatena.ne.jp/perlcodesample/20090221/1234103071
Perl のテストについて - tsucchiの日記
http://d.hatena.ne.jp/tsucchi1022/20081002/1222952385
Test::More で no_plan が良くない訳 - tsucchiの日記
http://d.hatena.ne.jp/tsucchi1022/20090812/1250090372
パッケージとモジュール [Perl講座 -Smart]
http://www.rfs.jp/sb/perl/04/01.html
[perl] 一次元配列同士の比較のいろいろなやり方 - harupiyoの日記
http://d.hatena.ne.jp/harupiyo/20090201
Test::More - テストを書くためのもう一つのフレームワーク
http://perldoc.jp/docs/modules/Test-Simple-0.47/More.pod
 
テストを書いてみた
hantei.t - majan-perl - Project Hosting on Google Code
http://code.google.com/p/majan-perl/source/browse/trunk/t/hantei.t

 
コミケ一日目が終わったらしい。
勇者の方々乙であります。
今日は一日麻雀したり、麻雀したり、書いたり、ハルヒ見たり、
偽物語読み始めたりとひきこもっておりました。

# 平和
# 
# m2m3m4m2m3m4m2m3m4p2p3p4m5m5 m2
# @$mentsu =
# m5,m5
# m2,m3,m4
# m2,m3,m4
# m2,m3,m4
# p2,p3,p4
sub is_pinhu
{
  my ($mentsu, $agari_hai) = @_;
  my $rc = 1;
  
  foreach my $line ( @$mentsu ) {
    my ($first, $second, $third) = split /\,/, $line;
    unless (defined $third) {
      # 頭が上がり牌は成立しない
      if ($agari_hai eq $first) {
        $rc = 0;
        last;
      }
      next;
    }
    
    # 刻子は成立しない
    if ($first eq $second) {
      $rc = 0;
      last;
    }
    
    # 字牌は成立しない
    if ($line =~ /z/) {
      $rc = 0;
      last;
    }
    
    # 両面待ちしかダメ
    if ($second eq $agari_hai) {
      $rc = 0;
      last;
    }
    
  }
  return $rc;
}

# タンヤオ
sub is_tanyao
{
  my ($mentsu) = @_;
  my $rc=1;
  
  foreach my $line ( @$mentsu ) {
    $rc = 0 if ($line =~ /1|9|z/);
  }
  
  return $rc;
}

タンヤオ簡単でよかった。