lafagnosticuifoundation/uigraphicsutils/tef/T_DigitWidth.cpp
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lafagnosticuifoundation/uigraphicsutils/tef/T_DigitWidth.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,307 @@
+// Copyright (c) 2005-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:
+//
+
+/**
+ @file 
+ @internalComponent - Internal Symbian test code  
+*/
+
+#include <gdi.h>
+#include <gulutil.h>
+#include <bitdev.h>
+#include <fbs.h>
+#include "T_DigitWidth.h"
+
+CTestFont::CTestFont(CT_DigitWidth* aDigitWidth):iDigitWidth(aDigitWidth)
+	{
+	}
+
+CTestFont::~CTestFont()
+	{
+	}
+
+TUid CTestFont::DoTypeUid() const
+	{
+	return TUid::Uid(1010);
+	}
+
+TInt CTestFont::DoHeightInPixels() const
+	{
+	return 12;
+	}
+
+TInt CTestFont::DoAscentInPixels() const
+	{
+	return 10;
+	}
+
+TInt CTestFont::DoCharWidthInPixels(TChar aChar) const
+	{
+	switch (aChar)
+		{
+	//EDigitTypeWestern = 0x0030
+	case 0x0030:
+		return 6;
+	case 0x0031:
+		return 6;
+	case 0x0032:
+		return 6;
+	case 0x0033:
+		return 6;
+	case 0x0034:
+		return 6;
+	case 0x0035:
+		return 7;  //widest
+	case 0x0036:
+		return 6;
+	case 0x0037:
+		return 6;
+	case 0x0038:
+		return 6;
+	case 0x0039:
+		return 6;
+	//EDigitTypeArabicIndic = 0x0660
+	case 0x0660:
+		return 8;
+	case 0x0661:
+		return 8;
+	case 0x0662:
+		return 9; //widest
+	case 0x0663:
+		return 8;
+	case 0x0664:
+		return 8;
+	case 0x0665:
+		return 8;
+	case 0x0666:
+		return 8;
+	case 0x0667:
+		return 8;
+	case 0x0668:
+		return 8;
+	case 0x0669:
+		return 8;
+	//EDigitTypeEasternArabicIndic = 0x6F0
+	case 0x06F0:
+		return 4;
+	case 0x06F1:
+		return 4;
+	case 0x06F2:
+		return 4;
+	case 0x06F3:
+		return 4;
+	case 0x06F4:
+		return 4;
+	case 0x06F5:
+		return 4;
+	case 0x06F6:
+		return 4;
+	case 0x06F7:
+		return 4;
+	case 0x06F8:
+		return 4;
+	case 0x06F9:
+		return 5; //widest
+	//EDigitTypeDevanagari = 0x0966
+	case 0x0966:
+		return 11;//widest
+	case 0x0967:
+		return 10;
+	case 0x0968:
+		return 10;
+	case 0x0969:
+		return 10;
+	case 0x096A:
+		return 10;
+	case 0x096B:
+		return 10;
+	case 0x096C:
+		return 10;
+	case 0x096D:
+		return 10;
+	case 0x096E:
+		return 10;
+	case 0x096F:
+		return 10;
+	//EDigitTypeThai = 0x0E50
+	case 0x0E50:
+		return 15;
+	case 0x0E51:
+		return 15;
+	case 0x0E52:
+		return 15;
+	case 0x0E53:
+		return 15;
+	case 0x0E54:
+		return 15;
+	case 0x0E55:
+		return 15;
+	case 0x0E56:
+		return 15;
+	case 0x0E57:
+		return 15;
+	case 0x0E58:
+		return 16;//widest
+	case 0x0E59:
+		return 15;
+		}
+	iDigitWidth->TEST(EFalse);
+	return 0;
+	}
+
+TInt CTestFont::DoTextWidthInPixels(const TDesC& aText) const
+	{
+	TInt total = 0;
+	const TText* p = aText.Ptr();
+	const TText* end = p + aText.Length();
+	for (;p != end; ++p)
+		total += CharWidthInPixels(*p);
+	return total;
+	}
+
+TInt CTestFont::DoBaselineOffsetInPixels() const
+	{
+	return 10;
+	}
+
+TInt CTestFont::DoTextCount(const TDesC& aText,TInt aWidthInPixels) const
+	{
+	TInt excess;
+	return TextCount(aText, aWidthInPixels, excess);
+	}
+
+TInt CTestFont::DoTextCount(const TDesC& aText,TInt aWidthInPixels,TInt& aExcessWidthInPixels) const
+	{
+	aExcessWidthInPixels = aWidthInPixels;
+	const TText* start = aText.Ptr();
+	const TText* end = start + aText.Length();
+	const TText* p = start;
+	TInt width;
+	while (p != end
+		&& (width = CharWidthInPixels(*p)) <= aExcessWidthInPixels)
+		{
+		aExcessWidthInPixels -= width;
+		++p;
+		}
+	return p - start;
+	}
+
+TInt CTestFont::DoMaxCharWidthInPixels() const
+	{
+	return 10;
+	}
+
+TInt CTestFont::DoMaxNormalCharWidthInPixels() const
+	{
+	return 10;
+	}
+
+TFontSpec CTestFont::DoFontSpecInTwips() const
+	{
+	return TFontSpec(KTestFontName, 12);
+	}
+
+
+/*void CTestFont::testResult(TInt aResult)
+	{
+	if (aResult==1)
+		INFO_PRINTF1(_L("test passed\n"));
+//	else
+//		INFO_PRINTF1(_L("test failed\n"));
+	}*/
+
+TInt CT_DigitWidth::TestFindWidthOfWidestDigitType(CFont* aFont, TDigitType aDigitType)
+	{
+	TFindWidthOfWidestDigitType finder(aDigitType);
+    return finder.MaximumWidthInPixels(*aFont);
+	}
+
+void CT_DigitWidth::TestFontsL()
+	{
+	CTestFont font(this);
+	TFontSpec font_spec = font.FontSpecInTwips();
+
+	INFO_PRINTF1(_L("-------------\r\n"));
+	INFO_PRINTF2(_L("Font: %S\r\n"), &(font_spec.iTypeface.iName));
+
+	TInt maxWidth = 0;
+
+	maxWidth = TestFindWidthOfWidestDigitType(&font, EDigitTypeWestern);
+	INFO_PRINTF2(_L("EDigitTypeWestern, MaxWidth=%d\r\n"), maxWidth);
+	TEST(maxWidth == 7);
+
+	maxWidth = TestFindWidthOfWidestDigitType(&font, EDigitTypeArabicIndic);
+	INFO_PRINTF2(_L("EDigitTypeArabicIndic, MaxWidth=%d\r\n"), maxWidth);
+	TEST(maxWidth == 9);
+
+	maxWidth = TestFindWidthOfWidestDigitType(&font, EDigitTypeEasternArabicIndic);
+	INFO_PRINTF2(_L("EDigitTypeEasternArabicIndic, MaxWidth=%d\r\n"), maxWidth);
+	TEST(maxWidth == 5);
+
+	maxWidth = TestFindWidthOfWidestDigitType(&font, EDigitTypeDevanagari);
+	INFO_PRINTF2(_L("EDigitTypeDevanagari, MaxWidth=%d\r\n"), maxWidth);
+	TEST(maxWidth == 11);
+
+	maxWidth = TestFindWidthOfWidestDigitType(&font, EDigitTypeThai);
+	INFO_PRINTF2(_L("EDigitTypeThai, MaxWidth=%d\r\n"), maxWidth);
+	TEST(maxWidth == 16);
+	}
+
+void CT_DigitWidth::DoTestsL()
+    {
+
+	INFO_PRINTF1(_L("Test WidestDigitType"));
+	TestFontsL();
+    
+	}
+
+
+
+CT_DigitWidth::~CT_DigitWidth()
+/**
+   Destructor
+ */
+	{
+	}
+
+
+CT_DigitWidth::CT_DigitWidth()
+/**
+   Constructor
+ */
+	{
+	// Call base class method to set up the human readable name for logging
+	SetTestStepName(KT_DigitWidth);
+	}
+
+
+TVerdict CT_DigitWidth::doTestStepL()
+{
+	INFO_PRINTF1(_L("Test Started"));
+
+	__UHEAP_MARK;
+
+	INFO_PRINTF1(_L("Digit Width"));
+
+    TRAPD(err, DoTestsL());
+    TEST(err==KErrNone);
+
+
+	INFO_PRINTF1(_L("Test Finished"));
+
+    __UHEAP_MARKEND;
+
+	return TestStepResult();
+}