Tests work and pass
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
diff --git a/test/FTGlyph-Test.cpp b/test/FTGlyph-Test.cpp
index abed20d..931e74a 100755
--- a/test/FTGlyph-Test.cpp
+++ b/test/FTGlyph-Test.cpp
@@ -3,13 +3,25 @@
#include <cppunit/TestCase.h>
#include <cppunit/TestSuite.h>
-#include "FTList.h"
+#include "Fontdefs.h"
+#include "FTGlyph.h"
+
+class TestGlyph : public FTGlyph
+{
+ public:
+ TestGlyph( FT_GlyphSlot glyph)
+ : FTGlyph(glyph)
+ {}
+
+ float Render( const FTPoint& pen) { return 0.0f;};
+};
class FTGlyphTest : public CppUnit::TestCase
{
CPPUNIT_TEST_SUITE( FTGlyphTest);
- CPPUNIT_TEST( testConstructor);
+ CPPUNIT_TEST( testBadConstructor);
+ CPPUNIT_TEST( testGoodConstructor);
CPPUNIT_TEST_SUITE_END();
public:
@@ -18,9 +30,30 @@ class FTGlyphTest : public CppUnit::TestCase
FTGlyphTest( const std::string& name) : CppUnit::TestCase(name) {}
- void testConstructor()
+ void testBadConstructor()
{
- CPPUNIT_ASSERT( false);
+ TestGlyph testGlyph(0);
+
+ CPPUNIT_ASSERT_DOUBLES_EQUAL( 0, testGlyph.Advance(), 0.01);
+
+ CPPUNIT_ASSERT_DOUBLES_EQUAL( 0, testGlyph.BBox().upperY, 0.01);
+
+ CPPUNIT_ASSERT( testGlyph.Error() == 0);
+ }
+
+
+ void testGoodConstructor()
+ {
+ setUpFreetype( CHARACTER_CODE_A);
+ TestGlyph testGlyph(face->glyph);
+
+ CPPUNIT_ASSERT_DOUBLES_EQUAL( 47, testGlyph.Advance(), 0.01);
+
+ CPPUNIT_ASSERT_DOUBLES_EQUAL( 51.3906, testGlyph.BBox().upperY, 0.01);
+
+ CPPUNIT_ASSERT( testGlyph.Error() == 0);
+
+ tearDownFreetype();
}
@@ -32,6 +65,35 @@ class FTGlyphTest : public CppUnit::TestCase
{}
private:
+ FT_Library library;
+ FT_Face face;
+
+ void setUpFreetype( unsigned int characterIndex)
+ {
+ FT_Error error = FT_Init_FreeType( &library);
+ assert(!error);
+ error = FT_New_Face( library, ARIAL_FONT_FILE, 0, &face);
+ assert(!error);
+
+ loadGlyph( characterIndex);
+ }
+
+ void loadGlyph( unsigned int characterIndex)
+ {
+ long glyphIndex = FT_Get_Char_Index( face, characterIndex);
+
+ FT_Set_Char_Size( face, 0L, FONT_POINT_SIZE * 64, RESOLUTION, RESOLUTION);
+
+ FT_Error error = FT_Load_Glyph( face, glyphIndex, FT_LOAD_DEFAULT);
+ assert(!error);
+ }
+
+ void tearDownFreetype()
+ {
+ FT_Done_Face( face);
+ FT_Done_FreeType( library);
+ }
+
};
CPPUNIT_TEST_SUITE_REGISTRATION( FTGlyphTest);