mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 237162a3b1
			
		
	
	
		237162a3b1
		
	
	
	
	
		
			
			* test/ruby/test_variable.rb (ruler4): suppress warning. (test_global_variable_poped, test_constant_poped): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48540 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			121 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require 'test/unit'
 | |
| 
 | |
| class TestVariable < Test::Unit::TestCase
 | |
|   class Gods
 | |
|     @@rule = "Uranus"
 | |
|     def ruler0
 | |
|       @@rule
 | |
|     end
 | |
| 
 | |
|     def self.ruler1		# <= per method definition style
 | |
|       @@rule
 | |
|     end
 | |
|     class << self			# <= multiple method definition style
 | |
|       def ruler2
 | |
| 	@@rule
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   module Olympians
 | |
|     @@rule ="Zeus"
 | |
|     def ruler3
 | |
|       @@rule
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   class Titans < Gods
 | |
|     @@rule = "Cronus"			# modifies @@rule in Gods
 | |
|     include Olympians
 | |
|     def ruler4
 | |
|       EnvUtil.suppress_warning {
 | |
|         @@rule
 | |
|       }
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def test_variable
 | |
|     assert_instance_of(Fixnum, $$)
 | |
| 
 | |
|     # read-only variable
 | |
|     assert_raise(NameError) do
 | |
|       $$ = 5
 | |
|     end
 | |
|     assert_normal_exit("$*=0; $*", "[ruby-dev:36698]")
 | |
| 
 | |
|     foobar = "foobar"
 | |
|     $_ = foobar
 | |
|     assert_equal(foobar, $_)
 | |
| 
 | |
|     assert_equal("Cronus", Gods.new.ruler0)
 | |
|     assert_equal("Cronus", Gods.ruler1)
 | |
|     assert_equal("Cronus", Gods.ruler2)
 | |
|     assert_equal("Cronus", Titans.ruler1)
 | |
|     assert_equal("Cronus", Titans.ruler2)
 | |
|     atlas = Titans.new
 | |
|     assert_equal("Cronus", atlas.ruler0)
 | |
|     assert_equal("Zeus", atlas.ruler3)
 | |
|     assert_equal("Cronus", atlas.ruler4)
 | |
|     assert_nothing_raised do
 | |
|       class << Gods
 | |
|         defined?(@@rule) && @@rule
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def test_local_variables
 | |
|     lvar = 1
 | |
|     assert_instance_of(Symbol, local_variables[0], "[ruby-dev:34008]")
 | |
|     lvar
 | |
|   end
 | |
| 
 | |
|   def test_local_variables2
 | |
|     x = 1
 | |
|     proc do |y|
 | |
|       assert_equal([:x, :y], local_variables.sort)
 | |
|     end.call
 | |
|     x
 | |
|   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
 | |
|     x
 | |
|   end
 | |
| 
 | |
|   def test_shadowing_local_variables
 | |
|     bug9486 = '[ruby-core:60501] [Bug #9486]'
 | |
|     x = tap {|x| break local_variables}
 | |
|     assert_equal([:x, :bug9486], x)
 | |
|   end
 | |
| 
 | |
|   def test_shadowing_block_local_variables
 | |
|     bug9486 = '[ruby-core:60501] [Bug #9486]'
 | |
|     x = tap {|;x| break local_variables}
 | |
|     assert_equal([:x, :bug9486], x)
 | |
|   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 {
 | |
|       EnvUtil.suppress_warning {
 | |
|         eval("$foo; 1")
 | |
|       }
 | |
|     }
 | |
|   end
 | |
| 
 | |
|   def test_constant_poped
 | |
|     assert_nothing_raised {
 | |
|       EnvUtil.suppress_warning {
 | |
|         eval("TestVariable::Gods; 1")
 | |
|       }
 | |
|     }
 | |
|   end
 | |
| end
 |