blob: 5f13a3b0ac1a7eaab85860ea6af59599a1074bc7 [file] [log] [blame]
#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);