diff -r b9ad20498fb4 -r 8b9155204a54 textrendering/texthandling/tfields/T_ROMAN.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textrendering/texthandling/tfields/T_ROMAN.CPP Fri Jun 04 10:37:54 2010 +0100 @@ -0,0 +1,184 @@ +/* +* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +#include "../sfields/FLDNUMS.H" +#include +#include + +#define UNUSED_VAR(a) a = a + +const TInt KTestCleanupStack=0x40; + +LOCAL_D RTest test(_L("Testing denery to Roman numeral converter")); +LOCAL_D CTrapCleanup* TheTrapCleanup; + +// + +LOCAL_C void GetValue(HBufC* aBuf,TInt aDenery,TDeneryToCharBase& aNumeral) + { + TPtr ptr=aBuf->Des(); + TInt size=aNumeral.DeneryToChar(ptr,aDenery); + if (size>0) + { + aBuf->ReAlloc(size); + ptr=aBuf->Des(); + size = aNumeral.DeneryToChar(ptr,aDenery); + test(size==KErrNone); + } + } + + +LOCAL_D void DisplayValue(HBufC* aBuf,TInt aDenery,TDeneryToCharBase& aNumeral) + { + GetValue(aBuf,aDenery,aNumeral); + test.Printf(_L("%D: "),aDenery); + test.Printf(*aBuf); + test.Printf(_L("\n")); + } + + +LOCAL_C void test1() + { + test.Start(_L("Testing with buffer of adequate size")); + test.Next(_L(" @SYMTestCaseID:SYSLIB-ETEXT-LEGACY-T_ROMAN-0001 ")); + HBufC* hbuf = HBufC::NewL(10); + CleanupStack::PushL(hbuf); + TRomanNumeral roman; + GetValue(hbuf,4,roman); + TPtr buf = hbuf->Des(); + test(buf==_L("IV")); + CleanupStack::PopAndDestroy(); + // + test.Next(_L("Testing with inadequate buffer")); + HBufC* minibuf = HBufC::NewL(1); + CleanupStack::PushL(minibuf); + GetValue(minibuf,4,roman); + TPtr buf2 = minibuf->Des(); + test(buf2==_L("IV")); + CleanupStack::PopAndDestroy(); + } + + +LOCAL_C void test2() + { + test.Next(_L("Testing Roman numerals for a range of denery values")); + HBufC* hbuf = HBufC::NewL(10); + CleanupStack::PushL(hbuf); + TRomanNumeral roman; + + DisplayValue(hbuf,1,roman); + test(0 == hbuf->CompareC(_L("i"), 1, 0)); + DisplayValue(hbuf,4,roman); + test(0 == hbuf->CompareC(_L("iv"), 1, 0)); + DisplayValue(hbuf,9,roman); + test(0 == hbuf->CompareC(_L("ix"), 1, 0)); + DisplayValue(hbuf,17,roman); + test(0 == hbuf->CompareC(_L("xvii"), 1, 0)); + DisplayValue(hbuf,34,roman); + test(0 == hbuf->CompareC(_L("xxxiv"), 1, 0)); + DisplayValue(hbuf,99,roman); + test(0 == hbuf->CompareC(_L("xcix"), 1, 0)); + DisplayValue(hbuf,143,roman); + test(0 == hbuf->CompareC(_L("cxliii"), 1, 0)); + DisplayValue(hbuf,1982,roman); + test(0 == hbuf->CompareC(_L("mcmlxxxii"), 1, 0)); + + CleanupStack::PopAndDestroy(); + } + + +LOCAL_C void test3() + { + test.Next(_L("Testing alphabetic numerals for a range of denery values")); + HBufC* hbuf = HBufC::NewL(10); + CleanupStack::PushL(hbuf); + TAlphabeticNumeral alpha; + + DisplayValue(hbuf,1,alpha); + test(0 == hbuf->CompareC(_L("a"), 1, 0)); + DisplayValue(hbuf,4,alpha); + test(0 == hbuf->CompareC(_L("d"), 1, 0)); + DisplayValue(hbuf,9,alpha); + test(0 == hbuf->CompareC(_L("i"), 1, 0)); + DisplayValue(hbuf,17,alpha); + test(0 == hbuf->CompareC(_L("q"), 1, 0)); + DisplayValue(hbuf,34,alpha); + test(0 == hbuf->CompareC(_L("ah"), 1, 0)); + DisplayValue(hbuf,99,alpha); + test(0 == hbuf->CompareC(_L("cu"), 1, 0)); + DisplayValue(hbuf,143,alpha); + test(0 == hbuf->CompareC(_L("em"), 1, 0)); + DisplayValue(hbuf,1982,alpha); + test(0 == hbuf->CompareC(_L("bxf"), 1, 0)); + + CleanupStack::PopAndDestroy(); + } + + +LOCAL_C void runTests() +// Test the fields dll. +// + { + // test with HBufs both large enough and too small + test1(); + + // test for a range of denery values + test2(); + + // Test alphabetics + test3(); + } + + +LOCAL_C void setupCleanup() +// +// Initialise the cleanup stack. +// + { + + TheTrapCleanup=CTrapCleanup::New(); + TRAPD(r,\ + {\ + for (TInt i=KTestCleanupStack;i>0;i--)\ + CleanupStack::PushL((TAny*)1);\ + test(r==KErrNone);\ + CleanupStack::Pop(KTestCleanupStack);\ + }); + } + + +GLDEF_C TInt E32Main() +// +// Test the streaming framework. +// + { + + test.Title(); + + __UHEAP_MARK; + setupCleanup(); + + TRAPD(r,runTests()); + test(r == KErrNone); + + delete TheTrapCleanup; + __UHEAP_MARKEND; + test.End(); + test.Close(); + return 0; + }