| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- local Delaunay = (require "delaunay")
- local Point = Delaunay.Point
- local Triangle = Delaunay.Triangle
- context("Delaunay", function()
- test('is a module containing binding to Point, Edge, Triangle primitives', function()
- assert_true(type(Delaunay) == 'table')
- assert_true(type(Delaunay.Point) == 'table')
- assert_true(type(Delaunay.Edge) == 'table')
- assert_true(type(Delaunay.Triangle) == 'table')
- end)
-
- it('offers a triangulation function', function()
- assert_true(type(Delaunay.triangulate) == 'function')
- end)
-
- it('also have a _VERSION member', function()
- assert_true(type(Delaunay._VERSION) == 'string')
- end)
- should('throw an error when receiving a vertex', function()
- local function triangulate1vertex()
- Delaunay.triangulate(Point())
- end
- assert_error(triangulate1vertex)
- end)
- should('throw an error when receiving two vertices', function()
- local function triangulate2vertices()
- Delaunay.triangulate(Point(), Point(1,1))
- end
- assert_error(triangulate2vertices)
- end)
-
- should('return a unique triangle made when receiving 3 vertices', function()
- local p1, p2, p3 = Point(), Point(2,0), Point(1,1)
- local t = Delaunay.triangulate(p1, p2, p3)
- assert_equal(#t, 1)
- assert_equal(getmetatable(t[1]), Triangle)
- assert_equal(t[1].p1, p1)
- assert_equal(t[1].p2, p2)
- assert_equal(t[1].p3, p3)
- end)
-
- should('return 2 triangles for those 4 vertices', function()
- local p1, p2, p3, p4 = Point(), Point(1,0), Point(1,1), Point(0,1)
- local t = Delaunay.triangulate(p1, p2, p3, p4)
- assert_equal(#t, 2)
- assert_equal(getmetatable(t[1]), Triangle)
- assert_equal(t[1].p1, p2)
- assert_equal(t[1].p2, p1)
- assert_equal(t[1].p3, p4)
- assert_equal(getmetatable(t[2]), Triangle)
- assert_equal(t[2].p1, p3)
- assert_equal(t[2].p2, p2)
- assert_equal(t[2].p3, p4)
- end)
-
- should('return 4 triangles for those 5 vertices', function()
- local p1, p2, p3, p4, p5 = Point(), Point(1,0), Point(1,1), Point(0,1), Point(0.5, 0.5)
- local t = Delaunay.triangulate(p1, p2, p3, p4, p5)
- assert_equal(#t, 4)
- assert_equal(getmetatable(t[1]), Triangle)
- assert_equal(t[1].p1, p3)
- assert_equal(t[1].p2, p2)
- assert_equal(t[1].p3, p5)
- assert_equal(getmetatable(t[2]), Triangle)
- assert_equal(t[2].p1, p4)
- assert_equal(t[2].p2, p3)
- assert_equal(t[2].p3, p5)
- assert_equal(getmetatable(t[3]), Triangle)
- assert_equal(t[3].p1, p2)
- assert_equal(t[3].p2, p1)
- assert_equal(t[3].p3, p5)
- assert_equal(getmetatable(t[4]), Triangle)
- assert_equal(t[4].p1, p1)
- assert_equal(t[4].p2, p4)
- assert_equal(t[4].p3, p5)
- end)
-
- end)
|