32 lines
976 B
Ruby
32 lines
976 B
Ruby
require 'abstract_unit'
|
|
require 'active_support/core_ext/object'
|
|
|
|
class ObjectInstanceVariableTest < ActiveSupport::TestCase
|
|
def setup
|
|
@source, @dest = Object.new, Object.new
|
|
@source.instance_variable_set(:@bar, 'bar')
|
|
@source.instance_variable_set(:@baz, 'baz')
|
|
end
|
|
|
|
def test_instance_variable_names
|
|
assert_equal %w(@bar @baz), @source.instance_variable_names.sort
|
|
end
|
|
|
|
def test_instance_values
|
|
assert_equal({'bar' => 'bar', 'baz' => 'baz'}, @source.instance_values)
|
|
end
|
|
|
|
def test_instance_exec_passes_arguments_to_block
|
|
assert_equal %w(hello goodbye), 'hello'.instance_exec('goodbye') { |v| [self, v] }
|
|
end
|
|
|
|
def test_instance_exec_with_frozen_obj
|
|
assert_equal %w(olleh goodbye), 'hello'.freeze.instance_exec('goodbye') { |v| [reverse, v] }
|
|
end
|
|
|
|
def test_instance_exec_nested
|
|
assert_equal %w(goodbye olleh bar), 'hello'.instance_exec('goodbye') { |arg|
|
|
[arg] + instance_exec('bar') { |v| [reverse, v] } }
|
|
end
|
|
end
|