fbs/fontandbitmapserver/tfbs/tfbsglyphdatapanic.cpp
author hgs
Fri, 24 Sep 2010 16:14:28 +0300
changeset 187 9f66f99ee56f
child 136 62bb7c97884c
permissions -rw-r--r--
201026
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
187
hgs
parents:
diff changeset
     1
// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     2
// All rights reserved.
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     7
//
hgs
parents:
diff changeset
     8
// Initial Contributors:
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    10
//
hgs
parents:
diff changeset
    11
// Contributors:
hgs
parents:
diff changeset
    12
//
hgs
parents:
diff changeset
    13
// Description:
hgs
parents:
diff changeset
    14
//
hgs
parents:
diff changeset
    15
hgs
parents:
diff changeset
    16
/**
hgs
parents:
diff changeset
    17
 @file
hgs
parents:
diff changeset
    18
 @internalComponent - Internal Symbian test code
hgs
parents:
diff changeset
    19
*/
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <graphics/fbsglyphmetricsarray.h> 
hgs
parents:
diff changeset
    22
#include <graphics/fbsglyphdataiterator.h>
hgs
parents:
diff changeset
    23
#include "tfbsglyphdatapanic.h"
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
_LIT(KTypefaceName, "DejaVu Sans Condensed");
hgs
parents:
diff changeset
    26
const TInt KNumGlyphCodes = 96;
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
/*
hgs
parents:
diff changeset
    29
Lookup table to convert from ascii code to
hgs
parents:
diff changeset
    30
glyph code for the Deja Vu family of fonts.
hgs
parents:
diff changeset
    31
 */
hgs
parents:
diff changeset
    32
const TUint DejaVuASCIIToGlyphCode[] = 
hgs
parents:
diff changeset
    33
    {
hgs
parents:
diff changeset
    34
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
hgs
parents:
diff changeset
    35
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   
hgs
parents:
diff changeset
    36
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
hgs
parents:
diff changeset
    37
    0, 0, 3, 4, 5, 6, 7, 8, 9, 10, 
hgs
parents:
diff changeset
    38
    11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 
hgs
parents:
diff changeset
    39
    21, 22, 23, 24, 25, 26, 27, 28, 29, 30,     
hgs
parents:
diff changeset
    40
    31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
hgs
parents:
diff changeset
    41
    41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
hgs
parents:
diff changeset
    42
    51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 
hgs
parents:
diff changeset
    43
    61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
hgs
parents:
diff changeset
    44
    71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
hgs
parents:
diff changeset
    45
    81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
hgs
parents:
diff changeset
    46
    91, 92, 93, 94, 95, 96, 97, 98, 
hgs
parents:
diff changeset
    47
    };
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
CTFbsGlyphDataPanic::CTFbsGlyphDataPanic(CTestStep* aStep):
hgs
parents:
diff changeset
    50
    CTGraphicsBase(aStep)
hgs
parents:
diff changeset
    51
    {
hgs
parents:
diff changeset
    52
    }
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
CTFbsGlyphDataPanic::~CTFbsGlyphDataPanic()
hgs
parents:
diff changeset
    55
    {
hgs
parents:
diff changeset
    56
    iSgDriver.Close();
hgs
parents:
diff changeset
    57
    if (iTs)
hgs
parents:
diff changeset
    58
         {
hgs
parents:
diff changeset
    59
         iTs->ReleaseFont(iFont);
hgs
parents:
diff changeset
    60
         delete iTs;
hgs
parents:
diff changeset
    61
         }
hgs
parents:
diff changeset
    62
    }
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
void CTFbsGlyphDataPanic::ConstructL()
hgs
parents:
diff changeset
    65
    {
hgs
parents:
diff changeset
    66
    User::LeaveIfNull(iFbs = RFbsSession::GetSession());
hgs
parents:
diff changeset
    67
    User::LeaveIfNull(iTs = (CFbsTypefaceStore*)CFbsTypefaceStore::NewL(NULL));
hgs
parents:
diff changeset
    68
    User::LeaveIfError(iTs->GetNearestFontToDesignHeightInPixels((CFont*&)iFont, TFontSpec(KTypefaceName, 15)));
hgs
parents:
diff changeset
    69
    User::LeaveIfError(iSgDriver.Open());
hgs
parents:
diff changeset
    70
    
hgs
parents:
diff changeset
    71
    //initialize the array with ASCII characters from 0020 to 007F
hgs
parents:
diff changeset
    72
    iGlyphCodes = new(ELeave) TUint[KNumGlyphCodes];
hgs
parents:
diff changeset
    73
    for (TInt i = 0; i < KNumGlyphCodes; ++i)
hgs
parents:
diff changeset
    74
        {
hgs
parents:
diff changeset
    75
        TUint asciiCode = i+0x20; 
hgs
parents:
diff changeset
    76
        iGlyphCodes[i] = DejaVuASCIIToGlyphCode[asciiCode];
hgs
parents:
diff changeset
    77
        }
hgs
parents:
diff changeset
    78
    }
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
void CTFbsGlyphDataPanic::RunTestCaseL(TInt /*aCurTestCase*/)
hgs
parents:
diff changeset
    81
    {
hgs
parents:
diff changeset
    82
    ((CTFbsGlyphDataPanicStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
hgs
parents:
diff changeset
    83
    TInt testCase = -1;
hgs
parents:
diff changeset
    84
    _LIT(KCaseNumber, "CaseNumber");
hgs
parents:
diff changeset
    85
    TEST(iStep->GetIntFromConfig(iStep->ConfigSection(), KCaseNumber, testCase));
hgs
parents:
diff changeset
    86
    
hgs
parents:
diff changeset
    87
    switch(testCase)
hgs
parents:
diff changeset
    88
        {
hgs
parents:
diff changeset
    89
    case 1:
hgs
parents:
diff changeset
    90
        TestGlyphDataIteratorNotInitializedNext();
hgs
parents:
diff changeset
    91
        break;
hgs
parents:
diff changeset
    92
    case 2:
hgs
parents:
diff changeset
    93
        TestGlyphDataIteratorNotInitializedImage();
hgs
parents:
diff changeset
    94
        break;
hgs
parents:
diff changeset
    95
    case 3:
hgs
parents:
diff changeset
    96
        TestGlyphDataIteratorNotInitializedMetrics();
hgs
parents:
diff changeset
    97
        break;
hgs
parents:
diff changeset
    98
    case 4:
hgs
parents:
diff changeset
    99
        TestGlyphDataIteratorNotInitializedGlyphCode();
hgs
parents:
diff changeset
   100
        break;
hgs
parents:
diff changeset
   101
    case 5:
hgs
parents:
diff changeset
   102
        TestGlyphDataIteratorClosedNext();
hgs
parents:
diff changeset
   103
        break;
hgs
parents:
diff changeset
   104
    case 6:
hgs
parents:
diff changeset
   105
        TestGlyphDataIteratorClosedImage();
hgs
parents:
diff changeset
   106
        break;
hgs
parents:
diff changeset
   107
    case 7:
hgs
parents:
diff changeset
   108
        TestGlyphDataIteratorClosedMetrics();
hgs
parents:
diff changeset
   109
        break;
hgs
parents:
diff changeset
   110
    case 8:
hgs
parents:
diff changeset
   111
        TestGlyphDataIteratorClosedGlyphCode();
hgs
parents:
diff changeset
   112
        break;
hgs
parents:
diff changeset
   113
    case 9:
hgs
parents:
diff changeset
   114
        TestGlyphDataIteratorDiscardUsedFont();
hgs
parents:
diff changeset
   115
        break;
hgs
parents:
diff changeset
   116
    case 10:
hgs
parents:
diff changeset
   117
        TestGlyphMetricsArrayIndexNegative();
hgs
parents:
diff changeset
   118
        break;
hgs
parents:
diff changeset
   119
    case 11:
hgs
parents:
diff changeset
   120
    	TestGlyphMetricsArrayIndexTooHigh();
hgs
parents:
diff changeset
   121
        break;
hgs
parents:
diff changeset
   122
    case 12:
hgs
parents:
diff changeset
   123
    	TestGlyphDataIteratorOpenFailed();
hgs
parents:
diff changeset
   124
    	break;
hgs
parents:
diff changeset
   125
    default:
hgs
parents:
diff changeset
   126
        break;
hgs
parents:
diff changeset
   127
        }
hgs
parents:
diff changeset
   128
    TEST(EFalse); // shouldn't reach this point as the test will panic at the end of each test case function
hgs
parents:
diff changeset
   129
    
hgs
parents:
diff changeset
   130
    ((CTFbsGlyphDataPanicStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
hgs
parents:
diff changeset
   131
    ((CTFbsGlyphDataPanicStep*)iStep)->CloseTMSGraphicsStep();
hgs
parents:
diff changeset
   132
    TestComplete();     
hgs
parents:
diff changeset
   133
    ((CTFbsGlyphDataPanicStep*)iStep)->RecordTestResultL();
hgs
parents:
diff changeset
   134
    }
hgs
parents:
diff changeset
   135
hgs
parents:
diff changeset
   136
/**
hgs
parents:
diff changeset
   137
@SYMTestCaseID      GRAPHICS-FBSERV-0651
hgs
parents:
diff changeset
   138
@SYMTestPriority    High
hgs
parents:
diff changeset
   139
@SYMTestType        UT
hgs
parents:
diff changeset
   140
@SYMTestStatus      Implemented
hgs
parents:
diff changeset
   141
@SYMPREQ            PREQ2678
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
@SYMTestCaseDesc
hgs
parents:
diff changeset
   144
	To ensure that calling Next() on an unopened iterator will panic.
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
@SYMTestActions
hgs
parents:
diff changeset
   147
	Call Next() on an RFbsGlyphDataIterator instance without opening it.
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
@SYMTestExpectedResults
hgs
parents:
diff changeset
   150
	The call to Next() should panic with GDI 4.
hgs
parents:
diff changeset
   151
*/
hgs
parents:
diff changeset
   152
void CTFbsGlyphDataPanic::TestGlyphDataIteratorNotInitializedNext()
hgs
parents:
diff changeset
   153
    {
hgs
parents:
diff changeset
   154
    INFO_PRINTF1(_L("Ensure that Next() operation applied on null iterator will panic"));
hgs
parents:
diff changeset
   155
    ((CTFbsGlyphDataPanicStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-0651"));
hgs
parents:
diff changeset
   156
    RFbsGlyphDataIterator iter;
hgs
parents:
diff changeset
   157
    iter.Next(); //expect to panic here
hgs
parents:
diff changeset
   158
    }
hgs
parents:
diff changeset
   159
hgs
parents:
diff changeset
   160
/**
hgs
parents:
diff changeset
   161
@SYMTestCaseID      GRAPHICS-FBSERV-0652
hgs
parents:
diff changeset
   162
@SYMTestPriority    High
hgs
parents:
diff changeset
   163
@SYMTestType        UT
hgs
parents:
diff changeset
   164
@SYMTestStatus      Implemented
hgs
parents:
diff changeset
   165
@SYMPREQ            PREQ2678
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
@SYMTestCaseDesc
hgs
parents:
diff changeset
   168
	To ensure that Image() function applied on an unopened iterator will panic.
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
@SYMTestActions
hgs
parents:
diff changeset
   171
	Call Image() on an RFbsGlyphDataIterator instance without opening it.
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
@SYMTestExpectedResults
hgs
parents:
diff changeset
   174
	The call to Image() should panic with GDI 4.
hgs
parents:
diff changeset
   175
*/
hgs
parents:
diff changeset
   176
void CTFbsGlyphDataPanic::TestGlyphDataIteratorNotInitializedImage()
hgs
parents:
diff changeset
   177
    {
hgs
parents:
diff changeset
   178
    INFO_PRINTF1(_L("Ensure that Image() operation applied on null iterator will panic"));
hgs
parents:
diff changeset
   179
    ((CTFbsGlyphDataPanicStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-0652"));
hgs
parents:
diff changeset
   180
    RFbsGlyphDataIterator iter;
hgs
parents:
diff changeset
   181
    iter.Image(); //expect to panic here
hgs
parents:
diff changeset
   182
    }
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
/**
hgs
parents:
diff changeset
   185
@SYMTestCaseID      GRAPHICS-FBSERV-0653
hgs
parents:
diff changeset
   186
@SYMTestPriority    High
hgs
parents:
diff changeset
   187
@SYMTestType        UT
hgs
parents:
diff changeset
   188
@SYMTestStatus      Implemented
hgs
parents:
diff changeset
   189
@SYMPREQ            PREQ2678
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
@SYMTestCaseDesc
hgs
parents:
diff changeset
   192
	To ensure that Metrics() function applied on null iterator will panic.
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
@SYMTestActions
hgs
parents:
diff changeset
   195
	Call Metrics() on an RFbsGlyphDataIterator instance without opening it.
hgs
parents:
diff changeset
   196
hgs
parents:
diff changeset
   197
@SYMTestExpectedResults
hgs
parents:
diff changeset
   198
	The call to Metrics() should panic with GDI 4.
hgs
parents:
diff changeset
   199
*/
hgs
parents:
diff changeset
   200
void CTFbsGlyphDataPanic::TestGlyphDataIteratorNotInitializedMetrics()
hgs
parents:
diff changeset
   201
    {
hgs
parents:
diff changeset
   202
    INFO_PRINTF1(_L("Ensure that Metrics() operation applied on null iterator will panic"));
hgs
parents:
diff changeset
   203
    ((CTFbsGlyphDataPanicStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-0653"));
hgs
parents:
diff changeset
   204
    RFbsGlyphDataIterator iter;
hgs
parents:
diff changeset
   205
    iter.Metrics(); //expect to panic here
hgs
parents:
diff changeset
   206
    }
hgs
parents:
diff changeset
   207
hgs
parents:
diff changeset
   208
/**
hgs
parents:
diff changeset
   209
@SYMTestCaseID      GRAPHICS-FBSERV-0654
hgs
parents:
diff changeset
   210
@SYMTestPriority    High
hgs
parents:
diff changeset
   211
@SYMTestType        UT
hgs
parents:
diff changeset
   212
@SYMTestStatus      Implemented
hgs
parents:
diff changeset
   213
@SYMPREQ            PREQ2678
hgs
parents:
diff changeset
   214
hgs
parents:
diff changeset
   215
@SYMTestCaseDesc
hgs
parents:
diff changeset
   216
	To ensure that calling GlyphCode() on an unopened iterator will panic.
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
@SYMTestActions
hgs
parents:
diff changeset
   219
	Call GlyphCode() on an RFbsGlyphDataIterator instance without opening it.
hgs
parents:
diff changeset
   220
hgs
parents:
diff changeset
   221
@SYMTestExpectedResults
hgs
parents:
diff changeset
   222
	The call to GlyphCode() should panic with GDI 4.
hgs
parents:
diff changeset
   223
*/
hgs
parents:
diff changeset
   224
void CTFbsGlyphDataPanic::TestGlyphDataIteratorNotInitializedGlyphCode()
hgs
parents:
diff changeset
   225
    {
hgs
parents:
diff changeset
   226
    INFO_PRINTF1(_L("Ensure that GlyphCode() operation applied on null iterator will panic"));
hgs
parents:
diff changeset
   227
    ((CTFbsGlyphDataPanicStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-0654"));
hgs
parents:
diff changeset
   228
    RFbsGlyphDataIterator iter;
hgs
parents:
diff changeset
   229
    iter.GlyphCode(); //expect to panic here
hgs
parents:
diff changeset
   230
    }
hgs
parents:
diff changeset
   231
hgs
parents:
diff changeset
   232
/**
hgs
parents:
diff changeset
   233
@SYMTestCaseID      GRAPHICS-FBSERV-0655
hgs
parents:
diff changeset
   234
@SYMTestPriority    High
hgs
parents:
diff changeset
   235
@SYMTestType        UT
hgs
parents:
diff changeset
   236
@SYMTestStatus      Implemented
hgs
parents:
diff changeset
   237
@SYMPREQ            PREQ2678
hgs
parents:
diff changeset
   238
hgs
parents:
diff changeset
   239
@SYMTestCaseDesc
hgs
parents:
diff changeset
   240
	To ensure that calling Next() on an iterator which has been closed will panic.
hgs
parents:
diff changeset
   241
hgs
parents:
diff changeset
   242
@SYMTestActions
hgs
parents:
diff changeset
   243
	i. Open the glyph data iterator with 1 glyph code.
hgs
parents:
diff changeset
   244
	ii. Call Next() to attempt to move the iterator past the end of the array of glyph codes.
hgs
parents:
diff changeset
   245
	iii. Call Close() and repeat ii.
hgs
parents:
diff changeset
   246
hgs
parents:
diff changeset
   247
@SYMTestExpectedResults
hgs
parents:
diff changeset
   248
	The call to Next() should fail with KErrNotFound, signifying the iterator is still open.
hgs
parents:
diff changeset
   249
	The final call to Next() should panic with GDI 4.
hgs
parents:
diff changeset
   250
*/
hgs
parents:
diff changeset
   251
void CTFbsGlyphDataPanic::TestGlyphDataIteratorClosedNext()
hgs
parents:
diff changeset
   252
    {
hgs
parents:
diff changeset
   253
    INFO_PRINTF1(_L("Ensure that Next() operation applied on iterator which has been closed will panic"));
hgs
parents:
diff changeset
   254
    ((CTFbsGlyphDataPanicStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-0655"));
hgs
parents:
diff changeset
   255
    RFbsGlyphDataIterator iter;
hgs
parents:
diff changeset
   256
    TESTNOERROR(iter.Open(*iFont, iGlyphCodes, 1));
hgs
parents:
diff changeset
   257
    TInt iterErr = iter.Next();
hgs
parents:
diff changeset
   258
    TESTE(iterErr == KErrNotFound, iterErr);
hgs
parents:
diff changeset
   259
    iter.Close();
hgs
parents:
diff changeset
   260
    iter.Next(); //expect to panic here
hgs
parents:
diff changeset
   261
    }
hgs
parents:
diff changeset
   262
hgs
parents:
diff changeset
   263
/**
hgs
parents:
diff changeset
   264
@SYMTestCaseID      GRAPHICS-FBSERV-0656
hgs
parents:
diff changeset
   265
@SYMTestPriority    High
hgs
parents:
diff changeset
   266
@SYMTestType        UT
hgs
parents:
diff changeset
   267
@SYMTestStatus      Implemented
hgs
parents:
diff changeset
   268
@SYMPREQ            PREQ2678
hgs
parents:
diff changeset
   269
hgs
parents:
diff changeset
   270
@SYMTestCaseDesc
hgs
parents:
diff changeset
   271
	To ensure that calling Image() on an iterator which has been closed will panic.
hgs
parents:
diff changeset
   272
hgs
parents:
diff changeset
   273
@SYMTestActions
hgs
parents:
diff changeset
   274
	i. Open the glyph data iterator.
hgs
parents:
diff changeset
   275
	ii. Close the glyph data iterator.
hgs
parents:
diff changeset
   276
	iii. Call Image() on an RFbsGlyphDataIterator instance which has been closed.
hgs
parents:
diff changeset
   277
hgs
parents:
diff changeset
   278
@SYMTestExpectedResults
hgs
parents:
diff changeset
   279
	The call to Image() should panic with GDI 4.
hgs
parents:
diff changeset
   280
*/
hgs
parents:
diff changeset
   281
void CTFbsGlyphDataPanic::TestGlyphDataIteratorClosedImage()
hgs
parents:
diff changeset
   282
    {
hgs
parents:
diff changeset
   283
    INFO_PRINTF1(_L("Ensure that Image() operation applied on iterator which has been closed will panic"));
hgs
parents:
diff changeset
   284
    ((CTFbsGlyphDataPanicStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-0656"));
hgs
parents:
diff changeset
   285
    RFbsGlyphDataIterator iter;
hgs
parents:
diff changeset
   286
    OpenAndCloseIterator(iter);
hgs
parents:
diff changeset
   287
    iter.Image(); //expect to panic here
hgs
parents:
diff changeset
   288
    }
hgs
parents:
diff changeset
   289
hgs
parents:
diff changeset
   290
/**
hgs
parents:
diff changeset
   291
@SYMTestCaseID      GRAPHICS-FBSERV-0657
hgs
parents:
diff changeset
   292
@SYMTestPriority    High
hgs
parents:
diff changeset
   293
@SYMTestType        UT
hgs
parents:
diff changeset
   294
@SYMTestStatus      Implemented
hgs
parents:
diff changeset
   295
@SYMPREQ            PREQ2678
hgs
parents:
diff changeset
   296
hgs
parents:
diff changeset
   297
@SYMTestCaseDesc
hgs
parents:
diff changeset
   298
	To ensure that calling Metrics() on an iterator which has been closed will panic.
hgs
parents:
diff changeset
   299
hgs
parents:
diff changeset
   300
@SYMTestActions
hgs
parents:
diff changeset
   301
	i. Open the glyph data iterator.
hgs
parents:
diff changeset
   302
	ii. Close the glyph data iterator.
hgs
parents:
diff changeset
   303
	iii. Call Metrics() on an RFbsGlyphDataIterator instance which has been closed.
hgs
parents:
diff changeset
   304
hgs
parents:
diff changeset
   305
@SYMTestExpectedResults
hgs
parents:
diff changeset
   306
	The call to Metrics() should panic with GDI 4.
hgs
parents:
diff changeset
   307
*/
hgs
parents:
diff changeset
   308
void CTFbsGlyphDataPanic::TestGlyphDataIteratorClosedMetrics()
hgs
parents:
diff changeset
   309
    {
hgs
parents:
diff changeset
   310
    INFO_PRINTF1(_L("Ensure that Metrics()operation applied on iterator which has been closed will panic"));
hgs
parents:
diff changeset
   311
    ((CTFbsGlyphDataPanicStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-0657"));
hgs
parents:
diff changeset
   312
    RFbsGlyphDataIterator iter;
hgs
parents:
diff changeset
   313
    OpenAndCloseIterator(iter);
hgs
parents:
diff changeset
   314
    iter.Metrics(); //expect to panic here
hgs
parents:
diff changeset
   315
    }
hgs
parents:
diff changeset
   316
hgs
parents:
diff changeset
   317
/**
hgs
parents:
diff changeset
   318
@SYMTestCaseID      GRAPHICS-FBSERV-0658
hgs
parents:
diff changeset
   319
@SYMTestPriority    High
hgs
parents:
diff changeset
   320
@SYMTestType        UT
hgs
parents:
diff changeset
   321
@SYMTestStatus      In development
hgs
parents:
diff changeset
   322
@SYMPREQ            PREQ2678
hgs
parents:
diff changeset
   323
hgs
parents:
diff changeset
   324
@SYMTestCaseDesc
hgs
parents:
diff changeset
   325
	To ensure that calling GlyphCode() on an iterator which has been closed will panic.
hgs
parents:
diff changeset
   326
hgs
parents:
diff changeset
   327
@SYMTestActions
hgs
parents:
diff changeset
   328
	i. Open the glyph data iterator.
hgs
parents:
diff changeset
   329
	ii. Close the glyph data iterator.
hgs
parents:
diff changeset
   330
	iii. Call GlyphCode() on an RFbsGlyphDataIterator instance which has been closed.
hgs
parents:
diff changeset
   331
hgs
parents:
diff changeset
   332
@SYMTestExpectedResults
hgs
parents:
diff changeset
   333
	The call to GlyphCode() should panic with GDI 4.
hgs
parents:
diff changeset
   334
*/
hgs
parents:
diff changeset
   335
void CTFbsGlyphDataPanic::TestGlyphDataIteratorClosedGlyphCode()
hgs
parents:
diff changeset
   336
    {
hgs
parents:
diff changeset
   337
    INFO_PRINTF1(_L("Ensure that GlyphCode() operation applied on iterator which has been closed will panic"));
hgs
parents:
diff changeset
   338
    ((CTFbsGlyphDataPanicStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-0658"));
hgs
parents:
diff changeset
   339
    RFbsGlyphDataIterator iter;
hgs
parents:
diff changeset
   340
    OpenAndCloseIterator(iter);
hgs
parents:
diff changeset
   341
    iter.GlyphCode(); //expect to panic here
hgs
parents:
diff changeset
   342
    }
hgs
parents:
diff changeset
   343
hgs
parents:
diff changeset
   344
// the function opens and then closes an iterator
hgs
parents:
diff changeset
   345
void CTFbsGlyphDataPanic::OpenAndCloseIterator(RFbsGlyphDataIterator& aIterator) 
hgs
parents:
diff changeset
   346
    {
hgs
parents:
diff changeset
   347
    TESTNOERROR(aIterator.Open(*iFont, iGlyphCodes, 1));
hgs
parents:
diff changeset
   348
    aIterator.Close();
hgs
parents:
diff changeset
   349
    }
hgs
parents:
diff changeset
   350
hgs
parents:
diff changeset
   351
/**
hgs
parents:
diff changeset
   352
@SYMTestCaseID      GRAPHICS-FBSERV-0647
hgs
parents:
diff changeset
   353
@SYMTestPriority    High
hgs
parents:
diff changeset
   354
@SYMTestType        UT
hgs
parents:
diff changeset
   355
@SYMTestStatus      Implemented
hgs
parents:
diff changeset
   356
@SYMPREQ            PREQ2678
hgs
parents:
diff changeset
   357
hgs
parents:
diff changeset
   358
@SYMTestCaseDesc
hgs
parents:
diff changeset
   359
	To ensure that attempting to use an invalid Font handle will cause a panic when iterating through an RFbsGlyphDataIterator. 
hgs
parents:
diff changeset
   360
hgs
parents:
diff changeset
   361
@SYMTestActions
hgs
parents:
diff changeset
   362
	i. Open the glyph data iterator.
hgs
parents:
diff changeset
   363
	ii. Release the font associated with the iterator.
hgs
parents:
diff changeset
   364
	iii. Attempt to use invalid Font handle by iterating through the iterator.
hgs
parents:
diff changeset
   365
hgs
parents:
diff changeset
   366
@SYMTestExpectedResults
hgs
parents:
diff changeset
   367
	The call to Next() after the associated Font has been released should cause panic FBSERV -8 when the invalid Font handle is passed to FBServ.
hgs
parents:
diff changeset
   368
*/
hgs
parents:
diff changeset
   369
void CTFbsGlyphDataPanic::TestGlyphDataIteratorDiscardUsedFont()
hgs
parents:
diff changeset
   370
    {
hgs
parents:
diff changeset
   371
    INFO_PRINTF1(_L("Ensure that attempting to use an invalid Font handle will cause a panic when iterating through an RFbsGlyphDataIterator"));
hgs
parents:
diff changeset
   372
    ((CTFbsGlyphDataPanicStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-0647"));
hgs
parents:
diff changeset
   373
    
hgs
parents:
diff changeset
   374
    RFbsGlyphDataIterator iter;
hgs
parents:
diff changeset
   375
    TESTNOERROR(iter.Open(*iFont, iGlyphCodes, KNumGlyphCodes));
hgs
parents:
diff changeset
   376
    iTs->ReleaseFont(iFont);
hgs
parents:
diff changeset
   377
    
hgs
parents:
diff changeset
   378
    for (TInt i = 0; i < KNumGlyphCodes; i++)
hgs
parents:
diff changeset
   379
        {
hgs
parents:
diff changeset
   380
        //should panic when attempt is made to use invalid Font handle
hgs
parents:
diff changeset
   381
        iter.Next();
hgs
parents:
diff changeset
   382
        }
hgs
parents:
diff changeset
   383
hgs
parents:
diff changeset
   384
    iter.Close(); //shouldn't reach this line. If for some reason the code doesn't panic test should fail.
hgs
parents:
diff changeset
   385
    TEST(EFalse);  
hgs
parents:
diff changeset
   386
    }
hgs
parents:
diff changeset
   387
    
hgs
parents:
diff changeset
   388
hgs
parents:
diff changeset
   389
/**
hgs
parents:
diff changeset
   390
@SYMTestCaseID      GRAPHICS-FBSERV-0648
hgs
parents:
diff changeset
   391
@SYMTestPriority    High
hgs
parents:
diff changeset
   392
@SYMTestType        UT
hgs
parents:
diff changeset
   393
@SYMTestStatus      Implemented
hgs
parents:
diff changeset
   394
@SYMPREQ            PREQ2678
hgs
parents:
diff changeset
   395
hgs
parents:
diff changeset
   396
@SYMTestCaseDesc
hgs
parents:
diff changeset
   397
	To ensure that accessing the glyph metrics entry with negative index will cause a panic.
hgs
parents:
diff changeset
   398
hgs
parents:
diff changeset
   399
@SYMTestActions
hgs
parents:
diff changeset
   400
	i. Retrieve glyph metrics array.
hgs
parents:
diff changeset
   401
	ii. Try to access glyph metrics entry with a negative index.
hgs
parents:
diff changeset
   402
hgs
parents:
diff changeset
   403
@SYMTestExpectedResults
hgs
parents:
diff changeset
   404
	Should panic with GDI 5.
hgs
parents:
diff changeset
   405
*/
hgs
parents:
diff changeset
   406
void CTFbsGlyphDataPanic::TestGlyphMetricsArrayIndexNegative()
hgs
parents:
diff changeset
   407
    {
hgs
parents:
diff changeset
   408
    INFO_PRINTF1(_L("Ensure that accessing the glyph metrics entry with negative index will cause a panic"));
hgs
parents:
diff changeset
   409
    ((CTFbsGlyphDataPanicStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-0648"));
hgs
parents:
diff changeset
   410
    RFbsGlyphMetricsArray glyphMetricsArray;
hgs
parents:
diff changeset
   411
hgs
parents:
diff changeset
   412
    // Retrieve list of metrics
hgs
parents:
diff changeset
   413
    TESTNOERROR(glyphMetricsArray.Get(*iFont, iGlyphCodes, 2));
hgs
parents:
diff changeset
   414
    TEST(2 == glyphMetricsArray.Count());
hgs
parents:
diff changeset
   415
    glyphMetricsArray[-1];
hgs
parents:
diff changeset
   416
    }
hgs
parents:
diff changeset
   417
hgs
parents:
diff changeset
   418
/**
hgs
parents:
diff changeset
   419
@SYMTestCaseID      GRAPHICS-FBSERV-0649
hgs
parents:
diff changeset
   420
@SYMTestPriority    High
hgs
parents:
diff changeset
   421
@SYMTestType        UT
hgs
parents:
diff changeset
   422
@SYMTestStatus      Implemented
hgs
parents:
diff changeset
   423
@SYMPREQ            PREQ2678
hgs
parents:
diff changeset
   424
hgs
parents:
diff changeset
   425
@SYMTestCaseDesc
hgs
parents:
diff changeset
   426
	To ensure that accessing the glyph metrics entry with an index greater than number
hgs
parents:
diff changeset
   427
	of elements in array will cause a panic.
hgs
parents:
diff changeset
   428
hgs
parents:
diff changeset
   429
@SYMTestActions
hgs
parents:
diff changeset
   430
	i. Retrieve a glyph metrics array with total number of elements equals 2 
hgs
parents:
diff changeset
   431
	ii. Try to access glyph metrics entry with index equals 2.
hgs
parents:
diff changeset
   432
hgs
parents:
diff changeset
   433
@SYMTestExpectedResults
hgs
parents:
diff changeset
   434
	Should panic with GDI 5.
hgs
parents:
diff changeset
   435
*/
hgs
parents:
diff changeset
   436
void CTFbsGlyphDataPanic::TestGlyphMetricsArrayIndexTooHigh()
hgs
parents:
diff changeset
   437
    {
hgs
parents:
diff changeset
   438
    INFO_PRINTF1(_L("Ensure that accessing the glyph metrics entry with index greater than number of elemnets in array will cause a panic"));
hgs
parents:
diff changeset
   439
    ((CTFbsGlyphDataPanicStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-0649"));
hgs
parents:
diff changeset
   440
    RFbsGlyphMetricsArray glyphMetricsArray;
hgs
parents:
diff changeset
   441
hgs
parents:
diff changeset
   442
    // Retrieve list of metrics
hgs
parents:
diff changeset
   443
    TESTNOERROR(glyphMetricsArray.Get(*iFont, iGlyphCodes, 2));
hgs
parents:
diff changeset
   444
    TEST(2 == glyphMetricsArray.Count());
hgs
parents:
diff changeset
   445
    glyphMetricsArray[2]; //expect to panic here as index varies 0..1
hgs
parents:
diff changeset
   446
    }
hgs
parents:
diff changeset
   447
hgs
parents:
diff changeset
   448
/**
hgs
parents:
diff changeset
   449
@SYMTestCaseID      GRAPHICS-FBSERV-0667
hgs
parents:
diff changeset
   450
@SYMTestPriority    High
hgs
parents:
diff changeset
   451
@SYMTestType        UT
hgs
parents:
diff changeset
   452
@SYMTestStatus      Implemented
hgs
parents:
diff changeset
   453
@SYMPREQ            PREQ2678
hgs
parents:
diff changeset
   454
hgs
parents:
diff changeset
   455
@SYMTestCaseDesc
hgs
parents:
diff changeset
   456
	To ensure that if RFbsGlyphDataIterator::Open() fails, it is still in the closed state
hgs
parents:
diff changeset
   457
	and cannot be used.
hgs
parents:
diff changeset
   458
hgs
parents:
diff changeset
   459
@SYMTestActions
hgs
parents:
diff changeset
   460
	i. Open an RFbsGlyphDataIterator on a font.  
hgs
parents:
diff changeset
   461
	ii. Attempt to open a second RFbsGlyphDataIterator on the same font.
hgs
parents:
diff changeset
   462
	ii. Attempt to use the properties of the iterator.
hgs
parents:
diff changeset
   463
hgs
parents:
diff changeset
   464
@SYMTestExpectedResults
hgs
parents:
diff changeset
   465
	The call to GlyphCode() should panic with FBSCLI 31 since the iterator should be in a closed state.
hgs
parents:
diff changeset
   466
*/
hgs
parents:
diff changeset
   467
void CTFbsGlyphDataPanic::TestGlyphDataIteratorOpenFailed()
hgs
parents:
diff changeset
   468
	{
hgs
parents:
diff changeset
   469
    INFO_PRINTF1(_L("Ensure that if RFbsGlyphDataIterator::Open() fails, it is still in the closed state and cannot be used"));
hgs
parents:
diff changeset
   470
    ((CTFbsGlyphDataPanicStep*)iStep)->SetTestStepID(_L("GRAPHICS-FBSERV-0667"));
hgs
parents:
diff changeset
   471
   
hgs
parents:
diff changeset
   472
    CFbsFont* bitmapFont = NULL;
hgs
parents:
diff changeset
   473
    TInt err = iTs->GetNearestFontToDesignHeightInPixels((CFont*&)bitmapFont, TFontSpec(_L("Digital"), 14));
hgs
parents:
diff changeset
   474
    TESTNOERROR(err);
hgs
parents:
diff changeset
   475
    TEST(!bitmapFont->IsOpenFont());
hgs
parents:
diff changeset
   476
    
hgs
parents:
diff changeset
   477
    RFbsGlyphDataIterator iter;
hgs
parents:
diff changeset
   478
    err = iter.Open(*bitmapFont, iGlyphCodes, 2);
hgs
parents:
diff changeset
   479
    TEST(err == KErrNotSupported);
hgs
parents:
diff changeset
   480
        
hgs
parents:
diff changeset
   481
    iter.GlyphCode(); // Should panic here as iter should be closed.
hgs
parents:
diff changeset
   482
    TEST(EFalse);     //shouldn't reach this line. If for some reason the code doesn't panic test should fail.
hgs
parents:
diff changeset
   483
    
hgs
parents:
diff changeset
   484
	}
hgs
parents:
diff changeset
   485
//--------------
hgs
parents:
diff changeset
   486
__CONSTRUCT_STEP__(FbsGlyphDataPanic)
hgs
parents:
diff changeset
   487