Fix for bug 2283 (RVCT 4.0 support is missing from PDK 3.0.h)
Have multiple extension sections in the bld.inf, one for each version
of the compiler. The RVCT version building the tools will build the
runtime libraries for its version, but make sure we extract all the other
versions from zip archives. Also add the archive for RVCT4.
// 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_tparse.cpp
// Overview:
// Date & time tests
// API Information:
// TTime, TDateTime
// Details:
// - Set various locale settings to known values.
// - Test parsing a variety of simple time formats. Verify results are as expected.
// - Test parsing a variety of simple date formats. Verify results are as expected.
// - Test parsing a variety of date and time formats. Verify results are as expected.
// - Attempt to parse a variety of bad date and time descriptors. Verify the error
// results are as expected.
// - Test a variety of date and time locale changes. Verify results are as expected.
// Platforms/Drives/Compatibility:
// All.
// Assumptions/Requirement/Pre-requisites:
// Failures and causes:
// Base Port information:
//
//
#include <e32test.h>
RTest test(_L("T_TPARSE"));
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 void SimpleTimeFormats()
{
TInt error;
TDateTime dateTime;
error=DateTimeParse(dateTime,_L("23:34:45:56"));
test(error==EParseTimePresent);
test(dateTime.Hour()==23);
test(dateTime.Minute()==34);
test(dateTime.Second()==45);
test(dateTime.MicroSecond()==56);
error=DateTimeParse(dateTime,_L("23:34:45.56"));
test(error==EParseTimePresent);
test(dateTime.Hour()==23);
test(dateTime.Minute()==34);
test(dateTime.Second()==45);
test(dateTime.MicroSecond()==56);
error=DateTimeParse(dateTime,_L("23:34:45.1234567"));
test(error==KErrGeneral);
error=DateTimeParse(dateTime,_L("23:34:45"));
test(error==EParseTimePresent);
test(dateTime.Hour()==23);
test(dateTime.Minute()==34);
test(dateTime.Second()==45);
test(dateTime.MicroSecond()==0);
error=DateTimeParse(dateTime,_L("00023:00034"));
test(error==EParseTimePresent);
test(dateTime.Hour()==23);
test(dateTime.Minute()==34);
test(dateTime.Second()==00);
test(dateTime.MicroSecond()==0);
error=DateTimeParse(dateTime,_L("23: 34"));
test(error==EParseTimePresent);
test(dateTime.Hour()==23);
test(dateTime.Minute()==34);
test(dateTime.Second()==0);
test(dateTime.MicroSecond()==0);
error=DateTimeParse(dateTime,_L("23: 34am"));
test(error==EParseTimePresent);
test(dateTime.Hour()==23);
test(dateTime.Minute()==34);
test(dateTime.Second()==0);
test(dateTime.MicroSecond()==0);
error=DateTimeParse(dateTime,_L("23: 34AM"));
test(error==EParseTimePresent);
test(dateTime.Hour()==23);
test(dateTime.Minute()==34);
test(dateTime.Second()==0);
test(dateTime.MicroSecond()==0);
error=DateTimeParse(dateTime,_L(" 23 : 34 "));
test(error==EParseTimePresent);
test(dateTime.Hour()==23);
test(dateTime.Minute()==34);
test(dateTime.Second()==0);
test(dateTime.MicroSecond()==0);
DateTimeParse(dateTime,_L("12 . 34"));
test(dateTime.Hour()==12);
test(dateTime.Minute()==34);
error=DateTimeParse(dateTime,_L("23:34:"));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L(" 0012 : 00034 . 056"));
test(error==EParseTimePresent);
test(dateTime.Hour()==12);
test(dateTime.Minute()==34);
test(dateTime.Second()==56);
test(dateTime.MicroSecond()==0);
error=DateTimeParse(dateTime,_L("24 : 56"));
test(error==KErrGeneral);// TDateTime class does not allow 24:56
error=DateTimeParse(dateTime,_L("10"));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L("10a"));
test(error==EParseTimePresent);
test(dateTime.Hour()==10);
error=DateTimeParse(dateTime,_L("10p"));
test(error==EParseTimePresent);
test(dateTime.Hour()==22);
error=DateTimeParse(dateTime,_L("10 p"));
test(error==EParseTimePresent);
test(dateTime.Hour()==22);
error=DateTimeParse(dateTime,_L("10pm "));
test(error==EParseTimePresent);
test(dateTime.Hour()==22);
error=DateTimeParse(dateTime,_L("10 pm"));
test(error==EParseTimePresent);
test(dateTime.Hour()==22);
error=DateTimeParse(dateTime,_L("10 AM"));
test(error==EParseTimePresent);
test(dateTime.Hour()==10);
error=DateTimeParse(dateTime,_L("10 PM"));
test(error==EParseTimePresent);
test(dateTime.Hour()==22);
error=DateTimeParse(dateTime,_L("10pmERROR"));
test(error==KErrArgument);
DateTimeParse(dateTime,_L("12 : 56 pm"));
test(dateTime.Hour()==12);
test(dateTime.Minute()==56);
DateTimeParse(dateTime,_L("12 : 56 am "));
test(dateTime.Hour()==0);
test(dateTime.Minute()==56);
DateTimeParse(dateTime,_L("12.34.56am"));
test(dateTime.Hour()==0);
test(dateTime.Minute()==34);
test(dateTime.Second()==56);
DateTimeParse(dateTime,_L("12.34.56pm "));
test(dateTime.Hour()==12);
test(dateTime.Minute()==34);
test(dateTime.Second()==56);
test(dateTime.MicroSecond()==0);
error=DateTimeParse(dateTime,_L("12:34:56am ERROR"));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L("12 : 56 am 05/jan/1996 "));
test(error==(EParseTimePresent|EParseDatePresent));
test(dateTime.Hour()==0);
test(dateTime.Minute()==56);
}
LOCAL_D void SimpleDateFormats()
{
TDateTime before2000DateTime(1999,EJanuary,0,0,0,0,0);
TDateTime after2000DateTime(2001,EJanuary,0,0,0,0,0);
TTime before2000(before2000DateTime);
TTime after2000(after2000DateTime);
for (TInt ii=0;ii<=1;ii++)
{
TBool currentTimeIsBeforeYear2000=ETrue;
if (ii==0)
{
User::SetUTCTime(before2000);
currentTimeIsBeforeYear2000=ETrue;
}
else if (ii==1)
{
User::SetUTCTime(after2000);
currentTimeIsBeforeYear2000=EFalse;
}
TInt error;
TDateTime dateTime;
DateTimeParse(dateTime,_L("5/6/1996"));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==1996);
DateTimeParse(dateTime,_L("5-6,1996"));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==1996);
DateTimeParse(dateTime,_L("5 6 1996"));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==1996);
DateTimeParse(dateTime,_L("5 ; 6 1996"));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==1996);
DateTimeParse(dateTime,_L("5 / 6, 96 "));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1996);
else
test(dateTime.Year()==2096);
DateTimeParse(dateTime,_L("5/6/19 "),20);
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==2019);
DateTimeParse(dateTime,_L("5/6/20 "),20);
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==1920);
DateTimeParse(dateTime,_L("5/6/00"),20);
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==2000);
error=DateTimeParse(dateTime,_L("5/6/00 "),00);
test(error==EParseDatePresent);
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1900);
else
test(dateTime.Year()==2000);
error=DateTimeParse(dateTime,_L("june 5 /00 "),00);
test(error==EParseDatePresent);
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1900);
else
test(dateTime.Year()==2000);
error=DateTimeParse(dateTime,_L("5 june/00 "),00);
test(error==EParseDatePresent);
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1900);
else
test(dateTime.Year()==2000);
error=DateTimeParse(dateTime,_L("5june 96 "),00);
test(error==KErrArgument);
// two field dates
error=DateTimeParse(dateTime,_L("5/6"));
test(error==EParseDatePresent);
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==0);
error=DateTimeParse(dateTime,_L("5-6,"));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L("5/6/ "),20);
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L("july 11"),20);
test(error==EParseDatePresent);
test(dateTime.Day()==10);
test(dateTime.Month()==EJuly);
test(dateTime.Year()==0);
error=DateTimeParse(dateTime,_L("11 july"),20);
test(error==EParseDatePresent);
test(dateTime.Day()==10);
test(dateTime.Month()==EJuly);
test(dateTime.Year()==0);
error=DateTimeParse(dateTime,_L("june 5 "),00);
test(error==EParseDatePresent);
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==0);
error=DateTimeParse(dateTime,_L("5 june/ "),00);
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L("5june "),00);
test(error==KErrArgument);
DateTimeParse(dateTime,_L("5/6/1"));
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1901);
else
test(dateTime.Year()==2001);
DateTimeParse(dateTime,_L("5/6/01"));
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1901);
else
test(dateTime.Year()==2001);
DateTimeParse(dateTime,_L("5/6/001"));
test(dateTime.Year()==0001);
DateTimeParse(dateTime,_L("5/6/0001"));
test(dateTime.Year()==0001);
}
}
LOCAL_D void DateTimeFormats()
{
TDateTime before2000DateTime(1999,EJanuary,0,0,0,0,0);
TDateTime after2000DateTime(2001,EJanuary,0,0,0,0,0);
TTime before2000(before2000DateTime);
TTime after2000(after2000DateTime);
for (TInt ii=0;ii<=1;ii++)
{
TBool currentTimeIsBeforeYear2000=ETrue;
if (ii==0)
{
User::SetUTCTime(before2000);
currentTimeIsBeforeYear2000=ETrue;
}
else if (ii==1)
{
User::SetUTCTime(after2000);
currentTimeIsBeforeYear2000=EFalse;
}
TInt error;
TDateTime dateTime;
error=DateTimeParse(dateTime,_L("5/6/1996 10am"));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==1996);
test(dateTime.Hour()==10);
error=DateTimeParse(dateTime,_L("5/6/1996 10 pm "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==1996);
test(dateTime.Hour()==22);
error=DateTimeParse(dateTime,_L("5/6/1996 10 : 30 "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==1996);
test(dateTime.Hour()==10);
test(dateTime.Minute()==30);
error=DateTimeParse(dateTime,_L("5/6/1996 10 : 40 pm "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==1996);
test(dateTime.Hour()==22);
test(dateTime.Minute()==40);
error=DateTimeParse(dateTime,_L("5/6/1996 10 : 40 . 01 "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==1996);
test(dateTime.Hour()==10);
test(dateTime.Minute()==40);
test(dateTime.Second()==01);
test(dateTime.MicroSecond()==0);
error=DateTimeParse(dateTime,_L("5-6 ,1996 10 : 40 . 01 pm "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==1996);
test(dateTime.Hour()==22);
test(dateTime.Minute()==40);
test(dateTime.Second()==01);
test(dateTime.MicroSecond()==0);
error=DateTimeParse(dateTime,_L("20- feb /96 12 : 40 . 01 am"));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==19);
test(dateTime.Month()==EFebruary);
test(dateTime.Hour()==0);
test(dateTime.Minute()==40);
test(dateTime.Second()==01);
test(dateTime.MicroSecond()==0);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1996);
else
test(dateTime.Year()==2096);
error=DateTimeParse(dateTime,_L("5/6/1996 10 : 40 . 01 . 02 "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==1996);
test(dateTime.Hour()==10);
test(dateTime.Minute()==40);
test(dateTime.Second()==01);
test(dateTime.MicroSecond()==2);
error=DateTimeParse(dateTime,_L("5-6 ,1996 10 : 40 . 01 . 03 pm "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==1996);
test(dateTime.Hour()==22);
test(dateTime.Minute()==40);
test(dateTime.Second()==01);
test(dateTime.MicroSecond()==3);
error=DateTimeParse(dateTime,_L("20- feb /96 12 : 40 . 01 . 04 am"));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==19);
test(dateTime.Month()==EFebruary);
test(dateTime.Hour()==0);
test(dateTime.Minute()==40);
test(dateTime.Second()==01);
test(dateTime.MicroSecond()==4);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1996);
else
test(dateTime.Year()==2096);
error=DateTimeParse(dateTime,_L("20- feb /9612 : 40.01am"));
test(error==KErrGeneral);
// two field dates
error=DateTimeParse(dateTime,_L("5/6 10am"));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==0);
test(dateTime.Hour()==10);
error=DateTimeParse(dateTime,_L("5/6/ 10 pm "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==0);
test(dateTime.Hour()==22);
error=DateTimeParse(dateTime,_L("5/6 10 : 40 . 01 "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==0);
test(dateTime.Hour()==10);
test(dateTime.Minute()==40);
test(dateTime.Second()==01);
test(dateTime.MicroSecond()==0);
error=DateTimeParse(dateTime,_L("5-6 , 10 : 40 . 01 pm "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==0);
test(dateTime.Hour()==22);
test(dateTime.Minute()==40);
test(dateTime.Second()==01);
test(dateTime.MicroSecond()==0);
error=DateTimeParse(dateTime,_L("5/6 10 : 40 . 01 . 02"));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==0);
test(dateTime.Hour()==10);
test(dateTime.Minute()==40);
test(dateTime.Second()==01);
test(dateTime.MicroSecond()==2);
error=DateTimeParse(dateTime,_L("5-6 , 10 : 40 . 01 . 05pm "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
test(dateTime.Year()==0);
test(dateTime.Hour()==22);
test(dateTime.Minute()==40);
test(dateTime.Second()==01);
test(dateTime.MicroSecond()==5);
}
}
LOCAL_D void TimeDateFormats()
{
TDateTime before2000DateTime(1999,EJanuary,0,0,0,0,0);
TDateTime after2000DateTime(2001,EJanuary,0,0,0,0,0);
TTime before2000(before2000DateTime);
TTime after2000(after2000DateTime);
for (TInt ii=0;ii<=1;ii++)
{
TBool currentTimeIsBeforeYear2000=ETrue;
if (ii==0)
{
User::SetUTCTime(before2000);
currentTimeIsBeforeYear2000=ETrue;
}
else if (ii==1)
{
User::SetUTCTime(after2000);
currentTimeIsBeforeYear2000=EFalse;
}
TInt error;
TDateTime dateTime;
error=DateTimeParse(dateTime,_L("10pm 5/6/96"));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Hour()==22);
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1996);
else
test(dateTime.Year()==2096);
error=DateTimeParse(dateTime,_L("12 am 5 -feb,03 "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Hour()==00);
test(dateTime.Day()==4);
test(dateTime.Month()==EFebruary);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1903);
else
test(dateTime.Year()==2003);
error=DateTimeParse(dateTime,_L("12 .56am 5 -feb,03 "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Hour()==00);
test(dateTime.Minute()==56);
test(dateTime.Day()==4);
test(dateTime.Month()==EFebruary);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1903);
else
test(dateTime.Year()==2003);
error=DateTimeParse(dateTime,_L("12 .56:01.03pm 5 -SEPTEMBER,03 "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Hour()==12);
test(dateTime.Minute()==56);
test(dateTime.Second()==01);
test(dateTime.MicroSecond()==03);
test(dateTime.Day()==4);
test(dateTime.Month()==ESeptember);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1903);
else
test(dateTime.Year()==2003);
error=DateTimeParse(dateTime,_L("12 .56:01pm SEPTEMBER 5,03 "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Hour()==12);
test(dateTime.Minute()==56);
test(dateTime.Second()==01);
test(dateTime.Day()==4);
test(dateTime.Month()==ESeptember);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1903);
else
test(dateTime.Year()==2003);
error=DateTimeParse(dateTime,_L("12 .0056:01pm 5 -SEPTEMBERX,03 "));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L("12 .56:015 -SEPTEMBER,03 "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Hour()==12);
test(dateTime.Minute()==56);
test(dateTime.Second()==15);
test(dateTime.Day()==2);
test(dateTime.Month()==ESeptember);
test(dateTime.Year()==0);
// max descriptor length 27 tokens// 13 tokens after spaces are striped
error=DateTimeParse(dateTime,_L(" 10 : 00 : 00 . 123456 pm 5 / 6 / 96 "));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.MicroSecond()==123456);
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==22);
test(dateTime.Day()==4);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1996);
else
test(dateTime.Year()==2096);
// the formaula array will overflow with too many tokens
error=DateTimeParse(dateTime,_L(" 10 : 00 : 00 pm 5 / 6 / 96 / / / / / / / / / / / / / / / "));
test(error==KErrArgument);
}
}
LOCAL_D void BadDescriptors()
{
TInt error;
TDateTime dateTime;
error=DateTimeParse(dateTime,_L("10pmpm"));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L("10pmX"));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L("1111"));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L("10::10"));
test(error==KErrGeneral);
error=DateTimeParse(dateTime,_L("10-,10"));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L(" - 10:10"));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L(" 10 10:10"));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L(" 5 june 10000"));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L("24:01"));
test(error==KErrGeneral);
error=DateTimeParse(dateTime,_L("may 2, 9623:34:45"));
test(error==KErrGeneral);
error=DateTimeParse(dateTime,_L(" 9/10/- "));
test(error==KErrArgument);
}
LOCAL_D void TestLocaleChanges()
{
TDateTime before2000DateTime(1999,EJanuary,0,0,0,0,0);
TDateTime after2000DateTime(2001,EJanuary,0,0,0,0,0);
TTime before2000(before2000DateTime);
TTime after2000(after2000DateTime);
for (TInt ii=0;ii<=1;ii++)
{
TBool currentTimeIsBeforeYear2000=ETrue;
if (ii==0)
{
User::SetUTCTime(before2000);
currentTimeIsBeforeYear2000=ETrue;
}
else if (ii==1)
{
User::SetUTCTime(after2000);
currentTimeIsBeforeYear2000=EFalse;
}
TLocale locale;
locale.Refresh();
TLocale savedLocale;
TInt error;
TDateTime dateTime;
//Set decimal separator in locale to another value:
locale.SetDecimalSeparator('!');
locale.Set();
error=DateTimeParse(dateTime,_L("3/6 10:10:10!111111"));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.MicroSecond()==111111);
test(dateTime.Second()==10);
test(dateTime.Minute()==10);
test(dateTime.Hour()==10);
test(dateTime.Day()==2);
test(dateTime.Month()==EJune);
error=DateTimeParse(dateTime,_L("1/6/12"));
test(error==EParseDatePresent);
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==0);
test(dateTime.Day()==0);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1912);
else
test(dateTime.Year()==2012);
error=DateTimeParse(dateTime,_L(" dec 3 12"),10);
test(error==EParseDatePresent);
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==0);
test(dateTime.Day()==2);
test(dateTime.Month()==EDecember);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1912);
else
test(dateTime.Year()==1912);
error=DateTimeParse(dateTime,_L(" 3 dec 12 "),12);
test(error==EParseDatePresent);
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==0);
test(dateTime.Day()==2);
test(dateTime.Month()==EDecember);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1912);
else
test(dateTime.Year()==1912);
TDateFormat dateFormat=EDateAmerican;
locale.SetDateFormat(dateFormat);
locale.Set();
error=DateTimeParse(dateTime,_L("1/6/12"));
test(error==EParseDatePresent);
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==0);
test(dateTime.Day()==5);
test(dateTime.Month()==EJanuary);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1912);
else
test(dateTime.Year()==2012);
error=DateTimeParse(dateTime,_L(" dec 3 12"),13);
test(error==EParseDatePresent);
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==0);
test(dateTime.Day()==2);
test(dateTime.Month()==EDecember);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==2012);
else
test(dateTime.Year()==2012);
error=DateTimeParse(dateTime,_L(" 3 dec 12 "));
test(error==EParseDatePresent);
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==0);
test(dateTime.Day()==2);
test(dateTime.Month()==EDecember);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1912);
else
test(dateTime.Year()==2012);
dateFormat=EDateJapanese;
locale.SetDateFormat(dateFormat);
locale.Set();
error=DateTimeParse(dateTime,_L("3/17"));
test(error==EParseDatePresent);
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==0);
test(dateTime.Day()==16);
test(dateTime.Month()==EMarch);
test(dateTime.Year()==0);
error=DateTimeParse(dateTime,_L("1/6/12"));
test(error==EParseDatePresent);
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==0);
test(dateTime.Day()==11);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1901);
else
test(dateTime.Year()==2001);
error=DateTimeParse(dateTime,_L("1*6*12"));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L("1+6+12"));
test(error==KErrArgument);
locale.SetDateSeparator('*',1);
locale.SetDateSeparator('+',2);
locale.Set();
error=DateTimeParse(dateTime,_L("1*6*12"));
test(error==EParseDatePresent);
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==0);
test(dateTime.Day()==11);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1901);
else
test(dateTime.Year()==2001);
error=DateTimeParse(dateTime,_L("1+6+12"));
test(error==EParseDatePresent);
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==0);
test(dateTime.Day()==11);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1901);
else
test(dateTime.Year()==2001);
error=DateTimeParse(dateTime,_L("1+6+12 14:32.54am"));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Second()==54);
test(dateTime.Minute()==32);
test(dateTime.Hour()==14);
test(dateTime.Day()==11);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1901);
else
test(dateTime.Year()==2001);
error=DateTimeParse(dateTime,_L("10p 1+6+12"));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==22);
test(dateTime.Day()==11);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1901);
else
test(dateTime.Year()==2001);
// European
locale.SetDateFormat(EDateEuropean);
locale.SetDateSeparator('.',2);
locale.Set();
error=DateTimeParse(dateTime,_L("1+6+12"));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L("3.6.86"));
test(error==EParseDatePresent);
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==0);
test(dateTime.Day()==2);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1986);
else
test(dateTime.Year()==2086);
error=DateTimeParse(dateTime,_L("3.6.86 10:10:10"));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Second()==10);
test(dateTime.Minute()==10);
test(dateTime.Hour()==10);
test(dateTime.Day()==2);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1986);
else
test(dateTime.Year()==2086);
locale.SetDateSeparator(':',1);
locale.Set();
error=DateTimeParse(dateTime,_L("3.6.86 10:10:10"));
test(error==KErrArgument);
// test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Second()==10);
test(dateTime.Minute()==10);
test(dateTime.Hour()==10);
test(dateTime.Day()==2);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1986);
else
test(dateTime.Year()==2086);
error=DateTimeParse(dateTime,_L("3:6:86 10.10.10"));
test(error==KErrArgument);
test(dateTime.Second()==10);
test(dateTime.Minute()==10);
test(dateTime.Hour()==10);
test(dateTime.Day()==2);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1986);
else
test(dateTime.Year()==2086);
error=DateTimeParse(dateTime,_L("10.10"));
test(error==EParseDatePresent);
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==0);
test(dateTime.Day()==9);
test(dateTime.Month()==EOctober);
test(dateTime.Year()==0);
// If the date sep has been set to '.' then 10th October
error=DateTimeParse(dateTime,_L("10.10pm"));
test(error==KErrArgument);
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==0);
test(dateTime.Day()==9);
test(dateTime.Month()==EOctober);
test(dateTime.Year()==0);
error=DateTimeParse(dateTime,_L("10p 3:6:86"));
test(error==(EParseDatePresent|EParseTimePresent));
test(dateTime.Second()==0);
test(dateTime.Minute()==0);
test(dateTime.Hour()==22);
test(dateTime.Day()==2);
test(dateTime.Month()==EJune);
if (currentTimeIsBeforeYear2000)
test(dateTime.Year()==1986);
else
test(dateTime.Year()==2086);
error=DateTimeParse(dateTime,_L("1:6:12 3.05.06"));
test(error==KErrArgument);
error=DateTimeParse(dateTime,_L(" 3.05.06 1:6:12"));
test(error==KErrArgument);
locale.Refresh();
savedLocale.Set();
}
}
TInt E32Main()
{
test.Title();
test.Start(_L("Begin tests"));
TLocale currentLocale;
TLocale b;
b.SetDateSeparator('\0',0);
b.SetDateSeparator('/',1);
b.SetDateSeparator('/',2);
b.SetDateSeparator('\0',3);
b.SetDateFormat(EDateEuropean);
b.SetTimeFormat(ETime12);
b.SetTimeSeparator('\0',0);
b.SetTimeSeparator(':',1);
b.SetTimeSeparator(':',2);
b.SetTimeSeparator('\0',3);
b.SetAmPmSpaceBetween(ETrue);
b.SetAmPmSymbolPosition(ELocaleAfter);
b.SetWorkDays(0x1F);
b.SetStartOfWeek(EMonday);
b.Set();
TTimeIntervalSeconds oldOffset = User::UTCOffset();
User::SetUTCOffset(0);
test.Console()->Printf(_L("SimpleTimeFormats\n"));
SimpleTimeFormats();
test.Console()->Printf(_L("SimpleDateFormats\n"));
SimpleDateFormats();
test.Console()->Printf(_L("DateTimeFormats\n"));
DateTimeFormats();
test.Console()->Printf(_L("TimeDateFormats\n"));
TimeDateFormats();
test.Console()->Printf(_L("BadDescriptors\n"));
BadDescriptors();
test.Console()->Printf(_L("TestLocaleChanges\n"));
TestLocaleChanges();
test.Console()->Printf(_L("End of tests\n"));
currentLocale.Set();
User::SetUTCOffset(oldOffset);
test.End();
return(KErrNone);
}