--- /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 <e32test.h>
+
+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;
+ }
+
+