只今Ruby勉強中

プログラミングRuby―達人プログラマーガイド

うさぎさんと一緒にRubyの勉強をしているオレの記録。

間違ってる所とかいっぱいあると思いますけど、誰でもコメント出来るので気軽に教えて下さい。

普段は 鷹の島 って所で書いてます。

現在のハマリポイント - yield, succ?, Proc & 後で

2007-01-08 (Mon)

Test::Base でハッシュ操作の練習問題 00:06  Test::Base でハッシュ操作の練習問題 - 只今Ruby勉強中 を含むブックマーク

昔やった ハッシュ操作の練習問題Test::Base を使って書き直してみました。

#! /usr/bin/env ruby

require 'test/base'

$KCODE = 'e'

class Str2hashTest < Test::Base
   filters :str => %w(str2hash),
            :result => %w(yaml)
   run_equal :str, :result
end

def str2hash(str)
   ret = Hash.new
   arr = str.split(/\s+/)
   while arr.size > 0
      key = arr.shift
      val = arr.shift
      ret[key] = val
   end
   ret
end

__END__
===
--- str: blue 青 white 白 red 赤
--- result
blue: 青
white: 白
red: 赤

===
--- str: hoge fuga test ueue
--- result
hoge: fuga
test: ueue

ハッシュとかどうすんのかわかんなくて困りましたが、どうも yaml で書けるっぽいのでそれでやってみた。str の中に\nを書いてもエスケープされちゃうので前回と値が違うけど、書き方工夫すれば改行も渡せるだろうしまぁいいでしょう。

さて実行結果。

Loaded suite nhash
Started
..
Finished in 0.012705 seconds.

2 tests, 2 assertions, 0 failures, 0 errors

こんな入力と出力をチェックするだけのプログラムでしかないけど、Test::Unit と大分違うのがわかる。すっきり書けていいなぁ。テスト用のデータ用意するのがすごい楽になりそうだ。いちいちハッシュとか配列とか書くのめんどくさいもんね。

トラックバック - http://rubyist.g.hatena.ne.jp/gaba/20070108