X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/a01113dcd0f39d5da295ef82785beff9ed86fe38..refs/heads/master:/icuSources/test/intltest/astrotst.cpp?ds=sidebyside diff --git a/icuSources/test/intltest/astrotst.cpp b/icuSources/test/intltest/astrotst.cpp index 4b842f3b..ba1c5be5 100644 --- a/icuSources/test/intltest/astrotst.cpp +++ b/icuSources/test/intltest/astrotst.cpp @@ -44,7 +44,12 @@ void AstroTest::runIndexedTest( int32_t index, UBool exec, const char* &name, ch #undef CASE -#define ASSERT_OK(x) if(U_FAILURE(x)) { dataerrln("%s:%d: %s\n", __FILE__, __LINE__, u_errorName(x)); return; } +#define ASSERT_OK(x) UPRV_BLOCK_MACRO_BEGIN { \ + if(U_FAILURE(x)) { \ + dataerrln("%s:%d: %s\n", __FILE__, __LINE__, u_errorName(x)); \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END void AstroTest::initAstro(UErrorCode &status) { @@ -256,7 +261,7 @@ void AstroTest::TestSunriseTimes(void) { logln("Sunrise/Sunset times for Toronto, Canada"); // long = 79 25", lat = 43 40" - CalendarAstronomer *astro3 = new CalendarAstronomer(-(79+25/60), 43+40/60); + CalendarAstronomer astro3(-(79+25/60), 43+40/60); // As of ICU4J 2.8 the ICU4J time zones implement pass-through // to the underlying JDK. Because of variation in the @@ -266,46 +271,47 @@ void AstroTest::TestSunriseTimes(void) { // [aliu 10/15/03] // TimeZone tz = TimeZone.getTimeZone("America/Montreal"); - TimeZone *tz = new SimpleTimeZone(-18000000 + 3600000, "Montreal(FIXED)"); - - GregorianCalendar *cal = new GregorianCalendar(tz->clone(), Locale::getUS(), status); - GregorianCalendar *cal2 = new GregorianCalendar(tz->clone(), Locale::getUS(), status); - cal->clear(); - cal->set(UCAL_YEAR, 2001); - cal->set(UCAL_MONTH, UCAL_APRIL); - cal->set(UCAL_DAY_OF_MONTH, 1); - cal->set(UCAL_HOUR_OF_DAY, 12); // must be near local noon for getSunRiseSet to work - - DateFormat *df_t = DateFormat::createTimeInstance(DateFormat::MEDIUM,Locale::getUS()); - DateFormat *df_d = DateFormat::createDateInstance(DateFormat::MEDIUM,Locale::getUS()); - DateFormat *df_dt = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::MEDIUM, Locale::getUS()); - if(!df_t || !df_d || !df_dt) { - dataerrln("couldn't create dateformats."); - return; + SimpleTimeZone tz(-18000000 + 3600000, "Montreal(FIXED)"); + + GregorianCalendar cal(tz.clone(), Locale::getUS(), status); + GregorianCalendar cal2(tz.clone(), Locale::getUS(), status); + cal.clear(); + cal.set(UCAL_YEAR, 2001); + cal.set(UCAL_MONTH, UCAL_APRIL); + cal.set(UCAL_DAY_OF_MONTH, 1); + cal.set(UCAL_HOUR_OF_DAY, 12); // must be near local noon for getSunRiseSet to work + + LocalPointer df_t(DateFormat::createTimeInstance(DateFormat::MEDIUM,Locale::getUS())); + LocalPointer df_d(DateFormat::createDateInstance(DateFormat::MEDIUM,Locale::getUS())); + LocalPointer df_dt(DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::MEDIUM, Locale::getUS())); + if(!df_t.isValid() || !df_d.isValid() || !df_dt.isValid()) { + dataerrln("couldn't create dateformats."); + closeAstro(status); + return; } - df_t->adoptTimeZone(tz->clone()); - df_d->adoptTimeZone(tz->clone()); - df_dt->adoptTimeZone(tz->clone()); + df_t->adoptTimeZone(tz.clone()); + df_d->adoptTimeZone(tz.clone()); + df_dt->adoptTimeZone(tz.clone()); for (int32_t i=0; i < 30; i++) { logln("setDate\n"); - astro3->setDate(cal->getTime(status)); + astro3.setDate(cal.getTime(status)); logln("getRiseSet(TRUE)\n"); - UDate sunrise = astro3->getSunRiseSet(TRUE); + UDate sunrise = astro3.getSunRiseSet(TRUE); logln("getRiseSet(FALSE)\n"); - UDate sunset = astro3->getSunRiseSet(FALSE); + UDate sunset = astro3.getSunRiseSet(FALSE); logln("end of getRiseSet\n"); - cal2->setTime(cal->getTime(status), status); - cal2->set(UCAL_SECOND, 0); - cal2->set(UCAL_MILLISECOND, 0); + cal2.setTime(cal.getTime(status), status); + cal2.set(UCAL_SECOND, 0); + cal2.set(UCAL_MILLISECOND, 0); - cal2->set(UCAL_HOUR_OF_DAY, USNO[4*i+0]); - cal2->set(UCAL_MINUTE, USNO[4*i+1]); - UDate exprise = cal2->getTime(status); - cal2->set(UCAL_HOUR_OF_DAY, USNO[4*i+2]); - cal2->set(UCAL_MINUTE, USNO[4*i+3]); - UDate expset = cal2->getTime(status); + cal2.set(UCAL_HOUR_OF_DAY, USNO[4*i+0]); + cal2.set(UCAL_MINUTE, USNO[4*i+1]); + UDate exprise = cal2.getTime(status); + cal2.set(UCAL_HOUR_OF_DAY, USNO[4*i+2]); + cal2.set(UCAL_MINUTE, USNO[4*i+3]); + UDate expset = cal2.getTime(status); // Compute delta of what we got to the USNO data, in seconds int32_t deltarise = (int32_t)uprv_fabs((sunrise - exprise) / 1000); int32_t deltaset = (int32_t)uprv_fabs((sunset - expset) / 1000); @@ -318,34 +324,34 @@ void AstroTest::TestSunriseTimes(void) { UnicodeString s1, s2, s3, s4, s5; if (deltarise > MAX_DEV || deltaset > MAX_DEV) { if (deltarise > MAX_DEV) { - errln("FAIL: (rise) " + df_d->format(cal->getTime(status),s1) + + errln("FAIL: (rise) " + df_d->format(cal.getTime(status),s1) + ", Sunrise: " + df_dt->format(sunrise, s2) + " (USNO " + df_t->format(exprise,s3) + " d=" + deltarise + "s)"); } else { - logln(df_d->format(cal->getTime(status),s1) + + logln(df_d->format(cal.getTime(status),s1) + ", Sunrise: " + df_dt->format(sunrise,s2) + " (USNO " + df_t->format(exprise,s3) + ")"); } s1.remove(); s2.remove(); s3.remove(); s4.remove(); s5.remove(); if (deltaset > MAX_DEV) { - errln("FAIL: (set) " + df_d->format(cal->getTime(status),s1) + + errln("FAIL: (set) " + df_d->format(cal.getTime(status),s1) + ", Sunset: " + df_dt->format(sunset,s2) + " (USNO " + df_t->format(expset,s3) + " d=" + deltaset + "s)"); } else { - logln(df_d->format(cal->getTime(status),s1) + + logln(df_d->format(cal.getTime(status),s1) + ", Sunset: " + df_dt->format(sunset,s2) + " (USNO " + df_t->format(expset,s3) + ")"); } } else { - logln(df_d->format(cal->getTime(status),s1) + + logln(df_d->format(cal.getTime(status),s1) + ", Sunrise: " + df_dt->format(sunrise,s2) + " (USNO " + df_t->format(exprise,s3) + ")" + ", Sunset: " + df_dt->format(sunset,s4) + " (USNO " + df_t->format(expset,s5) + ")"); } - cal->add(UCAL_DATE, 1, status); + cal.add(UCAL_DATE, 1, status); } // CalendarAstronomer a = new CalendarAstronomer(-(71+5/60), 42+37/60); @@ -358,13 +364,6 @@ void AstroTest::TestSunriseTimes(void) { // cal.set(cal.DATE, 27); // a.setDate(cal.getTime()); // long r = a.getSunRiseSet2(true); - delete astro3; - delete tz; - delete cal; - delete cal2; - delete df_t; - delete df_d; - delete df_dt; closeAstro(status); ASSERT_OK(status); } @@ -380,38 +379,43 @@ void AstroTest::TestBasics(void) { } // Check that our JD computation is the same as the book's (p. 88) - GregorianCalendar *cal3 = new GregorianCalendar(TimeZone::getGMT()->clone(), Locale::getUS(), status); - DateFormat *d3 = DateFormat::createDateTimeInstance(DateFormat::MEDIUM,DateFormat::MEDIUM,Locale::getUS()); + GregorianCalendar cal3(TimeZone::getGMT()->clone(), Locale::getUS(), status); + LocalPointer d3(DateFormat::createDateTimeInstance(DateFormat::MEDIUM,DateFormat::MEDIUM,Locale::getUS())); + if (d3.isNull()) { + dataerrln("Got error: %s", u_errorName(status)); + closeAstro(status); + return; + } d3->setTimeZone(*TimeZone::getGMT()); - cal3->clear(); - cal3->set(UCAL_YEAR, 1980); - cal3->set(UCAL_MONTH, UCAL_JULY); - cal3->set(UCAL_DATE, 2); - logln("cal3[a]=%.1lf, d=%d\n", cal3->getTime(status), cal3->get(UCAL_JULIAN_DAY,status)); + cal3.clear(); + cal3.set(UCAL_YEAR, 1980); + cal3.set(UCAL_MONTH, UCAL_JULY); + cal3.set(UCAL_DATE, 2); + logln("cal3[a]=%.1lf, d=%d\n", cal3.getTime(status), cal3.get(UCAL_JULIAN_DAY,status)); { UnicodeString s; - logln(UnicodeString("cal3[a] = ") + d3->format(cal3->getTime(status),s)); + logln(UnicodeString("cal3[a] = ") + d3->format(cal3.getTime(status),s)); } - cal3->clear(); - cal3->set(UCAL_YEAR, 1980); - cal3->set(UCAL_MONTH, UCAL_JULY); - cal3->set(UCAL_DATE, 27); - logln("cal3=%.1lf, d=%d\n", cal3->getTime(status), cal3->get(UCAL_JULIAN_DAY,status)); + cal3.clear(); + cal3.set(UCAL_YEAR, 1980); + cal3.set(UCAL_MONTH, UCAL_JULY); + cal3.set(UCAL_DATE, 27); + logln("cal3=%.1lf, d=%d\n", cal3.getTime(status), cal3.get(UCAL_JULIAN_DAY,status)); ASSERT_OK(status); { UnicodeString s; - logln(UnicodeString("cal3 = ") + d3->format(cal3->getTime(status),s)); + logln(UnicodeString("cal3 = ") + d3->format(cal3.getTime(status),s)); } - astro->setTime(cal3->getTime(status)); + astro->setTime(cal3.getTime(status)); double jd = astro->getJulianDay() - 2447891.5; double exp = -3444.; if (jd == exp) { UnicodeString s; - logln(d3->format(cal3->getTime(status),s) + " => " + jd); + logln(d3->format(cal3.getTime(status),s) + " => " + jd); } else { UnicodeString s; - errln("FAIL: " + d3->format(cal3->getTime(status), s) + " => " + jd + + errln("FAIL: " + d3->format(cal3.getTime(status), s) + " => " + jd + ", expected " + exp); } @@ -423,8 +427,6 @@ void AstroTest::TestBasics(void) { // astro.setDate(cal3.getTime()); // astro.foo(); - delete cal3; - delete d3; ASSERT_OK(status); closeAstro(status); ASSERT_OK(status);