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 ...@@ -235,6 +235,23 @@ assert('class to return the last value') do
assert_equal(m, :m) assert_equal(m, :m)
end 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 assert('Class#inherited') do
class Foo class Foo
@@subclass_name = nil @@subclass_name = nil
...@@ -260,25 +277,40 @@ assert('Class#inherited') do ...@@ -260,25 +277,40 @@ assert('Class#inherited') do
end end
assert('singleton tests') do assert('singleton tests') do
module FooMod
def run_foo_mod
100
end
end
bar = String.new bar = String.new
baz = class << bar baz = class << bar
extend FooMod
def self.run_baz def self.run_baz
200 200
end end
end end
assert_false baz.singleton_methods.include? :run_foo_mod
assert_false baz.singleton_methods.include? :run_baz 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 assert_raise(NoMethodError, 'should raise NoMethodError') do
baz.run_baz baz.run_baz
end end
assert_raise(NoMethodError, 'should raise NoMethodError') do
bar.run_foo_mod
end
assert_raise(NoMethodError, 'should raise NoMethodError') do assert_raise(NoMethodError, 'should raise NoMethodError') do
bar.run_baz bar.run_baz
end end
baz = class << bar baz = class << bar
extend FooMod
def self.run_baz def self.run_baz
300 300
end end
...@@ -286,9 +318,44 @@ assert('singleton tests') do ...@@ -286,9 +318,44 @@ assert('singleton tests') do
end end
assert_true baz.singleton_methods.include? :run_baz 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_equal 300, baz.run_baz
assert_raise(NoMethodError, 'should raise NoMethodError') do
bar.run_foo_mod
end
assert_raise(NoMethodError, 'should raise NoMethodError') do assert_raise(NoMethodError, 'should raise NoMethodError') do
bar.run_baz bar.run_baz
end 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 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