libs-base/Tests/base/NSTimeZone/use.m
rfm 3fba03ba55 Important change to the START_SET and END_SET macros to stop their use
being confusing.  They now both take a simple C-string argument which
names the set, and the macros check that each end matches a start of
the same name.  Since tis means that a START_SET no longer takes an
argument sayng whether or notthe set is to be skipped, we now have a
SKIP macro to be used inside a set to skip to the end of it.  This
is actually more versatile as we can have multiple SKIP macros in the
same set, each providing a different reason for the set being skipped.
Also removed a few obsolete/unused functions and macros.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@32355 72102866-910b-0410-8b05-ffd578937521
2011-02-24 16:26:01 +00:00

93 lines
3.4 KiB
Objective-C

#import "ObjectTesting.h"
#import <Foundation/Foundation.h>
#if defined(GS_USE_ICU)
#define NSLOCALE_SUPPORTED GS_USE_ICU
#else
#define NSLOCALE_SUPPORTED 1 /* Assume Apple support */
#endif
int main()
{
NSAutoreleasePool *arp = [NSAutoreleasePool new];
NSLocale *locale;
NSString *str;
NSDate *date;
id current;
id localh = [NSTimeZone defaultTimeZone];
int offset = [localh secondsFromGMT];
current = [NSTimeZone timeZoneForSecondsFromGMT: 900];
PASS(current != nil && [current isKindOfClass: [NSTimeZone class]]
&& [current secondsFromGMT] == 900,
"+timeZoneForSecondsFromGMT works");
current = [NSTimeZone timeZoneForSecondsFromGMT: -45];
PASS(current != nil && [current isKindOfClass: [NSTimeZone class]]
&& [current secondsFromGMT] == -60,
"+timeZoneForSecondsFromGMT rounds to minute");
current = [NSTimeZone timeZoneForSecondsFromGMT: 7260];
PASS(current != nil && [current isKindOfClass: [NSTimeZone class]]
&& [[current name] isEqual: @"GMT+0201"],
"+timeZoneForSecondsFromGMT has correct name");
current = [NSTimeZone timeZoneForSecondsFromGMT: -3600];
PASS(current != nil && [current isKindOfClass: [NSTimeZone class]]
&& [[current abbreviation] isEqual: @"GMT-0100"],
"+timeZoneForSecondsFromGMT has correct abbreviation");
current = [NSTimeZone timeZoneForSecondsFromGMT: -3600];
PASS(current != nil && [current isKindOfClass: [NSTimeZone class]]
&& [current isDaylightSavingTime] == NO,
"+timeZoneForSecondsFromGMT has DST NO");
current = [NSTimeZone timeZoneForSecondsFromGMT: offset];
[NSTimeZone setDefaultTimeZone: current];
current = [NSTimeZone localTimeZone];
PASS(current != nil && [current isKindOfClass: [NSTimeZone class]]
&& [current secondsFromGMT] == offset
&& [current isDaylightSavingTime] == NO,
"can set default time zone");
START_SET("NSLocale")
if (!NSLOCALE_SUPPORTED)
SKIP("NSlocale not supported\nThe ICU library was not available when GNUstep-base was built")
current = [NSTimeZone timeZoneWithName: @"America/Sao_Paulo"];
locale = [[NSLocale alloc] initWithLocaleIdentifier: @"en_GB"];
PASS_EQUAL(
[current localizedName: NSTimeZoneNameStyleStandard locale: locale],
@"Brasilia Time",
"Correctly localizes standard time zone name")
PASS_EQUAL(
[current localizedName: NSTimeZoneNameStyleShortStandard locale: locale],
@"GMT-03:00",
"Correctly localizes short time zone name")
PASS_EQUAL(
[current localizedName: NSTimeZoneNameStyleDaylightSaving locale: locale],
@"Brasilia Summer Time",
"Correctly localizes DST time zone name")
PASS_EQUAL(
[current localizedName: NSTimeZoneNameStyleShortDaylightSaving
locale: locale],
@"GMT-02:00",
"Correctly localizes short DST time zone name")
RELEASE(locale);
date = [NSDate dateWithTimeIntervalSince1970: 1.0];
PASS ([current daylightSavingTimeOffsetForDate: date] == 0.0,
"Returns correct Daylight Saving offset.")
date = [NSDate dateWithTimeIntervalSince1970: 1297308214.0];
PASS ([current daylightSavingTimeOffsetForDate: date] == 3600.0,
"Returns correct Daylight Saving offset.")
date = [NSDate date];
PASS ([current daylightSavingTimeOffset]
== [current daylightSavingTimeOffsetForDate: date],
"Returns correct Daylight Saving offset.")
END_SET("NSLocale")
[arp release]; arp = nil;
return 0;
}