middleclass/spec/includes_spec.lua

69 lines
1.8 KiB
Lua
Raw Normal View History

2013-09-15 21:14:00 +00:00
local class = require 'middleclass'
2013-09-15 21:18:08 +00:00
local Object = class.Object
2013-09-17 18:55:50 +00:00
describe('includes', function()
2013-09-17 18:55:50 +00:00
describe('nils, numbers, etc', function()
local o = Object:new()
local primitives = {nil, 1, 'hello', {}, function() end}
2013-09-15 21:14:00 +00:00
for _,primitive in pairs(primitives) do
local theType = type(primitive)
2013-09-17 18:55:50 +00:00
describe('A ' .. theType, function()
2013-09-15 21:14:00 +00:00
2013-09-16 23:14:57 +00:00
local f1 = function() return Object.includes(Object, primitive) end
local f2 = function() return Object.includes(primitive, o) end
local f3 = function() return Object.includes(primitive, primitive) end
2013-09-15 21:14:00 +00:00
2013-09-17 18:55:50 +00:00
describe('don\'t throw errors', function()
it('includes(Object, '.. theType ..')', function()
assert.not_error(f1)
end)
2013-09-17 18:55:50 +00:00
it('includes(' .. theType .. ', Object:new())', function()
assert.not_error(f2)
end)
2013-09-17 18:55:50 +00:00
it('includes(' .. theType .. ',' .. theType ..')', function()
assert.not_error(f3)
end)
end)
2013-09-15 21:14:00 +00:00
2013-09-17 18:55:50 +00:00
it('make includes return false', function()
assert.is_false(f1())
assert.is_false(f2())
assert.is_false(f3())
end)
end)
end -- for
end)
2013-09-17 18:55:50 +00:00
describe('A class', function()
local Class1 = class('Class1')
local Class2 = class('Class2', Class1)
local Class3 = class('Class3', Class2)
local UnrelatedClass = class('Unrelated')
2013-09-15 21:14:00 +00:00
local hasFoo = { foo=function() return 'foo' end }
Class1:include(hasFoo)
2013-09-15 21:14:00 +00:00
2013-09-17 18:55:50 +00:00
it('returns true if it includes a mixin', function()
assert.is_true(Class1:includes(hasFoo))
end)
2013-09-15 21:14:00 +00:00
2013-09-17 18:55:50 +00:00
it('returns true if its superclass includes a mixin', function()
assert.is_true(Class2:includes(hasFoo))
assert.is_true(Class3:includes(hasFoo))
end)
2013-09-15 21:14:00 +00:00
2013-09-17 18:55:50 +00:00
it('returns false otherwise', function()
assert.is_false(UnrelatedClass:includes(hasFoo))
end)
end)
end)