summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authornahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-10-07 06:27:11 +0000
committernahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-10-07 06:27:11 +0000
commitcd8d08b5329fd86660cced8a5b91c4a042f2e2a0 (patch)
tree9be66a2d0ca34f17a0c52b1616bffa570a28264a /test/ruby
parent0a5f6fd37d7b83dd78adfbaecb050fd3cc4fb3e9 (diff)
* 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.rb50
-rw-r--r--test/ruby/endblockwarn.rb26
-rw-r--r--test/ruby/test_beginendblock.rb48
-rw-r--r--test/ruby/test_float.rb5
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