diff options
author | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-10-07 06:27:11 +0000 |
---|---|---|
committer | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-10-07 06:27:11 +0000 |
commit | cd8d08b5329fd86660cced8a5b91c4a042f2e2a0 (patch) | |
tree | 9be66a2d0ca34f17a0c52b1616bffa570a28264a /test/ruby | |
parent | 0a5f6fd37d7b83dd78adfbaecb050fd3cc4fb3e9 (diff) | |
download | ruby-cd8d08b5329fd86660cced8a5b91c4a042f2e2a0.tar.gz |
* test/ruby/test_beginendblock.rb: add tests for nested BEGIN/END.
* test/ruby/beginmainend.rb: add tests for nested BEGIN/END.
* test/ruby/endblockwarn.rb: new file added to test of END-in-method warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4716 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby')
-rw-r--r-- | test/ruby/beginmainend.rb | 50 | ||||
-rw-r--r-- | test/ruby/endblockwarn.rb | 26 | ||||
-rw-r--r-- | test/ruby/test_beginendblock.rb | 48 | ||||
-rw-r--r-- | test/ruby/test_float.rb | 5 |
4 files changed, 110 insertions, 19 deletions
diff --git a/test/ruby/beginmainend.rb b/test/ruby/beginmainend.rb index 4710a7aeb1..f096b96fbc 100644 --- a/test/ruby/beginmainend.rb +++ b/test/ruby/beginmainend.rb @@ -1,25 +1,31 @@ +errout = ARGV.shift + BEGIN { - puts "begin1" + puts "b1" local_begin1 = "local_begin1" $global_begin1 = "global_begin1" ConstBegin1 = "ConstBegin1" } BEGIN { - puts "begin2" + puts "b2" + + BEGIN { + puts "b2-1" + } } # for scope check raise if defined?(local_begin1) raise unless defined?($global_begin1) raise unless defined?(::ConstBegin1) -local_for_end2 = "end2" -$global_for_end1 = "end1" +local_for_end2 = "e2" +$global_for_end1 = "e1" puts "main" END { - puts local_for_end2 + puts local_for_end2 # e2 } END { @@ -29,27 +35,51 @@ END { eval <<EOE BEGIN { - puts "innerbegin1" + puts "b3" + + BEGIN { + puts "b3-1" + } } BEGIN { - puts "innerbegin2" + puts "b4" } END { - puts "innerend2" + puts "e3" } END { - puts "innerend1" + puts "e4" + + END { + puts "e4-1" + + END { + puts "e4-1-1" + } + } + + END { + puts "e4-2" + } } EOE END { exit puts "should not be dumped" + + END { + puts "not reached" + } } END { - puts $global_for_end1 + puts $global_for_end1 # e1 + + END { + puts "e1-1" + } } diff --git a/test/ruby/endblockwarn.rb b/test/ruby/endblockwarn.rb new file mode 100644 index 0000000000..8da5c241ee --- /dev/null +++ b/test/ruby/endblockwarn.rb @@ -0,0 +1,26 @@ +BEGIN { + if errout = ARGV.shift + dir = File.dirname(File.expand_path(__FILE__)) + basename = File.basename(__FILE__) + require "#{dir}/envutil" + STDERR.reopen(File.open(errout, "w")) + STDERR.sync = true + Dir.chdir(dir) + cmd = "\"#{EnvUtil.rubybin}\" \"#{basename}\"" + exec(cmd) + exit!("must not reach here") + end +} + +def end1 + END {} +end + +end1 + +eval <<EOE + def end2 + END {} + end +EOE + diff --git a/test/ruby/test_beginendblock.rb b/test/ruby/test_beginendblock.rb index 2e1940f0b7..202a8080ae 100644 --- a/test/ruby/test_beginendblock.rb +++ b/test/ruby/test_beginendblock.rb @@ -1,27 +1,57 @@ require 'test/unit' +require 'tempfile' require "#{File.dirname(File.expand_path(__FILE__))}/envutil" class TestBeginEndBlock < Test::Unit::TestCase DIR = File.dirname(File.expand_path(__FILE__)) + def q(content) + "\"#{content}\"" + end + def test_beginendblock ruby = EnvUtil.rubybin - io = IO.popen("\"#{ruby}\" \"#{DIR}/beginmainend.rb\"") - assert_equal(%w(begin1 begin2 main innerbegin1 innerbegin2 end1 innerend1 innerend2 end2).join("\n") << "\n", io.read) + target = File.join(DIR, 'beginmainend.rb') + io = IO.popen("#{q(ruby)} #{q(target)}") + assert_equal(%w(b1 b2-1 b2 main b3-1 b3 b4 e1 e4 e3 e2 e4-2 e4-1 e1-1 e4-1-1), io.read.split) + io.close end def test_begininmethod assert_raises(SyntaxError) do eval("def foo; BEGIN {}; end") end - end - def test_endinmethod - verbose, $VERBOSE = $VERBOSE, nil - assert_nothing_raised(SyntaxError) do - eval("def foo; END {}; end") + assert_raises(SyntaxError) do + eval('eval("def foo; BEGIN {}; end")') end - ensure - $VERBOSE = verbose + end + + def test_endblockwarn + ruby = EnvUtil.rubybin + # Use Tempfile to create temporary file path. + launcher = Tempfile.new(self.class.name) + errout = Tempfile.new(self.class.name) + + launcher << <<EOF +errout = ARGV.shift +STDERR.reopen(File.open(errout, "w")) +STDERR.sync = true +Dir.chdir(#{q(DIR)}) +cmd = "\\"#{ruby}\\" \\"endblockwarn.rb\\"" +exec(cmd) +exit!("must not reach here") +EOF + launcher.close + launcherpath = launcher.path + errout.close + erroutpath = errout.path + system("#{q(ruby)} #{q(launcherpath)} #{q(erroutpath)}") + expected = <<EOW +endblockwarn.rb:16: warning: END in method; use at_exit +(eval):2: warning: END in method; use at_exit +EOW + assert_equal(expected, File.read(erroutpath)) + # expecting Tempfile to unlink launcher and errout file. end end diff --git a/test/ruby/test_float.rb b/test/ruby/test_float.rb index dba3f6b5a9..b023a9fb23 100644 --- a/test/ruby/test_float.rb +++ b/test/ruby/test_float.rb @@ -13,6 +13,9 @@ class TestFloat < Test::Unit::TestCase assert_equal(3, 2.6.round) assert_equal(-2, (-2.4).truncate) assert((13.4 % 1 - 0.4).abs < 0.0001) + end + + def test_nan nan = 0.0/0 def nan.test(v) extend Test::Unit::Assertions @@ -36,7 +39,9 @@ class TestFloat < Test::Unit::TestCase nan.test(-0.001); nan.test(1.0/0); nan.test(-1.0/0); + end + def test_precision #s = "3.7517675036461267e+17" #assert(s == sprintf("%.16e", s.to_f)) f = 3.7517675036461267e+17 |