#include #include #include #include #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);