kerneltest/e32test/datetime/t_dparse.cpp
changeset 0 a41df078684a
--- /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;
+	}
+
+