[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:003723] Re: numru-units on ruby 2.1
- To: toyoda@xxxxxxxxxxxxxxxx, toyoda.eizi@xxxxxxxxx
- Subject: [dennou-ruby:003723] Re: numru-units on ruby 2.1
- From: Shin-ya Murakami <murashin@xxxxxxxxxxxxxx>
- Date: Mon, 28 Apr 2014 00:54:57 +0900 (JST)
- Cc: dennou-ruby@xxxxxxxxxxx
豊田さま、堀之内さま、
村上真也です。
とりあえず、ruby 1.9.3, 2.0.0 でもテストは通りません。
以下のようにして、ちょっとテストを書き換えると少し進みますが、
----ここから----
$ diff -u numru-units-1.7/src/test.rb numru-units/src/test.rb
--- numru-units-1.7/src/test.rb 2004-03-01 13:45:28.000000000 +0900
+++ numru-units/src/test.rb 2014-04-28 00:44:06.880925724 +0900
@@ -8,7 +8,7 @@
puts "=== reduce1 ==="
-assert Units.new('').reduce1.to_s, ""
+assert Units.new('').reduce1.to_s, "1"
assert Units.new('m').reduce1.to_s, "m"
assert Units.new('3').reduce1.to_s, "3"
assert Units.new('3.14').reduce1.to_s, "3.14"
@@ -75,18 +75,18 @@
assert Units.new('km2').reduce4.to_s, "km2"
assert Units.new('hours.hour').reduce4.to_s, "hour2"
assert Units.new('(10)^2').reduce4.to_s, "100"
-assert Units.new('100/10').reduce4.to_s, "10.0"
-assert Units.new('(10)^2/100').reduce4.to_s, "1.0"
+assert Units.new('100/10').reduce4.to_s, "10"
+assert Units.new('(10)^2/100').reduce4.to_s, "1"
puts "=== reduce5 ==="
assert Units.new('km2').reduce5.to_s, "1000000 m2"
-assert Units.new('(10)^2/100').reduce5.to_s, "1.0"
+assert Units.new('(10)^2/100').reduce5.to_s, "1"
assert Units.new('hPa').reduce5.to_s, "100 kg.m-1 s-2"
-assert Units.new('mb').reduce5.to_s, "100.0 kg.m-1 s-2"
+assert Units.new('mb').reduce5.to_s, "100 kg.m-1 s-2"
-assert Units.new('hPa/mb').reduce5.to_s, "1.0"
+assert Units.new('hPa/mb').reduce5.to_s, "1"
assert Units.new('(K @ 273.15)@ 10').reduce5.to_s, "(K @ 283.15)"
----ここまで----
$ ruby19 /home/murashin/software/lib/ruby/site_ruby/1.9.1/numru/units.rb
中略
=== APPLICATIONS ===
ok 4900
/home/murashin/software/lib/ruby/site_ruby/1.9.1/numru/units.rb:3387:in `assert': "273.15000000000003" != "273.15" (RuntimeError)
from /home/murashin/software/lib/ruby/site_ruby/1.9.1/numru/units.rb:3478:in `<main>'
となってダメです。
# 浮動小数点数を含むテストは難しいような...?(1.8.7では通る(なんで?))
From: Eizi TOYODA <toyoda.eizi@xxxxxxxxx>
Date: Mon, 28 Apr 2014 00:20:18 +0900
> 村上さま
>
> 今回はたまたま気が付きました。
> そのうち見られれば見ます。 まあ、Ruby 2.1 となるとどこにも使える環境はありませんし、正直いつになるやら。
>
> 豊田拝
>
> from android phone
> 2014/04/27 20:52 "Shin-ya Murakami" <murashin@xxxxxxxxxxxxxx>:
>
>> 堀之内さま、豊田さま、
>>
>> 村上真也です。
>>
>> # 気づいてもらいやすいように豊田さんをToに入れてみました。
>>
>> 私も見てみましたが、よく分かりませんでした。
>>
>> ところで(こちらが本題)、http://ruby.gfd-dennou.org/ml/index-j.htm
>> に2014年のエントリがありませんね。私はrubyグループに入っていなくて
>> 編集できないので、どなたかよろしくお願い致します。
>>
>> From: Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxx>
>> Date: Thu, 10 Apr 2014 11:12:33 +0900
>>
>> > 堀之内です。
>> >
>> > どうやら Ruby 2.1 では単位ライブラリ numru-units がうまく動かない
>> > ようです(先日の "1" 問題とは別)。Racc でうまく行ってないよう
>> > なので,調査は難航しそうです。どなたか見当がつくと嬉しいのですが...
>> > > 豊田さん,時間取れないですかね。
>> >
>> > お試し用に電脳 K の私のホームの下
>> > (/home/horinout/tmp/ruby2.1/bin/)に ruby 2.1.1 をインストール
>> > してありますので (nurmu-unitsはgemでいれてある),アカウントの
>> > ある方は試していただけます。
>> >
>> > 以下実行例です。
>> >
>> > ● ruby 2.0 だと(問題なし):
>> >
>> > $ ruby --version
>> > ruby 2.0.0p451 (2014-02-24 revision 45167) [i686-linux]
>> > $ ruby -r numru/units -e "u=NumRu::Units['m/s']; u2=NumRu::Units['s'];
>> puts u*u2"
>> > m
>> >
>> > ● ruby 2.0 だと(問題あり):
>> >
>> > $ use_ruby 2.1
>> > ruby 2.1.1p76 (2014-02-24 revision 45161) [i686-linux]
>> > $ ruby -r numru/units -e "u=NumRu::Units['m/s'];
>> > u2=NumRu::Units['s']; puts u*u2"
>> > /opt/ruby2.1/lib/ruby/site_ruby/2.1.0/numru/units.rb:209:in
>> `foldnumber': undefined method `foldnumber' for
>> Error[m/s]:NumRu::Units::ErrorNode (NoMethodError)
>> > from /opt/ruby2.1/lib/ruby/site_ruby/2.1.0/numru/units.rb:139:in
>> `reduce4'
>> > from /opt/ruby2.1/lib/ruby/site_ruby/2.1.0/numru/units.rb:2611:in
>> `binop'
>> > from /opt/ruby2.1/lib/ruby/site_ruby/2.1.0/numru/units.rb:2616:in
>> `*'
>> > from -e:1:in `<main>'
>> >
>> > このように演算がうまく行きません。これはパースがうまくいかない
>> > からです:
>> >
>> > $ ruby -r numru/units -e "u=NumRu::Units['m']; p u.do_parse2,
>> > u.do_parse2.class"
>> > Error[m]
>> > NumRu::Units::ErrorNode
>> >
>> > ここで,do_parse2 メソッドは Racc に投げた parse 処理の
>> > 結果が nil なので ErrorNode なるものを返してます。だから
>> > 問題はなんでちゃんと parse されないかということなんですが...。
>> >
>> > 堀之内 武
>> ----
>> Shin-ya Murakami
>> email: murashin@xxxxxxxxxxxxxx
>> WWW: http://www.gfd-dennou.org/member/murashin/
----
Shin-ya Murakami
email: murashin@xxxxxxxxxxxxxx
WWW: http://www.gfd-dennou.org/member/murashin/