diff -r 000000000000 -r a41df078684a kerneltest/e32test/datetime/t_dparse.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kerneltest/e32test/datetime/t_dparse.cpp Mon Oct 19 15:55:17 2009 +0100 @@ -0,0 +1,122 @@ +// Copyright (c) 1996-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\datetime\t_dparse.cpp +// +// + +#include + +RTest test(_L("T_DPARSE")); +TInt offset=0; + +LOCAL_C TInt DateTimeParse(TDateTime& aDateTime,const TDesC& aDes,TInt aCenturyOffset=0) + { + TTime time; + TInt r=time.Parse(aDes,aCenturyOffset); + if (r>=0) + aDateTime=time.DateTime(); + return r; + } + +LOCAL_D TInt ConvertDesToDateTimeInteractively() + { + TKeyCode code; + TBuf<32> buf; + buf.SetLength(0); + FOREVER + { + code = test.Console()->Getch(); + if (code==EKeyEnter || code==EKeyLineFeed) + break; + if (code==EKeyEscape) + return KErrGeneral; + if ((code==EKeyDelete || code==EKeyBackspace) && buf.Length()>0) + { + TChar del(code); + TBuf<1> delBuf; + delBuf.Append(del); + test.Printf(delBuf); + buf.SetLength(buf.Length()-1); + continue; + } + if (buf.Length()==0 && code==EKeyF1) + { + test.Printf(_L("Enter a two digit value. ")); + TKeyCode code1 = test.Console()->Getch(); + TKeyCode code2 = test.Console()->Getch(); + TChar ch1(code1); + TChar ch2(code2); + TBuf<2> centuryOffset; + centuryOffset.Append(ch1); + centuryOffset.Append(ch2); + TLex lex(centuryOffset); + if (lex.Val(offset)!=KErrNone) + return KErrGeneral; + test.Printf(_L("The century offset is set to %d\n"),offset); + if (ConvertDesToDateTimeInteractively()==KErrGeneral) + return KErrGeneral; + } + TChar ch(code); + buf.Append(ch); + TBuf<1> charBuf; + charBuf.Append(ch); + test.Printf(charBuf); + } + test.Printf(_L(" = ")); + TDateTime dateTime; + TInt error = DateTimeParse(dateTime,buf,offset); + TInt year = dateTime.Year(); + TInt month = dateTime.Month()+1; + TInt day = dateTime.Day()+1; + TInt hour = dateTime.Hour(); + TInt min = dateTime.Minute(); + TInt sec = dateTime.Second(); + TInt msec = dateTime.MicroSecond(); + switch(error) + { + case EParseTimePresent: + test.Printf(_L("%d:%d:%d.%d "),hour,min,sec,msec); + test.Printf(_L("Time\n")); + break; + case EParseDatePresent: + test.Printf(_L("%d/%d/%d "),day,month,year); + test.Printf(_L("Date\n")); + break; + case EParseTimePresent|EParseDatePresent: + test.Printf(_L("%d:%d:%d.%d %d/%d/%d "),hour,min,sec,msec,day,month,year); + test.Printf(_L("DateAndTime\n")); + break; + default: + test.Printf(_L("error\n")); + break; + } + if (ConvertDesToDateTimeInteractively()==KErrGeneral) + return KErrGeneral; + return KErrNone; + } + + +TInt E32Main() + { + test.Start(_L("Begin tests")); + test.Console()->Printf(_L("Convert a Des To a DateTime.\n")); + test.Printf(_L("Enter a Date, a Time or a Date & Time.\n")); + test.Printf(_L("Press Escape to exit tests.\n")); + test.Printf(_L("Press the F1 key to set the century offset.\n")); + ConvertDesToDateTimeInteractively(); + test.End(); + return KErrNone; + } + +