Commit 70d6d04c authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto

Merge pull request #1626 from carsonmcdonald/moreclasstests

More tests for Class behavior
parents ced2f044 0b8e342d
......@@ -235,6 +235,23 @@ assert('class to return the last value') do
assert_equal(m, :m)
end
assert('raise when superclass is not a class') do
module FirstModule; end
assert_raise(TypeError, 'should raise TypeError') do
class FirstClass < FirstModule; end
end
class SecondClass; end
assert_raise(TypeError, 'should raise TypeError') do
class SecondClass < false; end
end
class ThirdClass; end
assert_raise(TypeError, 'should raise TypeError') do
class ThirdClass < ThirdClass; end
end
end
assert('Class#inherited') do
class Foo
@@subclass_name = nil
......@@ -260,25 +277,40 @@ assert('Class#inherited') do
end
assert('singleton tests') do
module FooMod
def run_foo_mod
100
end
end
bar = String.new
baz = class << bar
extend FooMod
def self.run_baz
200
end
end
assert_false baz.singleton_methods.include? :run_foo_mod
assert_false baz.singleton_methods.include? :run_baz
assert_raise(NoMethodError, 'should raise NoMethodError') do
baz.run_foo_mod
end
assert_raise(NoMethodError, 'should raise NoMethodError') do
baz.run_baz
end
assert_raise(NoMethodError, 'should raise NoMethodError') do
bar.run_foo_mod
end
assert_raise(NoMethodError, 'should raise NoMethodError') do
bar.run_baz
end
baz = class << bar
extend FooMod
def self.run_baz
300
end
......@@ -286,9 +318,44 @@ assert('singleton tests') do
end
assert_true baz.singleton_methods.include? :run_baz
assert_true baz.singleton_methods.include? :run_foo_mod
assert_equal 100, baz.run_foo_mod
assert_equal 300, baz.run_baz
assert_raise(NoMethodError, 'should raise NoMethodError') do
bar.run_foo_mod
end
assert_raise(NoMethodError, 'should raise NoMethodError') do
bar.run_baz
end
fv = false
class << fv
def self.run_false
5
end
end
nv = nil
class << nv
def self.run_nil
6
end
end
tv = true
class << tv
def self.run_nil
7
end
end
assert_raise(TypeError, 'should raise TypeError') do
num = 1.0
class << num
def self.run_nil
7
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment