| #include <cppunit/extensions/HelperMacros.h> |
| #include <cppunit/TestCaller.h> |
| #include <cppunit/TestCase.h> |
| #include <cppunit/TestSuite.h> |
| |
| #include "FTContour.h" |
| |
| // FT_Curve_Tag_On 1 |
| // FT_Curve_Tag_Conic 0 |
| // FT_Curve_Tag_Cubic 2 |
| |
| static FT_Vector shortLine[2] = |
| { |
| { 1, 1}, |
| { 2, 2}, |
| }; |
| |
| static FT_Vector straightLinePoints[3] = |
| { |
| { 0, 0}, |
| { 6, 7}, |
| { 9, -2} |
| }; |
| |
| static char straightLineTags[3] = |
| { |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_On |
| }; |
| |
| static char brokenTags[3] = |
| { |
| FT_Curve_Tag_Conic, |
| 69, |
| FT_Curve_Tag_On |
| }; |
| |
| static FT_Vector simpleConicPoints[3] = |
| { |
| { 0, 0}, |
| { 6, 7}, |
| { 9, -2} |
| }; |
| |
| static FT_Vector brokenPoints[3] = |
| { |
| { 0, 0}, |
| { 0, 0}, |
| { 0, 0} |
| }; |
| |
| static char simpleConicTags[3] = |
| { |
| FT_Curve_Tag_Conic, |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_On |
| }; |
| |
| static FT_Vector doubleConicPoints[4] = |
| { |
| { 0, 0}, |
| { 6, 7}, |
| { 9, -2}, |
| { 4, 0} |
| }; |
| |
| static char doubleConicTags[4] = |
| { |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_Conic, |
| FT_Curve_Tag_Conic |
| }; |
| |
| static FT_Vector cubicPoints[4] = |
| { |
| { 0, 0}, |
| { 6, 7}, |
| { 9, -2}, |
| { 4, 0} |
| }; |
| |
| static char cubicTags[4] = |
| { |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_Cubic, |
| FT_Curve_Tag_Cubic |
| }; |
| |
| |
| // ARIAl 'd' |
| static FT_Vector compositePoints[18] = |
| { |
| { 1856, 0}, |
| { 1856, 279}, |
| { 1625, -64}, |
| { 1175, -64}, |
| { 884, -64}, |
| { 396, 251}, |
| { 128, 815}, |
| { 128, 1182}, |
| { 128, 1539}, |
| { 370, 2121}, |
| { 855, 2432}, |
| { 1156, 2432}, |
| { 1375, 2432}, |
| { 1718, 2257}, |
| { 1826, 2118}, |
| { 1826, 3264}, |
| { 2240, 3264}, |
| { 2240, 0}, |
| }; |
| |
| static char compositeTags[18] = |
| { |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_Conic, |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_Conic, |
| FT_Curve_Tag_Conic, |
| FT_Curve_Tag_Conic, |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_Conic, |
| FT_Curve_Tag_Conic, |
| FT_Curve_Tag_Conic, |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_Conic, |
| FT_Curve_Tag_Conic, |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_On, |
| FT_Curve_Tag_On |
| }; |
| |
| class FTContourTest : public CppUnit::TestCase |
| { |
| CPPUNIT_TEST_SUITE( FTContourTest); |
| CPPUNIT_TEST( testNullCurve); |
| CPPUNIT_TEST( testBrokenCurve); |
| CPPUNIT_TEST( testStraightLine); |
| CPPUNIT_TEST( testConicCurve); |
| CPPUNIT_TEST( testDoubleConicCurve); |
| CPPUNIT_TEST( testCubicCurve); |
| CPPUNIT_TEST( testCompositeCurve); |
| CPPUNIT_TEST_SUITE_END(); |
| |
| public: |
| FTContourTest() : CppUnit::TestCase( "FTContour Test") |
| {} |
| |
| FTContourTest( const std::string& name) : CppUnit::TestCase(name) |
| {} |
| |
| void testNullCurve() |
| { |
| FTContour contour( NULL, NULL, 0); |
| CPPUNIT_ASSERT( contour.PointCount() == 0); |
| } |
| |
| |
| void testBrokenCurve() |
| { |
| FTContour contour( brokenPoints, simpleConicTags, 3); |
| CPPUNIT_ASSERT( contour.PointCount() == 1); |
| |
| FTContour shortContour( shortLine, simpleConicTags, 2); |
| CPPUNIT_ASSERT( shortContour.PointCount() == 6); |
| |
| FTContour reallyShortContour( shortLine, simpleConicTags, 1); |
| CPPUNIT_ASSERT( reallyShortContour.PointCount() == 1); |
| |
| FTContour brokenTagtContour( shortLine, brokenTags, 3); |
| CPPUNIT_ASSERT( brokenTagtContour.PointCount() == 7); |
| } |
| |
| |
| void testStraightLine() |
| { |
| FTContour contour( straightLinePoints, straightLineTags, 3); |
| CPPUNIT_ASSERT( contour.PointCount() == 3); |
| } |
| |
| |
| void testConicCurve() |
| { |
| FTContour contour( simpleConicPoints, simpleConicTags, 3); |
| CPPUNIT_ASSERT( contour.PointCount() == 7); |
| } |
| |
| |
| void testDoubleConicCurve() |
| { |
| FTContour contour( doubleConicPoints, doubleConicTags, 4); |
| CPPUNIT_ASSERT( contour.PointCount() == 12); |
| } |
| |
| |
| void testCubicCurve() |
| { |
| FTContour contour( cubicPoints, cubicTags, 4); |
| CPPUNIT_ASSERT( contour.PointCount() == 7); |
| } |
| |
| |
| void testCompositeCurve() |
| { |
| FTContour contour( compositePoints, compositeTags, 18); |
| CPPUNIT_ASSERT( contour.PointCount() == 50); |
| } |
| |
| |
| void setUp() |
| {} |
| |
| |
| void tearDown() |
| {} |
| |
| private: |
| }; |
| |
| CPPUNIT_TEST_SUITE_REGISTRATION( FTContourTest); |
| |