gmcl.pl の動作検証、完了
【 賀 】
ここでは、テストコードと、その実行例だけ載せる。
テストコード:
#!/usr/bin/perl # undef-chk2.pl (gmcl.pl の挙動をチェック) # 引数(座標データ)が『undef』、もしくは『長さ 0』の # 挙動をチェックするテストコード【其ノ2】(コピペ多用) # フィクスの目的: # # undef:何もしない (グラフィックコマンドの場合) # 長さ0:座標の点を打つ (circle のみ例外 → 何もしない) use strict; use warnings; require "txt_draw.pl"; require "gmcl.pl"; # 変数初期化 @gmcl::x = (); @gmcl::y = (); my $str = ""; my $spc = ""; my $icode = ""; my $del_or_shift = "shift"; my ($x0, $y0, $x1, $y1, $r, $t, $closed); # 最初は undef ;### 14: circle (真円、円弧を描く) # circle では『undef』『長さ 0』、共に『何もしない』 # 書式1:gmcl::circle($x0, $y0, $r); # 真円を描く print "# circle(書式1): undef\n"; gmcl::circle($x0, $y0, $r); my @x = @gmcl::x; my @y = @gmcl::y; txt_draw::run(\@x, \@y, $str, $spc, $del_or_shift); print "# circle(書式1): 長さ0\n"; gmcl::circle(1, 1, 0); @x = @gmcl::x; @y = @gmcl::y; txt_draw::run(\@x, \@y, $str, $spc, $del_or_shift); my ($x2, $y2, $start, $end); # 最初は undef # 書式2:($x2, $y2, $start, $end, $r) = # gmcl::circle($x0, $y0, $x1, $y1, $t, $closed); # 円弧を描く print "# circle(書式2): undef\n"; ($x2, $y2, $start, $end, $r) = gmcl::circle($x0, $y0, $x1, $y1, $t, $closed); print "ret:($x2, $y2, $start, $end, $r)\n"; @x = @gmcl::x; @y = @gmcl::y; txt_draw::run(\@x, \@y, $str, $spc, $del_or_shift); print "# circle(書式2): 長さ0\n"; ($x2, $y2, $start, $end, $r) = gmcl::circle(1, 1, 1, 1, $t, $closed); print "ret:($x2, $y2, $start, $end, $r)\n"; @x = @gmcl::x; @y = @gmcl::y; txt_draw::run(\@x, \@y, $str, $spc, $del_or_shift); ;### 15: circle0 (真円、楕円、円弧を描く…昔の circle 文) # 書式:($x2, $y2, $x1, $y1) = # &gmcl::circle0($x0, $y0, $r, $ratio, $start, $end, $closed); my $ratio; # 最初は undef $x2 = $y2 = $x1 = $y1 = undef; $x0 = $y0 = $r = $start = $end = $closed = undef; print "# circle0: undef\n"; ($x2, $y2, $x1, $y1) = gmcl::circle0($x0, $y0, $r, $ratio, $start, $end, $closed); print "ret:($x2, $y2, $x1, $y1)\n"; @x = @gmcl::x; @y = @gmcl::y; txt_draw::run(\@x, \@y, $str, $spc, $del_or_shift); print "# circle0: 長さ0\n"; ($x2, $y2, $x1, $y1) = gmcl::circle0(1, 1, 0, 1, $start, $end, $closed); print "ret:($x2, $y2, $x1, $y1)\n"; @x = @gmcl::x; @y = @gmcl::y; txt_draw::run(\@x, \@y, $str, $spc, $del_or_shift); ;### 16: rad_lines (放射状の線を引く... radial lines) # 書式:($x, $y) = # gmcl::rad_lines($x0, $y0, $r[, $many, $itv, $ratio, $start, $t]); my ($many, $itv, $x, $y); # 最初は undef $x0 = $y0 = $r = $start = $t = $ratio = undef; print "# rad_lines: undef\n"; ($x, $y) = gmcl::rad_lines($x0, $y0, $r, $many, $itv, $ratio, $start, $t); print "ret:($x, $y)\n"; @x = @gmcl::x; @y = @gmcl::y; txt_draw::run(\@x, \@y, $str, $spc, $del_or_shift); print "# rad_lines: 長さ0\n"; ($x, $y) = gmcl::rad_lines(1, 1, 0, $many, $itv, $ratio, $start, $t); print "ret:($x, $y)\n"; @x = @gmcl::x; @y = @gmcl::y; txt_draw::run(\@x, \@y, $str, $spc, $del_or_shift); ;### 17: not (論理演算的な反転) # 書式:gmcl::not(\@x, \@y[, $x0, $y0, $x1, $y1, $opt]); my $opt; @x = @y = @gmcl::x = @gmcl::y = (); $x0 = $y0 = $x1 = $y1 = undef; print "# not: undef\n"; gmcl::not(\@x, \@y, $x0, $y0, $x1, $y1, $opt); txt_draw::run(\@x, \@y, $str, $spc, $del_or_shift); print "# not: 反転矩形範囲の面積が『点』(長さ、面積が 0)\n"; @x = @y = (0,1,2,3,4); # 今度は undef ではない gmcl::not(\@x, \@y, 2, 2, 2, 2, 1); # $opt = 1 : 座標(2,2)だけ反転する txt_draw::run(\@x, \@y, $str, $spc, $del_or_shift); ;### 18: true_or_not (引数が "" or undef なら 偽、それ以外なら真を返す) # 検証不要(他の関数に組み込んで動作確認済み) ;### 19: round (端数を四捨五入して整数化) # 書式:$int = gmcl::round($float); (scalar) # 書式:@int = gmcl::round(@float); (array, list) print "# round: undef\n"; my ($int, @int); $x0 = $y0 = $x1 = $y1 = undef; @int = gmcl::round($x0, $y0, $x1, $y1); print "int: ", join(", ", @int), "\n\n"; print "# round: TEST\n"; print "float: 3.4, 3.5, -3.4, -3.5\n"; @int = gmcl::round(3.4, 3.5, -3.4, -3.5); print "int : ", join(", ", @int), "\n\n"; ### 20: cat_yx (y,x の順番で、連結して格納)(重複座標も除去) # 検証不要(他の関数に組み込んで動作確認済み) my $time = localtime; print "\n実行時刻: $time\n"; __END__
実行結果:
# circle(書式1): undef # circle(書式1): 長さ0 # circle(書式2): undef ret:(, , , , ) # circle(書式2): 長さ0 ret:(, , , , ) # circle0: undef ret:(, , , ) # circle0: 長さ0 ret:(1, 1, 1, 1) * # rad_lines: undef ret:(, ) # rad_lines: 長さ0 ret:(1, 1) * # not: undef # not: 反転矩形範囲の面積が『点』(長さ、面積が 0) * * * * # round: undef int: 0, 0, 0, 0 # round: TEST float: 3.4, 3.5, -3.4, -3.5 int : 3, 4, -3, -4 実行時刻: Mon Jan 16 02:30:29 2012
修正に伴い、過去のテストコードも動作チェックした。特に問題はないみたい。なので、ダイアリーの方で最新版を公開する。しばしお待ちを。。。