Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding tests, rockspec file, and TravisCI integration #4

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
language: erlang

env:
- LUA=""
- LUA="luajit"

branches:
only:
- master

install:
- sudo apt-get install luajit
- sudo apt-get install luarocks
- sudo luarocks install luafilesystem
- sudo luarocks install busted

script: "busted spec"

5 changes: 2 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Classic
# Classic [![Build Status](https://api.travis-ci.org/thefosk/classic.png)](https://travis-ci.org/thefosk/classic)

A tiny class module for Lua. Attempts to stay simple and provide decent
performance by avoiding unnecessary over-abstraction.
Expand Down Expand Up @@ -48,7 +48,7 @@ end
local p = Point(10, 20)
print(p:is(Object)) -- true
print(p:is(Point)) -- true
print(p:is(Rect)) -- false
print(p:is(Rect)) -- false
```

### Using mixins
Expand Down Expand Up @@ -102,4 +102,3 @@ end

This module is free software; you can redistribute it and/or modify it under
the terms of the MIT license. See [LICENSE](LICENSE) for details.

23 changes: 23 additions & 0 deletions classic-0.1-1.rockspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package = "classic"
version = "0.1-1"
source = {
url = "git://github.com/rxi/classic",
branch = "master"
}
description = {
summary = "Tiny class module for Lua",
detailed = [[
A tiny class module for Lua. Attempts to stay simple and provide decent performance by avoiding unnecessary over-abstraction.
]],
homepage = "https://github.com/rxi/classic",
license = "MIT"
}
dependencies = {
"lua >= 5.1"
}
build = {
type = "builtin",
modules = {
classic = "src/classic.lua"
}
}
75 changes: 75 additions & 0 deletions spec/classic_spec.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
Object = require "classic"

-- BaseClass provides a say() method
local BaseClass = Object:extend()
function BaseClass:new(name)
self._name = name
end
function BaseClass:getName()
return self._name
end
function BaseClass.getSomething()
return "something"
end

-- ClassOne extends BaseClass
local ClassOne = BaseClass:extend()
function ClassOne:new(name)
ClassOne.super.new(self, name)
end
function ClassOne.getSomething()
return "something better"
end

-- ClassTwo extends BaseClass
local ClassTwo = BaseClass:extend()
function ClassTwo:new(name)
if name == "wrong" then
error("Wrong value")
end
ClassTwo.super.new(self, name)
end

describe("classic #classic", function()
describe("Base tests", function()

it("Constructors should work", function()
local classOne = ClassOne("Mark")
local classTwo = ClassTwo("John")

assert.are.same("Mark", classOne:getName())
assert.are.same("John", classTwo:getName())
end)
it("Static method should work", function()
local classOne = ClassOne("Mark")
local classTwo = ClassTwo("John")

spy.on(classOne, "getSomething")
spy.on(classTwo, "getSomething")

assert.are.same("something better", classOne.getSomething())
assert.are.same("something", classTwo.getSomething())

-- Make sure no arguments have been passed
assert.spy(classOne.getSomething).was_called_with()
assert.spy(classTwo.getSomething).was_called_with()

assert.are.same("something better", classOne.getSomething("hello"))
assert.spy(classOne.getSomething).was_called_with("hello")

-- Removing the spies
finally(function()
classOne.getSomething:revert()
classTwo.getSomething:revert()
end)
end)
it("Constructor returns error", function()
local status, res = pcall(ClassTwo, "wrong")

assert.falsy(status)
assert.truthy(res)
assert.are.same("Wrong value", string.sub(res, string.len(res) - 10))
end)

end)
end)
2 changes: 1 addition & 1 deletion classic.lua → src/classic.lua
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,4 @@ function Object:__call(...)
end


return Object
return Object