summaryrefslogtreecommitdiff
path: root/Data/BuiltIn/Libraries/middleclass/spec/instances_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Data/BuiltIn/Libraries/middleclass/spec/instances_spec.lua')
-rw-r--r--Data/BuiltIn/Libraries/middleclass/spec/instances_spec.lua65
1 files changed, 65 insertions, 0 deletions
diff --git a/Data/BuiltIn/Libraries/middleclass/spec/instances_spec.lua b/Data/BuiltIn/Libraries/middleclass/spec/instances_spec.lua
new file mode 100644
index 0000000..d9ac52c
--- /dev/null
+++ b/Data/BuiltIn/Libraries/middleclass/spec/instances_spec.lua
@@ -0,0 +1,65 @@
+local class = require 'middleclass'
+
+describe('An instance', function()
+
+ describe('attributes', function()
+
+ local Person
+
+ before_each(function()
+ Person = class('Person')
+ function Person:initialize(name)
+ self.name = name
+ end
+ end)
+
+ it('are available in the instance after being initialized', function()
+ local bob = Person:new('bob')
+ assert.equal(bob.name, 'bob')
+ end)
+
+ it('are available in the instance after being initialized by a superclass', function()
+ local AgedPerson = class('AgedPerson', Person)
+ function AgedPerson:initialize(name, age)
+ Person.initialize(self, name)
+ self.age = age
+ end
+
+ local pete = AgedPerson:new('pete', 31)
+ assert.equal(pete.name, 'pete')
+ assert.equal(pete.age, 31)
+ end)
+
+ end)
+
+ describe('methods', function()
+
+ local A, B, a, b
+
+ before_each(function()
+ A = class('A')
+ function A:overridden() return 'foo' end
+ function A:regular() return 'regular' end
+
+ B = class('B', A)
+ function B:overridden() return 'bar' end
+
+ a = A:new()
+ b = B:new()
+ end)
+
+ it('are available for any instance', function()
+ assert.equal(a:overridden(), 'foo')
+ end)
+
+ it('are inheritable', function()
+ assert.equal(b:regular(), 'regular')
+ end)
+
+ it('are overridable', function()
+ assert.equal(b:overridden(), 'bar')
+ end)
+
+ end)
+
+end)