#include "LCDateTools.h" #include "GNUstep.h" #include @interface TestDateTools: NSObject @end @implementation TestDateTools - (NSString *) isoFormat: (NSCalendarDate *) date { return [date descriptionWithCalendarFormat: @"%Y-%m-%d %H:%M:%S:%F"]; } - (void) testStringToDate { NSCalendarDate *date = [@"2004" calendarDate]; UKStringsEqual(@"2004-01-01 00:00:00:000", [self isoFormat: date]); date = [@"20040705" calendarDate]; UKStringsEqual(@"2004-07-05 00:00:00:000", [self isoFormat: date]); date = [@"200407050910" calendarDate]; UKStringsEqual(@"2004-07-05 09:10:00:000", [self isoFormat: date]); #if 0 // FIXME: millisecond doesn't work on Linux date = [@"20040705091055990" calendarDate]; UKStringsEqual(@"2004-07-05 09:10:55:990", [self isoFormat: date]); #endif #if 0 try { d = DateTools.stringToDate("97"); // no date fail(); } catch(ParseException e) { /* expected excpetion */ } try { d = DateTools.stringToDate("200401011235009999"); // no date fail(); } catch(ParseException e) { /* expected excpetion */ } try { d = DateTools.stringToDate("aaaa"); // no date fail(); } catch(ParseException e) { /* expected excpetion */ } #endif } - (void) testStringToTime { NSTimeInterval t = [@"197001010000" timeIntervalSince1970]; NSCalendarDate *d = [NSCalendarDate dateWithYear: 1970 month: 1 day: 1 hour: 0 minute: 0 second: 0 timeZone: [NSTimeZone timeZoneWithAbbreviation: @"GMT"]]; UKTrue(t == [d timeIntervalSince1970]); t = [@"198002021105" timeIntervalSince1970]; d = [NSCalendarDate dateWithYear: 1980 month: 2 day: 2 hour: 11 minute: 5 second: 0 timeZone: [NSTimeZone timeZoneWithAbbreviation: @"GMT"]]; UKTrue(t == [d timeIntervalSince1970]); } - (void) testDateAndTimeToString { NSCalendarDate *d = [NSCalendarDate dateWithYear: 2004 month: 2 day: 3 hour: 22 minute: 8 second: 56 timeZone: [NSTimeZone timeZoneWithAbbreviation: @"GMT"]]; NSString *dateString = [NSString stringWithCalendarDate: d resolution: LCResolution_YEAR]; UKStringsEqual(@"2004", dateString); UKStringsEqual(@"2004-01-01 00:00:00:000", [self isoFormat: [dateString calendarDate]]); dateString = [NSString stringWithCalendarDate: d resolution: LCResolution_MONTH]; UKStringsEqual(@"200402", dateString); UKStringsEqual(@"2004-02-01 00:00:00:000", [self isoFormat: [dateString calendarDate]]); dateString = [NSString stringWithCalendarDate: d resolution: LCResolution_DAY]; UKStringsEqual(@"20040203", dateString); UKStringsEqual(@"2004-02-03 00:00:00:000", [self isoFormat: [dateString calendarDate]]); dateString = [NSString stringWithCalendarDate: d resolution: LCResolution_HOUR]; UKStringsEqual(@"2004020322", dateString); UKStringsEqual(@"2004-02-03 22:00:00:000", [self isoFormat: [dateString calendarDate]]); dateString = [NSString stringWithCalendarDate: d resolution: LCResolution_MINUTE]; UKStringsEqual(@"200402032208", dateString); UKStringsEqual(@"2004-02-03 22:08:00:000", [self isoFormat: [dateString calendarDate]]); dateString = [NSString stringWithCalendarDate: d resolution: LCResolution_SECOND]; UKStringsEqual(@"20040203220856", dateString); UKStringsEqual(@"2004-02-03 22:08:56:000", [self isoFormat: [dateString calendarDate]]); #if 0 dateString = DateTools.dateToString(cal.getTime(), DateTools.Resolution.MILLISECOND); assertEquals("20040203220856333", dateString); assertEquals("2004-02-03 22:08:56:333", isoFormat(DateTools.stringToDate(dateString))); #endif // date before 1970: d = [NSCalendarDate dateWithYear: 1961 month: 3 day: 5 hour: 23 minute: 9 second: 51 timeZone: [NSTimeZone timeZoneWithAbbreviation: @"GMT"]]; dateString = [NSString stringWithCalendarDate: d resolution: LCResolution_SECOND];; UKStringsEqual(@"19610305230951", dateString); UKStringsEqual(@"1961-03-05 23:09:51:000", [self isoFormat: [dateString calendarDate]]); dateString = [NSString stringWithCalendarDate: d resolution: LCResolution_HOUR];; UKStringsEqual(@"1961030523", dateString); UKStringsEqual(@"1961-03-05 23:00:00:000", [self isoFormat: [dateString calendarDate]]); // timeToString: d = [NSCalendarDate dateWithYear: 1970 month: 1 day: 1 hour: 0 minute: 0 second: 0 timeZone: [NSTimeZone timeZoneWithAbbreviation: @"GMT"]]; dateString = [NSString stringWithTimeIntervalSince1970: [d timeIntervalSince1970] resolution: LCResolution_MILLISECOND];; UKStringsEqual(@"19700101000000000", dateString); d = [NSCalendarDate dateWithYear: 1970 month: 1 day: 1 hour: 1 minute: 2 second: 3 timeZone: [NSTimeZone timeZoneWithAbbreviation: @"GMT"]]; dateString = [NSString stringWithTimeIntervalSince1970: [d timeIntervalSince1970] resolution: LCResolution_MILLISECOND];; UKStringsEqual(@"19700101010203000", dateString); } - (void) testRound { NSCalendarDate *d = [NSCalendarDate dateWithYear: 2004 month: 2 day: 3 hour: 22 minute: 8 second: 56 timeZone: nil]; UKStringsEqual(@"2004-02-03 22:08:56:000", [self isoFormat: d]); NSCalendarDate *r = [d dateWithResolution: LCResolution_YEAR]; UKStringsEqual(@"2004-01-01 00:00:00:000", [self isoFormat: r]); r = [d dateWithResolution: LCResolution_MONTH]; UKStringsEqual(@"2004-02-01 00:00:00:000", [self isoFormat: r]); r = [d dateWithResolution: LCResolution_DAY]; UKStringsEqual(@"2004-02-03 00:00:00:000", [self isoFormat: r]); r = [d dateWithResolution: LCResolution_HOUR]; UKStringsEqual(@"2004-02-03 22:00:00:000", [self isoFormat: r]); r = [d dateWithResolution: LCResolution_MINUTE]; UKStringsEqual(@"2004-02-03 22:08:00:000", [self isoFormat: r]); r = [d dateWithResolution: LCResolution_SECOND]; UKStringsEqual(@"2004-02-03 22:08:56:000", [self isoFormat: r]); #if 0 Date dateMillisecond = DateTools.round(date, DateTools.Resolution.MILLISECOND); assertEquals("2004-02-03 22:08:56:333", isoFormat(dateMillisecond)); #endif // long parameter: NSTimeInterval t = [d timeIntervalSince1970WithResolution: LCResolution_YEAR]; r = [NSCalendarDate dateWithTimeIntervalSince1970: t]; UKStringsEqual(@"2004-01-01 00:00:00:000", [self isoFormat: r]); t = [d timeIntervalSince1970WithResolution: LCResolution_MILLISECOND]; r = [NSCalendarDate dateWithTimeIntervalSince1970: t]; UKStringsEqual(@"2004-02-03 22:08:56:000", [self isoFormat: r]); } @end