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