Skip to content

Commit

Permalink
Added tests, rockspec and Travis integration
Browse files Browse the repository at this point in the history
  • Loading branch information
subnetmarco committed Mar 11, 2015
1 parent e561075 commit 3cc7c63
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 4 deletions.
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"
}
}
59 changes: 59 additions & 0 deletions spec/classic_spec.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
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")

assert.are.same("something better", classOne:getSomething())
assert.are.same("something", classTwo:getSomething())
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

0 comments on commit 3cc7c63

Please sign in to comment.