diff options
Diffstat (limited to 'test/ruby/test_variable.rb')
| -rw-r--r-- | test/ruby/test_variable.rb | 47 |
1 files changed, 43 insertions, 4 deletions
diff --git a/test/ruby/test_variable.rb b/test/ruby/test_variable.rb index 8726160826..53e00301dc 100644 --- a/test/ruby/test_variable.rb +++ b/test/ruby/test_variable.rb @@ -1,4 +1,5 @@ require 'test/unit' +require_relative 'envutil' class TestVariable < Test::Unit::TestCase class Gods @@ -25,17 +26,21 @@ class TestVariable < Test::Unit::TestCase end class Titans < Gods - @@rule = "Cronus" - include Olympians # OK to cause warning (intentional) + @@rule = "Cronus" # modifies @@rule in Gods + include Olympians + def ruler4 + @@rule + end end def test_variable assert_instance_of(Fixnum, $$) - + # read-only variable - assert_raises(NameError) do + assert_raise(NameError) do $$ = 5 end + assert_normal_exit("$*=0; $*", "[ruby-dev:36698]") foobar = "foobar" $_ = foobar @@ -49,5 +54,39 @@ class TestVariable < Test::Unit::TestCase atlas = Titans.new assert_equal("Cronus", atlas.ruler0) assert_equal("Zeus", atlas.ruler3) + assert_equal("Cronus", atlas.ruler4) + end + + def test_local_variables + lvar = 1 + assert_instance_of(Symbol, local_variables[0], "[ruby-dev:34008]") + end + + def test_local_variables2 + x = 1 + proc do |y| + assert_equal([:x, :y], local_variables.sort) + end.call + end + + def test_local_variables3 + x = 1 + proc do |y| + 1.times do |z| + assert_equal([:x, :y, :z], local_variables.sort) + end + end.call + end + + def test_global_variable_0 + assert_in_out_err(["-e", "$0='t'*1000;print $0"], "", /\At+\z/, []) + end + + def test_global_variable_poped + assert_nothing_raised { eval("$foo; 1") } + end + + def test_constant_poped + assert_nothing_raised { eval("TestVariable::Gods; 1") } end end |
