Skip to content

Commit

Permalink
test: Port Set test to Busted
Browse files Browse the repository at this point in the history
  • Loading branch information
alerque authored and Tieske committed Oct 9, 2020
1 parent c615195 commit 943a700
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 37 deletions.
84 changes: 84 additions & 0 deletions spec/set_spec.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
local Set = require("pl.Set")

describe("pl.Set", function ()

local s = Set()
local s1_2 = Set({ 1, 2 })
local s1_2_3 = Set({ 1, 2, 3 })
local s1_3 = Set({ 1, 3 })
local s2 = Set({ 2 })
local s2_1 = Set({ 2, 1 })
local s2_3 = Set({ 2, 3 })
local s3 = Set({ 3 })
local sm = Set({ "foo", "bar" })

it("should produce a set object", function ()
assert.is.same({ true, true }, s1_2)
end)

it("should produce identical sets for any ordered input", function ()
assert.is.same(s1_2, s2_1)
end)

describe("should have an operator for", function ()

it("union", function ()
assert.is.same(s1_2_3, s1_2 + s3)
assert.is.same(s1_2_3, s1_2 + 3)
end)

it("intersection", function ()
assert.is.same(s2, s1_2 * s2_3)
end)

it("difference", function ()
assert.is.same(s2_1, s1_2_3 - s3)
assert.is.same(s2_3, s1_2_3 - 1)
end)

it("symmetric difference", function ()
assert.is.same(s1_3, s1_2 ^ s2_3)
end)

it("tostring", function ()
-- Cannot test multi-entry sets because of non-deterministic key order
assert.is.same('[2]', tostring(s2))
end)

end)

describe("should provide functions", function ()

it("isempty", function ()
assert.is.truthy(Set.isempty(s))
assert.is.falsy(Set.isempty(s3))
end)

it("set", function ()
local m = Set()
Set.set(m, 'foo', true)
m.bar = true
assert.is.same(m, sm)
assert.is_not.same(m, s1_2)
end)

end)

describe("should have a comparison operator for", function ()

it("supersets/subsets than", function ()
assert.is.truthy(s1_2 > s2)
assert.is.falsy(s1_3 > s2)
assert.is.falsy(s1_2 > s2_3)
assert.is.truthy(s1_2 < s1_2_3)
assert.is.falsy(s1_2_3 < s1_2)
end)

it("equality", function ()
assert.is.truthy(s1_2 == s2_1)
assert.is.falsy(s1_2 == s2_3)
end)

end)

end)
37 changes: 0 additions & 37 deletions tests/test-set.lua

This file was deleted.

0 comments on commit 943a700

Please sign in to comment.