diff -r 000000000000 -r a41df078684a kerneltest/e32test/locale/t_names.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kerneltest/e32test/locale/t_names.cpp Mon Oct 19 15:55:17 2009 +0100 @@ -0,0 +1,233 @@ +// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "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: +// e32test\locale\t_names.cpp +// Overview: +// Test Date, Time and Currency Symbol locale settings. +// API Information: +// TDayName,TDayNameAbb,TMonthName, TMonthNameAbb, TDateSuffix, TAmPmName, +// TCurrencySymbol. +// Details: +// - Construct and set the full, abbreviated text name for a day of the week, +// month and check it is as specified. +// - Construct and set date suffix text for a specific day in the month and +// test that constructor, TDateSuffix::Set panics when invalid parameters +// are passed. +// - Construct and assign current locale's text identifying time before noon, +// after noon and check it is as expected. +// - Assign the current locale's currency symbol with different text and check +// it is as expected. +// Platforms/Drives/Compatibility: +// All. +// Assumptions/Requirement/Pre-requisites: +// Failures and causes: +// Base Port information: +// +// + +#include + +#ifdef __VC32__ + // Solve compilation problem caused by non-English locale + #pragma setlocale("english") +#endif + +LOCAL_D RTest test(_L("T_NAMES")); + +void TestDayName() + { + test.Start(_L("TDayName")); + TDayName name1; + test(name1.Compare(_L("Monday"))==KErrNone); + TDayName name2(ESunday); + test(name2.Compare(_L("Sunday"))==KErrNone); + name1.Set(EWednesday); + test(name1.Compare(_L("Wednesday"))==KErrNone); + } + +void TestDayNameAbb() + { + test.Next(_L("TDayNameAbb")); + TDayNameAbb name1; + test(name1.Compare(_L("Mon"))==KErrNone); + TDayNameAbb name2(ETuesday); + test(name2.Compare(_L("Tue"))==KErrNone); + name1.Set(ESaturday); + test(name1.Compare(_L("Sat"))==KErrNone); + } + +void TestMonthName() + { + test.Next(_L("TMonthName")); + TMonthName name1; + test(name1.Compare(_L("January"))==KErrNone); + TMonthName name2(EDecember); + test(name2.Compare(_L("December"))==KErrNone); + name1.Set(EMarch); + test(name1.Compare(_L("March"))==KErrNone); + } + +void TestMonthNameAbb() + { + test.Next(_L("TMonthNameAbb")); + TMonthNameAbb name1; + test(name1.Compare(_L("Jan"))==KErrNone); + TMonthNameAbb name2(EFebruary); + test(name2.Compare(_L("Feb"))==KErrNone); + name1.Set(ENovember); + test(name1.Compare(_L("Nov"))==KErrNone); + } + +TInt TestThread1(TAny* Ptr) +// +// Used in TestDateSuffix() to test the constructor panics when silly parameters are passed +// + { + TDateSuffix ds((TInt) Ptr); + (void)ds; + return(KErrNone); + } + +TInt TestThread2(TAny* Ptr) +// +// Used in TestDateSuffix() to test TDateSuffix::Set panics when silly parameters are passed +// + { + TDateSuffix suff(0); + suff.Set((TInt) Ptr); + return(KErrNone); + } + +void TestDateSuffix() + { + test.Next(_L("TDateSuffix")); + + test.Start(_L("Simple creation and assignment")); + TDateSuffix suff1; + test(suff1.Compare(_L("st"))==KErrNone); + TDateSuffix suff2(1); + test(suff2.Compare(_L("nd"))==KErrNone); + suff1.Set(2); + test(suff1.Compare(_L("rd"))==KErrNone); + + test.Next(_L("Constructor in a thread")); + RThread thread; + TRequestStatus stat; + thread.Create(_L("Test Thread"),TestThread1,KDefaultStackSize,0x100,0x200,(TAny*)0); + thread.Logon(stat); + thread.Resume(); + User::WaitForRequest(stat); + test(thread.ExitType()==EExitKill); + CLOSE_AND_WAIT(thread); + + test.Next(_L("Constructor panics for -1")); + thread.Create(_L("Test Thread"),TestThread1,KDefaultStackSize,0x100,0x200,(TAny*)-1); + thread.Logon(stat); + // don't want just in time debugging as we trap panics + TBool justInTime=User::JustInTime(); + User::SetJustInTime(EFalse); + thread.Resume(); + User::WaitForRequest(stat); + User::SetJustInTime(justInTime); + test(thread.ExitType()==EExitPanic); + CLOSE_AND_WAIT(thread); + + test.Next(_L("Constructor panics for KMaxSuffices")); + thread.Create(_L("Test Thread"),TestThread1,KDefaultStackSize,0x100,0x200,(TAny*)KMaxSuffixes); + thread.Logon(stat); + User::SetJustInTime(EFalse); + thread.Resume(); + User::WaitForRequest(stat); + User::SetJustInTime(justInTime); + test(thread.ExitType()==EExitPanic); + CLOSE_AND_WAIT(thread); + + test.Next(_L("Set in a thread")); + thread.Create(_L("Test Thread"),TestThread2,KDefaultStackSize,0x100,0x200,(TAny*)0); + thread.Logon(stat); + thread.Resume(); + User::WaitForRequest(stat); + test(thread.ExitType()==EExitKill); + CLOSE_AND_WAIT(thread); + + test.Next(_L("Set panics for -1")); + thread.Create(_L("Test Thread"),TestThread2,KDefaultStackSize,0x100,0x200,(TAny*)-1); + thread.Logon(stat); + User::SetJustInTime(EFalse); + thread.Resume(); + User::WaitForRequest(stat); + User::SetJustInTime(justInTime); + test(thread.ExitType()==EExitPanic); + CLOSE_AND_WAIT(thread); + + test.Next(_L("Set panics for KMaxSuffices")); + thread.Create(_L("Test Thread"),TestThread2,KDefaultStackSize,0x100,0x200,(TAny*)KMaxSuffixes); + thread.Logon(stat); + User::SetJustInTime(EFalse); + thread.Resume(); + User::WaitForRequest(stat); + User::SetJustInTime(justInTime); + test(thread.ExitType()==EExitPanic); + CLOSE_AND_WAIT(thread); + + test.End(); + } + +void TestAmPmName() + { + test.Next(_L("TAmPmName")); + TAmPmName name1; + test(name1.Compare(_L("am"))==KErrNone); + TAmPmName name2(EPm); + test(name2.Compare(_L("pm"))==KErrNone); + name1.Set(EPm); + test(name1.Compare(_L("pm"))==KErrNone); + } + +void TestCurrencySymbol() + { + test.Next(_L("TCurrencySymbol")); + TCurrencySymbol name; + test(name.Compare(_L("\xA3"))==KErrNone); + name[0]=0; + name.SetLength(0); + test(name.Compare(_L("\xA3"))!=KErrNone); + name.Set(); + test(name.Compare(_L("\xA3"))==KErrNone); + name.Copy(_L("Syphilis")); + test(name.Compare(_L("\xA3"))!=KErrNone); + test(name.Compare(_L("Syphilis"))==KErrNone); + User::SetCurrencySymbol(name); + TCurrencySymbol name2; + test(name2.Compare(_L("Syphilis"))==KErrNone); + name2.Copy(_L("\xA3")); + User::SetCurrencySymbol(name2); + name.Set(); + test(name.Compare(_L("\xA3"))==KErrNone); + } + +GLDEF_C TInt E32Main() + { + + test.Title(); + TestDayName(); + TestDayNameAbb(); + TestMonthName(); + TestMonthNameAbb(); + TestDateSuffix(); + TestAmPmName(); + TestCurrencySymbol(); + test.End(); + + return(KErrNone); + }