2010-07-27 23:32:10 +00:00
|
|
|
require('MiddleClass')
|
|
|
|
|
2010-07-22 22:56:40 +00:00
|
|
|
context( 'subclassOf', function()
|
|
|
|
|
|
|
|
context( 'Primitives', function()
|
|
|
|
local primitives = {nil, 1, 'hello', {}, function() end}
|
|
|
|
|
|
|
|
for _,primitive in pairs(primitives) do
|
|
|
|
local theType = type(primitive)
|
|
|
|
context('A ' .. theType, function()
|
|
|
|
|
|
|
|
local f1 = function() return subclassOf(Object, primitive) end
|
|
|
|
local f2 = function() return subclassOf(primitive, o) end
|
|
|
|
local f3 = function() return subclassOf(primitive, primitive) end
|
|
|
|
|
|
|
|
context('it should not throw errors', function()
|
|
|
|
test('subclassOf(Object, '.. theType ..')', function()
|
|
|
|
assert_not_error(f1)
|
|
|
|
end)
|
|
|
|
test('subclassOf(' .. theType .. ', Object:new())', function()
|
|
|
|
assert_not_error(f2)
|
|
|
|
end)
|
|
|
|
test('subclassOf(' .. theType .. ',' .. theType ..')', function()
|
|
|
|
assert_not_error(f3)
|
|
|
|
end)
|
|
|
|
end)
|
|
|
|
|
|
|
|
test('it should make subclassOf return false', function()
|
|
|
|
assert_false(f1())
|
|
|
|
assert_false(f2())
|
|
|
|
assert_false(f3())
|
|
|
|
end)
|
|
|
|
|
|
|
|
end)
|
|
|
|
end -- for
|
|
|
|
end)
|
|
|
|
|
|
|
|
context( 'An class', function()
|
|
|
|
local Class1 = class('Class1')
|
|
|
|
local Class2 = class('Class2', Class1)
|
|
|
|
local Class3 = class('Class3', Class2)
|
|
|
|
local UnrelatedClass = class('Unrelated')
|
|
|
|
|
|
|
|
test('it should be subclassOf(Object)', function()
|
|
|
|
assert_true(subclassOf(Object, Class1))
|
|
|
|
assert_true(subclassOf(Object, Class2))
|
|
|
|
assert_true(subclassOf(Object, Class3))
|
|
|
|
end)
|
|
|
|
|
|
|
|
test('it should be subclassOf its direct superclass', function()
|
|
|
|
assert_true(subclassOf(Class1, Class2))
|
|
|
|
assert_true(subclassOf(Class2, Class3))
|
|
|
|
end)
|
|
|
|
|
|
|
|
test('it should be subclassOf its ancestors', function()
|
|
|
|
assert_true(subclassOf(Class1, Class3))
|
|
|
|
end)
|
|
|
|
|
|
|
|
test('it should not be an subclassOf its class\' subclasses', function()
|
|
|
|
assert_false(subclassOf(Class2, Class1))
|
|
|
|
assert_false(subclassOf(Class3, Class1))
|
|
|
|
assert_false(subclassOf(Class3, Class2))
|
|
|
|
end)
|
|
|
|
|
|
|
|
test('it should not be an subclassOf an unrelated class', function()
|
|
|
|
assert_false(subclassOf(UnrelatedClass, Class1))
|
|
|
|
assert_false(subclassOf(UnrelatedClass, Class2))
|
|
|
|
assert_false(subclassOf(UnrelatedClass, Class3))
|
|
|
|
end)
|
|
|
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
end)
|