void testTooManyPoints() { FTGL_DOUBLE testPoint[3] = { 1, 2, 3}; FTGL_DOUBLE* testOutput[] = { 0, 0, 0, 0}; void *pOutput = (void *)testOutput; FTGL_DOUBLE* hole[] = { 0, 0, 0, 0}; void *pHole = (void *)hole; FTMesh mesh; unsigned int x; ftglBegin(GL_TRIANGLES, &mesh); ftglCombine(testPoint, NULL, NULL, &pOutput, &mesh); for(x = 0; x < 200; ++x) { ftglCombine(testPoint, NULL, NULL, &pHole, &mesh); } CPPUNIT_ASSERT(*testOutput == static_cast<const FTGL_DOUBLE*>(mesh.TempPointList().front())); for(x = 201; x < 300; ++x) { ftglCombine(testPoint, NULL, NULL, &pHole, &mesh); } ftglEnd(&mesh); CPPUNIT_ASSERT(*testOutput == static_cast<const FTGL_DOUBLE*>(mesh.TempPointList().front())); }
void testGetTesselation() { FTMesh mesh; CPPUNIT_ASSERT( mesh.Tesselation(0) == NULL); ftglBegin( GL_TRIANGLES, &mesh); ftglVertex( &POINT_DATA[0], &mesh); ftglVertex( &POINT_DATA[3], &mesh); ftglVertex( &POINT_DATA[6], &mesh); ftglVertex( &POINT_DATA[9], &mesh); ftglEnd( &mesh); CPPUNIT_ASSERT( mesh.Tesselation(0)); CPPUNIT_ASSERT( mesh.Tesselation(10) == NULL); }
void testAddPoint() { FTGL_DOUBLE testPoint[3] = { 1, 2, 3 }; FTGL_DOUBLE* hole[] = { 0, 0, 0, 0 }; void *pHole = (void *)hole; FTMesh mesh; CPPUNIT_ASSERT(mesh.TesselationCount() == 0); ftglBegin(GL_TRIANGLES, &mesh); ftglVertex(&POINT_DATA[0], &mesh); ftglVertex(&POINT_DATA[3], &mesh); ftglVertex(&POINT_DATA[6], &mesh); ftglVertex(&POINT_DATA[9], &mesh); ftglEnd(&mesh); CPPUNIT_ASSERT(mesh.TesselationCount() == 1); CPPUNIT_ASSERT(mesh.Tesselation(0)->PolygonType() == GL_TRIANGLES); CPPUNIT_ASSERT(mesh.Tesselation(0)->PointCount() == 4); CPPUNIT_ASSERT(mesh.Error() == 0); ftglBegin(GL_QUADS, &mesh); ftglVertex(&POINT_DATA[12], &mesh); ftglVertex(&POINT_DATA[15], &mesh); ftglError(2, &mesh); ftglVertex(&POINT_DATA[18], &mesh); ftglCombine(testPoint, NULL, NULL, &pHole, &mesh); ftglVertex(&POINT_DATA[21], &mesh); ftglError(3, &mesh); ftglEnd(&mesh); CPPUNIT_ASSERT(mesh.TesselationCount() == 2); CPPUNIT_ASSERT(mesh.Tesselation(0)->PointCount() == 4); CPPUNIT_ASSERT(mesh.Tesselation(1)->PolygonType() == GL_QUADS); CPPUNIT_ASSERT(mesh.Tesselation(1)->PointCount() == 4); CPPUNIT_ASSERT(mesh.Error() == 3); CPPUNIT_ASSERT(mesh.TesselationCount() == 2); }