📄 ftglyphcontainer-test.cpp
字号:
#include <cppunit/extensions/HelperMacros.h>#include <cppunit/TestCaller.h>#include <cppunit/TestCase.h>#include <cppunit/TestSuite.h>#include "Fontdefs.h"#include "FTFace.h"#include "FTGlyph.h"#include "FTGlyphContainer.h"class TestGlyph : public FTGlyph{ public: TestGlyph() : FTGlyph(0) { advance = FTPoint(50.0f, 0.0f, 0.0f); } virtual const FTPoint& Render( const FTPoint& pen){ return advance;}};class FTGlyphContainerTest : public CppUnit::TestCase{ CPPUNIT_TEST_SUITE( FTGlyphContainerTest); CPPUNIT_TEST( testAdd); CPPUNIT_TEST( testSetCharMap); CPPUNIT_TEST( testGlyphIndex); CPPUNIT_TEST( testAdvance); CPPUNIT_TEST( testRender); CPPUNIT_TEST_SUITE_END(); public: FTGlyphContainerTest() : CppUnit::TestCase( "FTGlyphContainer Test") { face = new FTFace( GOOD_FONT_FILE); face->Size( 72, 72); } FTGlyphContainerTest( const std::string& name) : CppUnit::TestCase(name) { delete face; } void testAdd() { TestGlyph* glyph = new TestGlyph(); CPPUNIT_ASSERT( glyphContainer->Glyph( CHARACTER_CODE_A) == NULL); glyphContainer->Add( glyph, CHARACTER_CODE_A); glyphContainer->Add( NULL, 0); CPPUNIT_ASSERT( glyphContainer->Glyph( 0) == NULL); CPPUNIT_ASSERT( glyphContainer->Glyph( 999) == NULL); CPPUNIT_ASSERT( glyphContainer->Glyph( CHARACTER_CODE_A) == glyph); } void testSetCharMap() { CPPUNIT_ASSERT( glyphContainer->CharMap( ft_encoding_unicode)); CPPUNIT_ASSERT( glyphContainer->Error() == 0); CPPUNIT_ASSERT( !glyphContainer->CharMap( ft_encoding_johab)); CPPUNIT_ASSERT( glyphContainer->Error() == 0x06); // invalid argument } void testGlyphIndex() { CPPUNIT_ASSERT( glyphContainer->FontIndex( CHARACTER_CODE_A) == FONT_INDEX_OF_A); CPPUNIT_ASSERT( glyphContainer->FontIndex( BIG_CHARACTER_CODE) == BIG_FONT_INDEX); } void testAdvance() { TestGlyph* glyph = new TestGlyph(); glyphContainer->Add( glyph, CHARACTER_CODE_A); float advance = glyphContainer->Advance( CHARACTER_CODE_A, 0); CPPUNIT_ASSERT_DOUBLES_EQUAL( 50, advance, 0.01); } void testRender() { TestGlyph* glyph = new TestGlyph(); glyphContainer->Add( glyph, 'A'); FTPoint pen; float advance = glyphContainer->Render( 'A', 0, pen).X(); CPPUNIT_ASSERT_DOUBLES_EQUAL( 50, advance, 0.01); } void setUp() { glyphContainer = new FTGlyphContainer( face); } void tearDown() { delete glyphContainer; } private: FTFace* face; FTGlyphContainer* glyphContainer;};CPPUNIT_TEST_SUITE_REGISTRATION( FTGlyphContainerTest);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -