/* CPDateFormatterTest.j * Foundation * * Created by Alexandre Wilhelm * Copyright 2012 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @import @import @import @import @global CPDateFormatterNoStyle @global CPDateFormatterShortStyle @global CPDateFormatterMediumStyle @global CPDateFormatterLongStyle @global CPDateFormatterFullStyle @implementation CPDateFormatterTest : OJTestCase { CPDate _date; CPDateFormatter _dateFormatter; CPDateFormatter _nonEnDateFormatter; } - (void)setUp { _date = [[CPDate alloc] initWithString:@"2011-10-05 16:34:38 -0900"]; _dateFormatter = [[CPDateFormatter alloc] init]; [_dateFormatter setDateStyle:CPDateFormatterMediumStyle]; [_dateFormatter setTimeStyle:CPDateFormatterShortStyle]; [_dateFormatter setLocale:[[CPLocale alloc] initWithLocaleIdentifier:@"en_US"]]; [_dateFormatter setTimeZone:[CPTimeZone timeZoneWithAbbreviation:@"PDT"]]; _nonEnDateFormatter = [[CPDateFormatter alloc] init]; [_nonEnDateFormatter setLocale:[[CPLocale alloc] initWithLocaleIdentifier:@"pt"]]; } #pragma mark - #pragma mark Setter - (void)testSetterAMSymbol { [_dateFormatter setAMSymbol:@"Hej hej"]; [self assert:[_dateFormatter AMSymbol] equals:@"Hej hej"]; } - (void)testSetterPMSymbol { [_dateFormatter setPMSymbol:@"Hej hej"]; [self assert:[_dateFormatter PMSymbol] equals:@"Hej hej"]; } - (void)testSetterWeekdaySymbols { [_dateFormatter setWeekdaySymbols:[@"Hej hej"]]; [self assert:[_dateFormatter weekdaySymbols] equals:[@"Hej hej"]]; } - (void)testSetterShortWeekdaySymbols { [_dateFormatter setShortWeekdaySymbols:[@"Hej hej"]]; [self assert:[_dateFormatter shortWeekdaySymbols] equals:[@"Hej hej"]]; } - (void)testSetterVeryShortWeekdaySymbols { [_dateFormatter setVeryShortWeekdaySymbols:[@"Hej hej"]]; [self assert:[_dateFormatter veryShortWeekdaySymbols] equals:[@"Hej hej"]]; } - (void)testSetterStandaloneWeekdaySymbols { [_dateFormatter setStandaloneWeekdaySymbols:[@"Hej hej"]]; [self assert:[_dateFormatter standaloneWeekdaySymbols] equals:[@"Hej hej"]]; } - (void)testSetterShortStandaloneWeekdaySymbols { [_dateFormatter setShortStandaloneWeekdaySymbols:[@"Hej hej"]]; [self assert:[_dateFormatter shortStandaloneWeekdaySymbols] equals:[@"Hej hej"]]; } - (void)testSetterVeryShortStandaloneWeekdaySymbols { [_dateFormatter setVeryShortStandaloneWeekdaySymbols:[@"Hej hej"]]; [self assert:[_dateFormatter veryShortStandaloneWeekdaySymbols] equals:[@"Hej hej"]]; } - (void)testSetterMonthSymbols { [_dateFormatter setMonthSymbols:[@"Hej hej"]]; [self assert:[_dateFormatter monthSymbols] equals:[@"Hej hej"]]; } - (void)testSetterShortMonthSymbols { [_dateFormatter setShortMonthSymbols:[@"Hej hej"]]; [self assert:[_dateFormatter shortMonthSymbols] equals:[@"Hej hej"]]; } - (void)testSetterVeryShortMonthSymbols { [_dateFormatter setVeryShortMonthSymbols:[@"Hej hej"]]; [self assert:[_dateFormatter veryShortMonthSymbols] equals:[@"Hej hej"]]; } - (void)testSetterStandaloneMonthSymbols { [_dateFormatter setStandaloneMonthSymbols:[@"Hej hej"]]; [self assert:[_dateFormatter standaloneMonthSymbols] equals:[@"Hej hej"]]; } - (void)testSetterShortStandaloneMonthSymbols { [_dateFormatter setShortStandaloneMonthSymbols:[@"Hej hej"]]; [self assert:[_dateFormatter shortStandaloneMonthSymbols] equals:[@"Hej hej"]]; } - (void)testSetterVeryShortStandaloneMonthSymbols { [_dateFormatter setVeryShortStandaloneMonthSymbols:[@"Hej hej"]]; [self assert:[_dateFormatter veryShortStandaloneMonthSymbols] equals:[@"Hej hej"]]; } - (void)testSetterQuarterSymbols { [_dateFormatter setQuarterSymbols:[@"Hej hej"]]; [self assert:[_dateFormatter quarterSymbols] equals:[@"Hej hej"]]; } - (void)testSetterShortQuarterSymbols { [_dateFormatter setShortQuarterSymbols:[@"Hej hej"]]; [self assert:[_dateFormatter shortQuarterSymbols] equals:[@"Hej hej"]]; } - (void)testSetterStandaloneQuarterSymbols { [_dateFormatter setStandaloneQuarterSymbols:[@"Hej hej"]]; [self assert:[_dateFormatter standaloneQuarterSymbols] equals:[@"Hej hej"]]; } - (void)testSetterShortStandaloneQuarterSymbols { [_dateFormatter setShortStandaloneQuarterSymbols:[@"Hej hej"]]; [self assert:[_dateFormatter shortStandaloneQuarterSymbols] equals:[@"Hej hej"]]; } #pragma mark - #pragma mark string from date - (void)testLocalizedStringFromDate { var result = [CPDateFormatter localizedStringFromDate:[[CPDate alloc] initWithString:@"2011-10-05 23:59:59 +1200"] dateStyle:CPDateFormatterMediumStyle timeStyle:CPDateFormatterNoStyle]; if (![[[CPLocale currentLocale] objectForKey:CPLocaleCountryCode] isEqualToString:@"US"]) [self assert:result equals:@"5 Oct 2011"]; else [self assert:result equals:@"Oct 5, 2011"]; } - (void)testInit { var dateFormatter = [[CPDateFormatter alloc] init], result = [dateFormatter stringFromDate:_date]; [self assert:result.length equals:@"".length]; } - (void)testInitWithDateFormat { var dateFormatter = [[CPDateFormatter alloc] initWithDateFormat:@"d EEEE, MMM, Y 'at' H:mm:ss a z" allowNaturalLanguage:NO]; [dateFormatter setLocale:[[CPLocale alloc] initWithLocaleIdentifier:@"en_US"]]; [dateFormatter setTimeZone:[CPTimeZone timeZoneWithAbbreviation:@"PDT"]]; var result = [dateFormatter stringFromDate:_date]; [self assert:result equals:@"5 Wednesday, Oct, 2011 at 18:34:38 PM PDT"] } - (void)testStringFromDateDateNoStyleTimeNoStyle { [_dateFormatter setDateStyle:CPDateFormatterNoStyle]; [_dateFormatter setTimeStyle:CPDateFormatterNoStyle]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result.length equals:@"".length]; } - (void)testStringFromDateDateShortStyleTimeNoStyle { [_dateFormatter setDateStyle:CPDateFormatterShortStyle]; [_dateFormatter setTimeStyle:CPDateFormatterNoStyle]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"10/5/11"]; } - (void)testStringFromDateDateMediumStyleTimeNoStyle { [_dateFormatter setDateStyle:CPDateFormatterMediumStyle]; [_dateFormatter setTimeStyle:CPDateFormatterNoStyle]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"Oct 5, 2011"]; } - (void)testStringFromDateDateLongStyleTimeNoStyle { [_dateFormatter setDateStyle:CPDateFormatterLongStyle]; [_dateFormatter setTimeStyle:CPDateFormatterNoStyle]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"October 5, 2011"]; } - (void)testStringFromDateDateFullStyleTimeNoStyle { [_dateFormatter setDateStyle:CPDateFormatterFullStyle]; [_dateFormatter setTimeStyle:CPDateFormatterNoStyle]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"Wednesday, October 5, 2011"]; } - (void)testStringFromDateDateNoStyleTimeShortStyle { [_dateFormatter setDateStyle:CPDateFormatterNoStyle]; [_dateFormatter setTimeStyle:CPDateFormatterShortStyle]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"6:34 PM"]; } - (void)testStringFromDateDateNoStyleTimeMediumStyle { [_dateFormatter setDateStyle:CPDateFormatterNoStyle]; [_dateFormatter setTimeStyle:CPDateFormatterMediumStyle]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"6:34:38 PM"]; } - (void)testStringFromDateDateNoStyleTimeLongStyle { [_dateFormatter setDateStyle:CPDateFormatterNoStyle]; [_dateFormatter setTimeStyle:CPDateFormatterLongStyle]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"6:34:38 PM PDT"]; } - (void)testStringFromDateDateNoStyleTimeFullStyle { [_dateFormatter setDateStyle:CPDateFormatterNoStyle]; [_dateFormatter setTimeStyle:CPDateFormatterFullStyle]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"6:34:38 PM Pacific Daylight Time"]; } - (void)testStringFromDateDateFullStyleTimeFullStyle { [_dateFormatter setDateStyle:CPDateFormatterFullStyle]; [_dateFormatter setTimeStyle:CPDateFormatterFullStyle]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"Wednesday, October 5, 2011 6:34:38 PM Pacific Daylight Time"]; } - (void)testStringForObjectValueWithDate { [_dateFormatter setDateStyle:CPDateFormatterMediumStyle]; [_dateFormatter setTimeStyle:CPDateFormatterShortStyle]; var result = [_dateFormatter stringForObjectValue:_date]; [self assert:result equals:@"Oct 5, 2011 6:34 PM"]; } - (void)testStringForObjectValueWithString { [_dateFormatter setDateStyle:CPDateFormatterMediumStyle]; [_dateFormatter setTimeStyle:CPDateFormatterShortStyle]; var result = [_dateFormatter stringForObjectValue:@"Test String"]; [self assert:result equals:nil]; } - (void)testEditingStringForObjectValueWithDate { [_dateFormatter setDateStyle:CPDateFormatterMediumStyle]; [_dateFormatter setTimeStyle:CPDateFormatterShortStyle]; var result = [_dateFormatter editingStringForObjectValue:_date]; [self assert:result equals:@"Oct 5, 2011 6:34 PM"]; } - (void)testDoesRelativeDateFormatting { [_dateFormatter setTimeStyle:CPDateFormatterNoStyle]; [_dateFormatter setDoesRelativeDateFormatting:YES]; var date = [CPDate date]; date.setDate(date.getDate() + 1); var result = [_dateFormatter editingStringForObjectValue:date]; [self assert:result equals:@"tomorrow"]; date.setDate(date.getDate() - 2); result = [_dateFormatter editingStringForObjectValue:date]; [self assert:result equals:@"yesterday"]; } - (void)testStringFromDateTokensYears { [_dateFormatter setDateFormat:@"y yy yyy yyyy Y YY YYY YYYY"]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"2011 11 2011 2011 2011 11 2011 2011"]; } - (void)testStringFromDateTokensQuarters { [_dateFormatter setDateFormat:@"Q QQ QQQ QQQQ q qq qqq qqqq"]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"4 04 Q4 4th quarter 4 04 Q4 4th quarter"]; } - (void)testStringFromDateTokensMonths { [_dateFormatter setDateFormat:@"M MM MMM MMMM MMMMM L LL LLL LLLL LLLLL"]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"10 10 Oct October O 10 10 Oct October O"]; } - (void)testStringFromDateTokensWeeks { [_dateFormatter setDateFormat:@"w ww W"]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"41 41 2"]; } - (void)testStringFromDateTokensDays { [_dateFormatter setDateFormat:@"d dd D DD DDD F"]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"5 05 278 278 278 1"]; } - (void)testStringFromDateTokensWeekDays { [_dateFormatter setDateFormat:@"E EE EEE EEEE EEEEE e ee eee eeee eeeee c cc ccc cccc ccccc"]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"Wed Wed Wed Wednesday W 4 04 Wed Wednesday W 4 4 Wed Wednesday W"]; } - (void)testStringFromDateTokensPeriods { [_dateFormatter setDateFormat:@"a"]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"PM"]; _date = [[CPDate alloc] initWithString:@"2011-10-05 05:34:38 -0900"]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"AM"]; } - (void)testStringFromDateTokensSeconds { [_dateFormatter setDateFormat:@"s ss S SS SSS SSSS A AA AAA AAAA"]; _date.setSeconds(8); var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"8 08 0 00 000 0000 66848000 66848000 66848000 66848000"]; } - (void)testStringFromDateTokensMinutes { [_dateFormatter setDateFormat:@"m mm"]; _date.setMinutes(5); var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"5 05"]; } - (void)testStringFromDateTokensHours { var date = [[CPDate alloc] initWithString:@"2011-10-05 22:34:08 -0900"]; [_dateFormatter setDateFormat:@"h hh HH k kk K KK"]; var result = [_dateFormatter stringFromDate:date]; [self assert:result equals:@"12 12 00 24 24 0 00"]; date = [[CPDate alloc] initWithString:@"2011-10-05 06:34:08 -0900"]; [_dateFormatter setDateFormat:@"h hh HH k kk K KK"]; result = [_dateFormatter stringFromDate:date]; [self assert:result equals:@"8 08 08 8 08 8 08"]; date = [[CPDate alloc] initWithString:@"2011-10-05 16:34:08 -0900"]; [_dateFormatter setDateFormat:@"h hh HH k kk K KK"]; var result = [_dateFormatter stringFromDate:date]; [self assert:result equals:@"6 06 18 18 18 6 06"]; } - (void)testStringFromDateTokensZones { [_dateFormatter setDateFormat:@"z zz zzz zzzz Z ZZ ZZZ ZZZZ ZZZZ v vvvv V"]; var result = [_dateFormatter stringFromDate:_date]; [self assert:result equals:@"PDT PDT PDT Pacific Daylight Time -0700 -0700 -0700 GMT-07:00 GMT-07:00 PT Pacific Time PDT"]; } #pragma mark - #pragma mark Date From string - (void)testDateFromStringToken { [_dateFormatter setDateFormat:@""]; var result = [_dateFormatter dateFromString:@""]; [self assert:[result isEqualToDate:[[CPDate alloc] initWithString:@"2000-01-01 00:00:00 +0000"]] equals:YES]; } - (void)testDateFromStringTokeny { [_dateFormatter setDateFormat:@"y"]; var result = [_dateFormatter dateFromString:@"9"]; [self assert:[result isEqualToDate:[[CPDate alloc] initWithString:@"0009-01-01 08:00:00 +0000"]] equals:YES]; [_dateFormatter setDateFormat:@"yy"]; result = [_dateFormatter dateFromString:@"49"]; [self assert:[result isEqualToDate:[[CPDate alloc] initWithString:@"2049-01-01 08:00:00 +0000"]] equals:YES]; [_dateFormatter setDateFormat:@"yy"]; result = [_dateFormatter dateFromString:@"56"]; [self assert:[result isEqualToDate:[[CPDate alloc] initWithString:@"1956-01-01 08:00:00 +0000"]] equals:YES]; [_dateFormatter setDateFormat:@"yy"]; result = [_dateFormatter dateFromString:@"563"]; [self assert:[result isEqualToDate:[[CPDate alloc] initWithString:@"0563-01-01 08:00:00 +0000"]] equals:YES]; [_dateFormatter setDateFormat:@"yyy"]; result = [_dateFormatter dateFromString:@"563"]; [self assert:[result isEqualToDate:[[CPDate alloc] initWithString:@"0563-01-01 08:00:00 +0000"]] equals:YES]; [_dateFormatter setDateFormat:@"yyyy"]; result = [_dateFormatter dateFromString:@"2012"]; [self assert:[result isEqualToDate:[[CPDate alloc] initWithString:@"2012-01-01 08:00:00 +0000"]] equals:YES]; [_dateFormatter setDateFormat:@"y"]; var result = [_dateFormatter dateFromString:@"eze"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"yy"]; result = [_dateFormatter dateFromString:@"dezd"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"yyy"]; result = [_dateFormatter dateFromString:@"dezdez"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"yyyy"]; result = [_dateFormatter dateFromString:@"dezdezd"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenY { [_dateFormatter setDateFormat:@"Y"]; var result = [_dateFormatter dateFromString:@"9"]; [self assert:result equals:[[CPDate alloc] initWithString:@"0009-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"YY"]; result = [_dateFormatter dateFromString:@"49"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2049-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"YY"]; result = [_dateFormatter dateFromString:@"56"]; [self assert:result equals:[[CPDate alloc] initWithString:@"1956-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"YY"]; result = [_dateFormatter dateFromString:@"563"]; [self assert:result equals:[[CPDate alloc] initWithString:@"0563-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"YYY"]; result = [_dateFormatter dateFromString:@"563"]; [self assert:result equals:[[CPDate alloc] initWithString:@"0563-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"YYYY"]; result = [_dateFormatter dateFromString:@"2012"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2012-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"Y"]; var result = [_dateFormatter dateFromString:@"eze"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"YY"]; result = [_dateFormatter dateFromString:@"dezd"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"YYY"]; result = [_dateFormatter dateFromString:@"dezdez"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"YYYY"]; result = [_dateFormatter dateFromString:@"dezdezd"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenq { [_dateFormatter setDateFormat:@"q"]; var result = [_dateFormatter dateFromString:@"2"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-04-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"qq"]; var result = [_dateFormatter dateFromString:@"2"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-04-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"qqq"]; var result = [_dateFormatter dateFromString:@"Q3"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-07-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"qqqq"]; var result = [_dateFormatter dateFromString:@"2nd quarter"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-04-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"q"]; var result = [_dateFormatter dateFromString:@"12"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"q"]; var result = [_dateFormatter dateFromString:@"eze"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"qq"]; var result = [_dateFormatter dateFromString:@"12"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"qq"]; var result = [_dateFormatter dateFromString:@"zaz"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"qqq"]; var result = [_dateFormatter dateFromString:@"Q8"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"qqqq"]; var result = [_dateFormatter dateFromString:@"2nd quarteer"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenQ { [_dateFormatter setDateFormat:@"Q"]; var result = [_dateFormatter dateFromString:@"2"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-04-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"QQ"]; var result = [_dateFormatter dateFromString:@"2"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-04-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"QQQ"]; var result = [_dateFormatter dateFromString:@"Q3"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-07-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"QQQQ"]; var result = [_dateFormatter dateFromString:@"2nd quarter"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-04-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"Q"]; var result = [_dateFormatter dateFromString:@"12"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"Q"]; var result = [_dateFormatter dateFromString:@"ezeze"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"QQ"]; var result = [_dateFormatter dateFromString:@"12"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"QQ"]; var result = [_dateFormatter dateFromString:@"zazasz"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"QQQ"]; var result = [_dateFormatter dateFromString:@"Q6"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"QQQQ"]; var result = [_dateFormatter dateFromString:@"2nd quarteereze"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenM { [_dateFormatter setDateFormat:@"M"]; var result = [_dateFormatter dateFromString:@"10"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-10-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"M"]; var result = [_dateFormatter dateFromString:@"1"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"M"]; var result = [_dateFormatter dateFromString:@"12"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-12-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"MM"]; var result = [_dateFormatter dateFromString:@"7"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-07-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"MM"]; var result = [_dateFormatter dateFromString:@"1"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"MM"]; var result = [_dateFormatter dateFromString:@"12"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-12-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"MMM"]; var result = [_dateFormatter dateFromString:@"Sep"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-09-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"MMM"]; var result = [_dateFormatter dateFromString:@"Jan"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"MMM"]; var result = [_dateFormatter dateFromString:@"Dec"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-12-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"MMMM"]; var result = [_dateFormatter dateFromString:@"September"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-09-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"MMMM"]; var result = [_dateFormatter dateFromString:@"December"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-12-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"MMMM"]; var result = [_dateFormatter dateFromString:@"January"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"MMMMM"]; var result = [_dateFormatter dateFromString:@"S"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"M"]; var result = [_dateFormatter dateFromString:@"76"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"M"]; var result = [_dateFormatter dateFromString:@"ezeze"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"MM"]; var result = [_dateFormatter dateFromString:@"76"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"MM"]; var result = [_dateFormatter dateFromString:@"zdazdza"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"MMM"]; var result = [_dateFormatter dateFromString:@"Seepre"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"MMMM"]; var result = [_dateFormatter dateFromString:@"Septembeer"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenL { [_dateFormatter setDateFormat:@"L"]; var result = [_dateFormatter dateFromString:@"10"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-10-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"L"]; var result = [_dateFormatter dateFromString:@"1"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"L"]; var result = [_dateFormatter dateFromString:@"12"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-12-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"LL"]; var result = [_dateFormatter dateFromString:@"7"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-07-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"LL"]; var result = [_dateFormatter dateFromString:@"1"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"LL"]; var result = [_dateFormatter dateFromString:@"12"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-12-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"LLL"]; var result = [_dateFormatter dateFromString:@"Sep"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-09-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"LLL"]; var result = [_dateFormatter dateFromString:@"Dec"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-12-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"LLL"]; var result = [_dateFormatter dateFromString:@"Jan"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"LLLL"]; var result = [_dateFormatter dateFromString:@"September"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-09-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"LLLL"]; var result = [_dateFormatter dateFromString:@"December"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-12-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"LLLL"]; var result = [_dateFormatter dateFromString:@"January"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"LLLLL"]; var result = [_dateFormatter dateFromString:@"S"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"L"]; var result = [_dateFormatter dateFromString:@"76"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"L"]; var result = [_dateFormatter dateFromString:@"dzadza"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"LL"]; var result = [_dateFormatter dateFromString:@"76"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"LL"]; var result = [_dateFormatter dateFromString:@"dzadza"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"LLL"]; var result = [_dateFormatter dateFromString:@"Seepre"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"LLLL"]; var result = [_dateFormatter dateFromString:@"Septemberezd"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenw { [_dateFormatter setDateFormat:@"w"]; var result = [_dateFormatter dateFromString:@"26"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-06-24 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"w"]; var result = [_dateFormatter dateFromString:@"76"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"w"]; var result = [_dateFormatter dateFromString:@"dzadza"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenW { [_dateFormatter setDateFormat:@"W"]; var result = [_dateFormatter dateFromString:@"2"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-08 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"W LL"]; var result = [_dateFormatter dateFromString:@"2 7"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-07-08 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"W"]; var result = [_dateFormatter dateFromString:@"76"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"W"]; var result = [_dateFormatter dateFromString:@"dzadzad"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokend { [_dateFormatter setDateFormat:@"d"]; var result = [_dateFormatter dateFromString:@"6"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-06 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"dd"]; var result = [_dateFormatter dateFromString:@"16"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-16 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"d LL"]; var result = [_dateFormatter dateFromString:@"6 7"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-07-06 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"ddd"]; var result = [_dateFormatter dateFromString:@"6"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-06 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"ddd"]; var result = [_dateFormatter dateFromString:@"62"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"ddd"]; var result = [_dateFormatter dateFromString:@"dzadza"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenD { [_dateFormatter setDateFormat:@"D"]; var result = [_dateFormatter dateFromString:@"76"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-03-16 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"D"]; var result = [_dateFormatter dateFromString:@"1076"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"D"]; var result = [_dateFormatter dateFromString:@"dzeezd"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenF { [_dateFormatter setDateFormat:@"F"]; var result = [_dateFormatter dateFromString:@"2"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-08 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"F"]; var result = [_dateFormatter dateFromString:@"23"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"F"]; var result = [_dateFormatter dateFromString:@"dezdez"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenE { // No logic in cocoa (or I didn't get it :/) [_dateFormatter setDateFormat:@"EEE"]; var result = [_dateFormatter dateFromString:@"Tue"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"EEEE"]; var result = [_dateFormatter dateFromString:@"Tuesday"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"EEEEE"]; var result = [_dateFormatter dateFromString:@"T"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"EEE"]; var result = [_dateFormatter dateFromString:@"dehez"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"EEEE"]; var result = [_dateFormatter dateFromString:@"dehez"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokene { // No logic in cocoa (or I didn't get it :/) [_dateFormatter setDateFormat:@"ee"]; var result = [_dateFormatter dateFromString:@"1"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"eee"]; var result = [_dateFormatter dateFromString:@"Tue"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"eeee"]; var result = [_dateFormatter dateFromString:@"Tuesday"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"eeeee"]; var result = [_dateFormatter dateFromString:@"T"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"ee"]; var result = [_dateFormatter dateFromString:@"frefre"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"eee"]; var result = [_dateFormatter dateFromString:@"dehez"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"eeee"]; var result = [_dateFormatter dateFromString:@"dehez"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenc { // No logic in cocoa (or I didn't get it :/) [_dateFormatter setDateFormat:@"cc"]; var result = [_dateFormatter dateFromString:@"1"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"ccc"]; var result = [_dateFormatter dateFromString:@"Tue"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"cccc"]; var result = [_dateFormatter dateFromString:@"Tuesday"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"ccccc"]; var result = [_dateFormatter dateFromString:@"T"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"cc"]; var result = [_dateFormatter dateFromString:@"dezde"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"ccc"]; var result = [_dateFormatter dateFromString:@"dehez"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"cccc"]; var result = [_dateFormatter dateFromString:@"dehez"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokena { [_dateFormatter setDateFormat:@"a"]; var result = [_dateFormatter dateFromString:@"PM"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 20:00:00 +0000"]]; [_dateFormatter setDateFormat:@"a"]; var result = [_dateFormatter dateFromString:@"AM"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"a"]; var result = [_dateFormatter dateFromString:@"PdM"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenh { [_dateFormatter setDateFormat:@"h"]; var result = [_dateFormatter dateFromString:@"11"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 19:00:00 +0000"]]; [_dateFormatter setDateFormat:@"hh"]; var result = [_dateFormatter dateFromString:@"3"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 11:00:00 +0000"]]; [_dateFormatter setDateFormat:@"hh"]; var result = [_dateFormatter dateFromString:@"0"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"hh a"]; var result = [_dateFormatter dateFromString:@"3 PM"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 23:00:00 +0000"]]; [_dateFormatter setDateFormat:@"hh a"]; var result = [_dateFormatter dateFromString:@"3 AM"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 11:00:00 +0000"]]; [_dateFormatter setDateFormat:@"hh"]; var result = [_dateFormatter dateFromString:@"13"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"hh"]; var result = [_dateFormatter dateFromString:@"edze"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenH { [_dateFormatter setDateFormat:@"H"]; var result = [_dateFormatter dateFromString:@"18"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-02 02:00:00 +0000"]]; [_dateFormatter setDateFormat:@"HH"]; var result = [_dateFormatter dateFromString:@"3"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 11:00:00 +0000"]]; [_dateFormatter setDateFormat:@"HH a"]; var result = [_dateFormatter dateFromString:@"2 PM"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 22:00:00 +0000"]]; [_dateFormatter setDateFormat:@"HH"]; var result = [_dateFormatter dateFromString:@"24"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"HH"]; var result = [_dateFormatter dateFromString:@"dezdez"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenK { [_dateFormatter setDateFormat:@"K"]; var result = [_dateFormatter dateFromString:@"11"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 19:00:00 +0000"]]; [_dateFormatter setDateFormat:@"KK"]; var result = [_dateFormatter dateFromString:@"3"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 11:00:00 +0000"]]; [_dateFormatter setDateFormat:@"KK"]; var result = [_dateFormatter dateFromString:@"0"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"KK a"]; var result = [_dateFormatter dateFromString:@"3 PM"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 23:00:00 +0000"]]; [_dateFormatter setDateFormat:@"KK a"]; var result = [_dateFormatter dateFromString:@"3 AM"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 11:00:00 +0000"]]; [_dateFormatter setDateFormat:@"KK"]; var result = [_dateFormatter dateFromString:@"13"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"KK"]; var result = [_dateFormatter dateFromString:@"dezdez"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenk { [_dateFormatter setDateFormat:@"k"]; var result = [_dateFormatter dateFromString:@"11"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 19:00:00 +0000"]]; [_dateFormatter setDateFormat:@"kk"]; var result = [_dateFormatter dateFromString:@"3"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 11:00:00 +0000"]]; [_dateFormatter setDateFormat:@"kk"]; var result = [_dateFormatter dateFromString:@"0"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"kk a"]; var result = [_dateFormatter dateFromString:@"3 PM"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 23:00:00 +0000"]]; [_dateFormatter setDateFormat:@"kk"]; var result = [_dateFormatter dateFromString:@"13"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"kk"]; var result = [_dateFormatter dateFromString:@"dezdezd"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenm { [_dateFormatter setDateFormat:@"m"]; var result = [_dateFormatter dateFromString:@"11"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:11:00 +0000"]]; [_dateFormatter setDateFormat:@"mm"]; var result = [_dateFormatter dateFromString:@"11"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:11:00 +0000"]] [_dateFormatter setDateFormat:@"mm"]; var result = [_dateFormatter dateFromString:@"61"]; [self assert:result equals:nil] [_dateFormatter setDateFormat:@"mm"]; var result = [_dateFormatter dateFromString:@"ezdezd"]; [self assert:result equals:nil] } - (void)testDateFromStringTokens { [_dateFormatter setDateFormat:@"s"]; var result = [_dateFormatter dateFromString:@"11"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:11 +0000"]]; [_dateFormatter setDateFormat:@"ss"]; var result = [_dateFormatter dateFromString:@"4"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:04 +0000"]] [_dateFormatter setDateFormat:@"ss"]; var result = [_dateFormatter dateFromString:@"64"]; [self assert:result equals:nil] [_dateFormatter setDateFormat:@"ss"]; var result = [_dateFormatter dateFromString:@"dezdez"]; [self assert:result equals:nil] } - (void)testDateFromStringTokenS { // No logic in cocoa (or I didn't get it :/) [_dateFormatter setDateFormat:@"SSS"]; var result = [_dateFormatter dateFromString:@"21212"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 08:00:00 +0000"]]; [_dateFormatter setDateFormat:@"SSS"]; var result = [_dateFormatter dateFromString:@"rer"]; [self assert:result equals:nil]; } - (void)testDateFromStringTokenA { [_dateFormatter setDateFormat:@"AAAAAAAA"]; var result = [_dateFormatter dateFromString:@"69540000"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-02 03:19:00 +0000"]]; [_dateFormatter setDateFormat:@"AAAAAAAA"]; var result = [_dateFormatter dateFromString:@"ezde"]; [self assert:result equals:nil]; } - (void)testDataFromStringTokenz { [_dateFormatter setDateFormat:@"hh zzz"]; var result = [_dateFormatter dateFromString:@"10 PDT"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 17:00:00 +0000"]]; [_dateFormatter setDateFormat:@"hh zzzz"]; var result = [_dateFormatter dateFromString:@"10 GMT+08:35"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 01:25:00 +0000"]]; [_dateFormatter setDateFormat:@"zzz"]; var result = [_dateFormatter dateFromString:@"PezST"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"zzzz"]; var result = [_dateFormatter dateFromString:@"dehez"]; [self assert:result equals:nil]; } - (void)testDataFromStringTokenZ { [_dateFormatter setDateFormat:@"hh ZZZ"]; var result = [_dateFormatter dateFromString:@"10 -0600"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 16:00:00 +0000"]]; [_dateFormatter setDateFormat:@"hh ZZZZ"]; var result = [_dateFormatter dateFromString:@"10 GMT-05:00"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 15:00:00 +0000"]]; [_dateFormatter setDateFormat:@"hh ZZZZZ"]; var result = [_dateFormatter dateFromString:@"10 +04:00"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 06:00:00 +0000"]]; [_dateFormatter setDateFormat:@"ZZZ"]; var result = [_dateFormatter dateFromString:@"dehez"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"ZZZZ"]; var result = [_dateFormatter dateFromString:@"dehez"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"ZZZZZ"]; var result = [_dateFormatter dateFromString:@"dehez"]; [self assert:result equals:nil]; } // - (void)testDataFromStringTokenv { [_dateFormatter setDateFormat:@"hh v"]; var result = [_dateFormatter dateFromString:@"02 PT"]; // As the CPTimeZone does not care about daylight saving time. The 'PT' time zone can result in 'PST' or 'PDT'. // The assert below can be any of the two version depending which time zone abbreviation CPDictionary 'keyEnumerator' // will return first. This behaviour is undefined. if ([[CPTimeZone _timeZoneFromString:@"PT" style:CPTimeZoneNameStyleShortGeneric locale:[_dateFormatter locale]] abbreviation] === @"PDT") [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 09:00:00 +0000"]]; else [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 10:00:00 +0000"]]; [_dateFormatter setDateFormat:@"hh vvvv"]; var result = [_dateFormatter dateFromString:@"8 GMT-08:35"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 16:35:00 +0000"]]; [_dateFormatter setDateFormat:@"v"]; var result = [_dateFormatter dateFromString:@"PezST"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"vvvv"]; var result = [_dateFormatter dateFromString:@"dehez"]; [self assert:result equals:nil]; } - (void)testDataFromStringTokenV { [_dateFormatter setDateFormat:@"hh V"]; var result = [_dateFormatter dateFromString:@"6 PST"]; [self assert:result equals:[[CPDate alloc] initWithString:@"2000-01-01 14:00:00 +0000"]]; [_dateFormatter setDateFormat:@"hh VVVV"]; var result = [_dateFormatter dateFromString:@"6 GMT+06:35"]; [self assert:result equals:[[CPDate alloc] initWithString:@"1999-12-31 23:25:00 +0000"]]; [_dateFormatter setDateFormat:@"V"]; var result = [_dateFormatter dateFromString:@"PezST"]; [self assert:result equals:nil]; [_dateFormatter setDateFormat:@"VVVV"]; var result = [_dateFormatter dateFromString:@"dehez"]; [self assert:result equals:nil]; } - (void)testGetObjectValueAcceptsNilErrorDescription { var date = nil, result = [_dateFormatter getObjectValue:@ref(date) forString:@"a" errorDescription:nil]; [self assertFalse:result]; [self assertTrue:date === nil]; } - (void)testGetObjectValueForEmptyStringReturnsReferenceDate { [_dateFormatter setDateFormat:@"d mm"]; var date = nil, error = @"", result = [_dateFormatter getObjectValue:@ref(date) forString:@"" errorDescription:@ref(error)]; [self assertTrue:result]; [self assert:[[CPDate alloc] initWithString:@"2000-01-01 00:00:00 +0000"] equals:date]; [self assert:error equals:@""]; } - (void)testGetObjectValueReturnYes { [_dateFormatter setDateFormat:@"d mm"]; var date = nil, error = @"", result = [_dateFormatter getObjectValue:@ref(date) forString:@"10 12" errorDescription:@ref(error)]; [self assertTrue:result]; [self assert:date equals:[[CPDate alloc] initWithString:@"2000-01-10 08:12:00 +0000"]]; [self assert:error equals:@""]; } - (void)testGetObjectValueReturnNo { [_dateFormatter setDateFormat:@"d mm"]; var date = nil, error = @"", result = [_dateFormatter getObjectValue:@ref(date) forString:@"ezr 12" errorDescription:@ref(error)]; [self assert:result equals:NO]; [self assert:date equals:nil]; [self assert:error equals:@"The value \"ezr 12\" is invalid."]; } #pragma mark - #pragma mark non-en locales // Unless we have full locale support any non-supported locale should return the english values as they are the only defined ones at the moment. - (void)testGetNonEnAMSymbol { var enValue = [_dateFormatter AMSymbol], value = [_nonEnDateFormatter AMSymbol]; [self assert:enValue equals:value]; } - (void)testGetNonEnPMSymbol { var enValue = [_dateFormatter PMSymbol], value = [_nonEnDateFormatter PMSymbol]; [self assert:enValue equals:value]; } - (void)testGetNonEnWeekdaySymbols { var enValue = [_dateFormatter weekdaySymbols], value = [_nonEnDateFormatter weekdaySymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnShortWeekdaySymbols { var enValue = [_dateFormatter shortWeekdaySymbols], value = [_nonEnDateFormatter shortWeekdaySymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnVeryShortWeekdaySymbols { var enValue = [_dateFormatter veryShortWeekdaySymbols], value = [_nonEnDateFormatter veryShortWeekdaySymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnStandaloneWeekdaySymbols { var enValue = [_dateFormatter standaloneWeekdaySymbols], value = [_nonEnDateFormatter standaloneWeekdaySymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnShortStandaloneWeekdaySymbols { var enValue = [_dateFormatter shortStandaloneWeekdaySymbols], value = [_nonEnDateFormatter shortStandaloneWeekdaySymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnVeryShortStandaloneWeekdaySymbols { var enValue = [_dateFormatter veryShortStandaloneWeekdaySymbols], value = [_nonEnDateFormatter veryShortStandaloneWeekdaySymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnMonthSymbols { var enValue = [_dateFormatter monthSymbols], value = [_nonEnDateFormatter monthSymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnShortMonthSymbols { var enValue = [_dateFormatter shortMonthSymbols], value = [_nonEnDateFormatter shortMonthSymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnVeryShortMonthSymbols { var enValue = [_dateFormatter veryShortMonthSymbols], value = [_nonEnDateFormatter veryShortMonthSymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnStandaloneMonthSymbols { var enValue = [_dateFormatter standaloneMonthSymbols], value = [_nonEnDateFormatter standaloneMonthSymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnShortStandaloneMonthSymbols { var enValue = [_dateFormatter shortStandaloneMonthSymbols], value = [_nonEnDateFormatter shortStandaloneMonthSymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnVeryShortStandaloneMonthSymbols { var enValue = [_dateFormatter veryShortStandaloneMonthSymbols], value = [_nonEnDateFormatter veryShortStandaloneMonthSymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnQuarterSymbols { var enValue = [_dateFormatter quarterSymbols], value = [_nonEnDateFormatter quarterSymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnShortQuarterSymbols { var enValue = [_dateFormatter shortQuarterSymbols], value = [_nonEnDateFormatter shortQuarterSymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnStandaloneQuarterSymbols { var enValue = [_dateFormatter standaloneQuarterSymbols], value = [_nonEnDateFormatter standaloneQuarterSymbols]; [self assert:enValue equals:value]; } - (void)testGetNonEnShortStandaloneQuarterSymbols { var enValue = [_dateFormatter shortStandaloneQuarterSymbols], value = [_nonEnDateFormatter shortStandaloneQuarterSymbols]; [self assert:enValue equals:value]; } @end