mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge pull request #1626 from carsonmcdonald/moreclasstests
More tests for Class behavior
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user