File: FTFace-Test.cpp

package info (click to toggle)
ftgl 2.4.0-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,540 kB
  • sloc: cpp: 17,918; sh: 1,073; ansic: 644; makefile: 376
file content (130 lines) | stat: -rw-r--r-- 3,590 bytes parent folder | download | duplicates (7)
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include "cppunit/extensions/HelperMacros.h"
#include "cppunit/TestCaller.h"
#include "cppunit/TestCase.h"
#include "cppunit/TestSuite.h"

#include "Fontdefs.h"
#include "FTFace.h"


class FTFaceTest : public CppUnit::TestCase
{
    CPPUNIT_TEST_SUITE(FTFaceTest);
        CPPUNIT_TEST(testOpenFace);
        CPPUNIT_TEST(testOpenFaceFromMemory);
        CPPUNIT_TEST(testAttachFile);
        CPPUNIT_TEST(testAttachMemoryData);
        CPPUNIT_TEST(testGlyphCount);
        CPPUNIT_TEST(testSetFontSize);
        CPPUNIT_TEST(testGetCharmapList);
        CPPUNIT_TEST(testKerning);
    CPPUNIT_TEST_SUITE_END();

    public:
        FTFaceTest() : CppUnit::TestCase("FTFace test") {};
        FTFaceTest(const std::string& name) : CppUnit::TestCase(name) {};


        void testOpenFace()
        {
            FTFace face1(BAD_FONT_FILE);
            CPPUNIT_ASSERT_EQUAL(face1.Error(), 0x06);

            FTFace face2(GOOD_FONT_FILE);
            CPPUNIT_ASSERT_EQUAL(face2.Error(), 0);
        }


        void testOpenFaceFromMemory()
        {
            FTFace face1((unsigned char*)100, 0);
            CPPUNIT_ASSERT_EQUAL(face1.Error(), 0x02);

            FTFace face2(HPGCalc_pfb.dataBytes, HPGCalc_pfb.numBytes);
            CPPUNIT_ASSERT_EQUAL(face2.Error(), 0);
        }


        void testAttachFile()
        {
            CPPUNIT_ASSERT(!testFace->Attach(TYPE1_AFM_FILE));
            CPPUNIT_ASSERT_EQUAL(testFace->Error(), 0x07); // unimplemented feature

            FTFace test(TYPE1_FONT_FILE);
            CPPUNIT_ASSERT_EQUAL(test.Error(), 0);

            CPPUNIT_ASSERT(test.Attach(TYPE1_AFM_FILE));
            CPPUNIT_ASSERT_EQUAL(test.Error(), 0);
        }


        void testAttachMemoryData()
        {
            CPPUNIT_ASSERT(!testFace->Attach((unsigned char*)100, 0));
            CPPUNIT_ASSERT_EQUAL(testFace->Error(), 0x07); // unimplemented feature

            FTFace test(TYPE1_FONT_FILE);
            CPPUNIT_ASSERT_EQUAL(test.Error(), 0);

            CPPUNIT_ASSERT(test.Attach(HPGCalc_afm.dataBytes, HPGCalc_afm.numBytes));
            CPPUNIT_ASSERT_EQUAL(test.Error(), 0);
        }


        void testGlyphCount()
        {
            CPPUNIT_ASSERT_EQUAL(testFace->GlyphCount(), 14099U);
        }


        void testSetFontSize()
        {
            FTSize size = testFace->Size(FONT_POINT_SIZE, RESOLUTION);
            CPPUNIT_ASSERT_EQUAL(testFace->Error(), 0);
        }


        void testGetCharmapList()
        {
            CPPUNIT_ASSERT_EQUAL(testFace->CharMapCount(), 2U);

            FT_Encoding* charmapList = testFace->CharMapList();

            CPPUNIT_ASSERT_EQUAL(charmapList[0], ft_encoding_unicode);
            CPPUNIT_ASSERT_EQUAL(charmapList[1], ft_encoding_adobe_standard);
        }


        void testKerning()
        {
            FTFace test(ARIAL_FONT_FILE);
            FTPoint kerningVector = test.KernAdvance('A', 'A');
            CPPUNIT_ASSERT_EQUAL(kerningVector.X(), 0.);
            CPPUNIT_ASSERT_EQUAL(kerningVector.Y(), 0.);
            CPPUNIT_ASSERT_EQUAL(kerningVector.Z(), 0.);

            kerningVector = test.KernAdvance(0x6FB3, 0x9580);
            CPPUNIT_ASSERT_EQUAL(kerningVector.X(), 0.);
            CPPUNIT_ASSERT_EQUAL(kerningVector.Y(), 0.);
            CPPUNIT_ASSERT_EQUAL(kerningVector.Z(), 0.);
        }


        void setUp()
        {
            testFace = new FTFace(GOOD_FONT_FILE);
        }


        void tearDown()
        {
            delete testFace;
        }

    private:
        FTFace* testFace;

};

CPPUNIT_TEST_SUITE_REGISTRATION(FTFaceTest);