From 7b07b1a7f96d51d8f8a24a95d2784dd1ed9806de Mon Sep 17 00:00:00 2001 From: Brendan Kenny Date: Fri, 24 Oct 2014 19:40:05 -0700 Subject: [PATCH] add basic GLU_TESS_MESH test (see TODO in commit for reservations) --- test/basics.test.js | 27 +++++++++++++++++++++++++++ test/browser/tests-browserified.js | 29 ++++++++++++++++++++++++++++- test/geometry.test.js | 2 +- 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/test/basics.test.js b/test/basics.test.js index 8c3e411..37afa34 100644 --- a/test/basics.test.js +++ b/test/basics.test.js @@ -50,6 +50,33 @@ suite('Basic Tests', function() { boundaryOnly = !boundaryOnly; } }); + test('GLU_TESS_MESH callback returns something', function() { + // TODO(bckenny): returned mesh is useless in minified form. Decide if + // external mesh interface is worthwhile (can test with checkMesh) or if + // it should just be hidden within + var tess = createTessellator(libtess); + var meshCallbackCalled = false; + tess.gluTessCallback(libtess.gluEnum.GLU_TESS_MESH, + function meshCallback(mesh) { + meshCallbackCalled = true; + assert.isObject(mesh, + 'GLU_TESS_MESH callback did not return an object'); + }); + + var resultVerts = []; + tess.gluTessBeginPolygon(resultVerts); + tess.gluTessBeginContour(); + tess.gluTessVertex([1, 0, 0], [1, 0, 0]); + tess.gluTessVertex([0, 1, 0], [0, 1, 0]); + tess.gluTessVertex([0, 0, 0], [0, 0, 0]); + tess.gluTessEndContour(); + tess.gluTessEndPolygon(); + + assert.deepEqual(resultVerts, [[1, 0, 0, 0, 1, 0, 0, 0, 0]], + 'triangle was not tessellated to itself in GLU_TESS_MESH test'); + assert.isTrue(meshCallbackCalled, + 'GLU_TESS_MESH callback was not called'); + }); }); suite('Basic Geometry', function() { diff --git a/test/browser/tests-browserified.js b/test/browser/tests-browserified.js index dd0bad9..89844c1 100755 --- a/test/browser/tests-browserified.js +++ b/test/browser/tests-browserified.js @@ -57,6 +57,33 @@ suite('Basic Tests', function() { boundaryOnly = !boundaryOnly; } }); + test('GLU_TESS_MESH callback returns something', function() { + // TODO(bckenny): returned mesh is useless in minified form. Decide if + // external mesh interface is worthwhile (can test with checkMesh) or if + // it should just be hidden within + var tess = createTessellator(libtess); + var meshCallbackCalled = false; + tess.gluTessCallback(libtess.gluEnum.GLU_TESS_MESH, + function meshCallback(mesh) { + meshCallbackCalled = true; + assert.isObject(mesh, + 'GLU_TESS_MESH callback did not return an object'); + }); + + var resultVerts = []; + tess.gluTessBeginPolygon(resultVerts); + tess.gluTessBeginContour(); + tess.gluTessVertex([1, 0, 0], [1, 0, 0]); + tess.gluTessVertex([0, 1, 0], [0, 1, 0]); + tess.gluTessVertex([0, 0, 0], [0, 0, 0]); + tess.gluTessEndContour(); + tess.gluTessEndPolygon(); + + assert.deepEqual(resultVerts, [[1, 0, 0, 0, 1, 0, 0, 0, 0]], + 'triangle was not tessellated to itself in GLU_TESS_MESH test'); + assert.isTrue(meshCallbackCalled, + 'GLU_TESS_MESH callback was not called'); + }); }); suite('Basic Geometry', function() { @@ -626,7 +653,7 @@ function testGeometry(geometry) { * @param {!Array.>} contours * @param {{name: string, value: boolean}} outputType * @param {{name: string, value: boolean}} provideNormal - * @param {{name: string, value: boolean}} normal + * @param {{name: string, value: !Array.}} normal * @param {{name: string, value: boolean}} windingRule * @return {!Array.>} */ diff --git a/test/geometry.test.js b/test/geometry.test.js index e9fad5c..3df7828 100755 --- a/test/geometry.test.js +++ b/test/geometry.test.js @@ -148,7 +148,7 @@ function testGeometry(geometry) { * @param {!Array.>} contours * @param {{name: string, value: boolean}} outputType * @param {{name: string, value: boolean}} provideNormal - * @param {{name: string, value: boolean}} normal + * @param {{name: string, value: !Array.}} normal * @param {{name: string, value: boolean}} windingRule * @return {!Array.>} */