Edit

kc3-lang/ftgl/test/FTMesh-Test.cpp

Branch :

  • Show log

    Commit

  • Author : henry
    Date : 2002-12-17 08:21:01
    Hash : 32c357cf
    Message : Added unit tests

  • test/FTMesh-Test.cpp
  • #include <cppunit/extensions/HelperMacros.h>
    #include <cppunit/TestCaller.h>
    #include <cppunit/TestCase.h>
    #include <cppunit/TestSuite.h>
    
    #include "FTVectoriser.h"
    
    
    void CALLBACK ftglError( GLenum errCode, FTMesh* mesh);
    void CALLBACK ftglVertex( void* data, FTMesh* mesh);
    void CALLBACK ftglBegin( GLenum type, FTMesh* mesh);
    void CALLBACK ftglEnd( FTMesh* mesh);
    void CALLBACK ftglCombine( FTGL_DOUBLE coords[3], void* vertex_data[4], GLfloat weight[4], void** outData, FTMesh* mesh);
    
    
    static float POINT_DATA[] = 
    {
        10, 3, 0.7,
        -53, 2000, 23,
        77, -2.4, 765,
        117.5,  0.02, -99,
        10,    3,    -0.87,
        117.5, 0.02, 34.76,
        0.27,  44.4, 3000,
        10,    3,    0
    };
    
    class FTMeshTest : public CppUnit::TestCase
    {
            CPPUNIT_TEST_SUITE( FTMeshTest);
                CPPUNIT_TEST( testAddPoint);
            CPPUNIT_TEST_SUITE_END();
            
        public:
            FTMeshTest() : CppUnit::TestCase( "FTMesh Test")
            {}
            
            FTMeshTest( const std::string& name) : CppUnit::TestCase(name)
            {}
    
            void testAddPoint()
            {
                FTMesh mesh;
    
                CPPUNIT_ASSERT( mesh.Tesselation(0)->PointCount() == 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.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);
                ftglVertex( &POINT_DATA[21], &mesh);
                ftglError( 3, &mesh);
                ftglEnd( &mesh);
    
                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);
            }
            
            
            void setUp() 
            {}
            
            
            void tearDown() 
            {}
            
        private:
    };
    
    CPPUNIT_TEST_SUITE_REGISTRATION( FTMeshTest);