#include #include #include #include #include #include #include #include FT_FREETYPE_H #include FT_GLYPH_H #include "Fontdefs.h" #include "FTFace.h" #include "FTCharmap.h" class FTCharmapTest : public CppUnit::TestCase { CPPUNIT_TEST_SUITE( FTCharmapTest); CPPUNIT_TEST( testConstructor); CPPUNIT_TEST( testSetEncoding); CPPUNIT_TEST( testGetGlyphListIndex); CPPUNIT_TEST( testGetFontIndex); CPPUNIT_TEST( testInsertCharacterIndex); CPPUNIT_TEST_SUITE_END(); public: FTCharmapTest() : CppUnit::TestCase( "FTCharmap Test") { setUpFreetype(); } FTCharmapTest( const std::string& name) : CppUnit::TestCase(name) {} ~FTCharmapTest() { tearDownFreetype(); } void testConstructor() { CPPUNIT_ASSERT( charmap->Error() == 0); CPPUNIT_ASSERT( charmap->Encoding() == ft_encoding_unicode); } void testSetEncoding() { CPPUNIT_ASSERT( charmap->CharMap( ft_encoding_unicode)); CPPUNIT_ASSERT( charmap->Error() == 0); CPPUNIT_ASSERT( charmap->Encoding() == ft_encoding_unicode); CPPUNIT_ASSERT( !charmap->CharMap( ft_encoding_johab)); CPPUNIT_ASSERT( charmap->Error() == 0x06); // invalid argument CPPUNIT_ASSERT( charmap->Encoding() == ft_encoding_none); } void testGetGlyphListIndex() { charmap->CharMap( ft_encoding_johab); CPPUNIT_ASSERT( charmap->Error() == 0x06); // invalid argument CPPUNIT_ASSERT( charmap->GlyphListIndex( CHARACTER_CODE_A) == 0); CPPUNIT_ASSERT( charmap->GlyphListIndex( BIG_CHARACTER_CODE) == 0); CPPUNIT_ASSERT( charmap->GlyphListIndex( NULL_CHARACTER_CODE) == 0); charmap->CharMap( ft_encoding_unicode); CPPUNIT_ASSERT( charmap->Error() == 0); CPPUNIT_ASSERT( charmap->GlyphListIndex( CHARACTER_CODE_A) == 0); CPPUNIT_ASSERT( charmap->GlyphListIndex( BIG_CHARACTER_CODE) == 0); CPPUNIT_ASSERT( charmap->GlyphListIndex( NULL_CHARACTER_CODE) == 0); } void testGetFontIndex() { charmap->CharMap( ft_encoding_johab); CPPUNIT_ASSERT( charmap->Error() == 0x06); // invalid argument CPPUNIT_ASSERT( charmap->FontIndex( CHARACTER_CODE_A) == FONT_INDEX_OF_A); CPPUNIT_ASSERT( charmap->FontIndex( BIG_CHARACTER_CODE) == BIG_FONT_INDEX); CPPUNIT_ASSERT( charmap->FontIndex( NULL_CHARACTER_CODE) == NULL_FONT_INDEX); charmap->CharMap( ft_encoding_unicode); CPPUNIT_ASSERT( charmap->Error() == 0); CPPUNIT_ASSERT( charmap->FontIndex( CHARACTER_CODE_A) == FONT_INDEX_OF_A); CPPUNIT_ASSERT( charmap->FontIndex( BIG_CHARACTER_CODE) == BIG_FONT_INDEX); CPPUNIT_ASSERT( charmap->FontIndex( NULL_CHARACTER_CODE) == NULL_FONT_INDEX); } void testInsertCharacterIndex() { CPPUNIT_ASSERT( charmap->GlyphListIndex( CHARACTER_CODE_A) == 0); CPPUNIT_ASSERT( charmap->FontIndex( CHARACTER_CODE_A) == FONT_INDEX_OF_A); charmap->InsertIndex( CHARACTER_CODE_A, 69); CPPUNIT_ASSERT( charmap->FontIndex( CHARACTER_CODE_A) == FONT_INDEX_OF_A); CPPUNIT_ASSERT( charmap->GlyphListIndex( CHARACTER_CODE_A) == 69); charmap->InsertIndex( CHARACTER_CODE_G, 999); CPPUNIT_ASSERT( charmap->GlyphListIndex( CHARACTER_CODE_G) == 999); } void setUp() { charmap = new FTCharmap( face); } void tearDown() { delete charmap; } private: FTFace* face; FTCharmap* charmap; void setUpFreetype() { face = new FTFace( GOOD_FONT_FILE); CPPUNIT_ASSERT( !face->Error()); } void tearDownFreetype() { delete face; } }; CPPUNIT_TEST_SUITE_REGISTRATION( FTCharmapTest);