/** * Test various API methods for API completeness. */ public function testGenericAPI() { /* UErrorCode status = U_ZERO_ERROR; UDate d; UnicodeString str; */ $eq = $b4 = $af = false; $when = $this->date(90, AgaviDateDefinitions::APRIL, 15); $tzid = "TestZone"; $tzoffset = 123400; $zone = new AgaviSimpleTimeZone($this->tm, $tzoffset, $tzid); $cal = $this->tm->createCalendar($zone); $this->assertTrue($cal->getTimeZone()->__is_equal($zone), 'AgaviCalendar::getTimeZone failed'); $cal2 = $this->tm->createCalendar($cal->getTimeZone()); $cal->setTime($when); $cal2->setTime($when); $this->assertTrue($cal->__is_equal($cal2), 'AgaviCalendar::operator== failed'); $this->assertFalse($cal->__is_not_equal($cal2), 'AgaviCalendar::operator!= failed'); $this->assertFalse(!$cal->equals($cal2) || $cal->before($cal2) || $cal->after($cal2), 'equals/before/after failed'); $cal2->setTime($when + 1000); $b1 = $cal->equals($cal2); $b2 = $cal2->before($cal); $b3 = $cal->after($cal2); $this->assertFalse($cal->equals($cal2) || $cal2->before($cal) || $cal->after($cal2), 'equals/before/after failed after setTime(+1000)'); $cal->roll(AgaviDateDefinitions::SECOND, true); $this->assertFalse(!($eq = $cal->equals($cal2)) || ($b4 = $cal->before($cal2)) || ($af = $cal->after($cal2)), sprintf("equals[%s]/before[%s]/after[%s] failed after roll 1 second [should be T/F/F]", $eq ? 'T' : 'F', $b4 ? 'T' : 'F', $af ? 'T' : 'F')); // Roll back to January $cal->roll(AgaviDateDefinitions::MONTH, (int) (1 + AgaviDateDefinitions::DECEMBER - $cal->get(AgaviDateDefinitions::MONTH))); $this->assertFalse($cal->equals($cal2) || $cal2->before($cal) || $cal->after($cal2), 'equals/before/after failed after rollback to January'); for ($i = 0; $i < 2; ++$i) { $lenient = $i > 0; $cal->setLenient($lenient); $this->assertEquals($lenient, $cal->isLenient(), 'setLenient/isLenient failed'); // Later: Check for lenient behavior } for ($i = AgaviDateDefinitions::SUNDAY; $i <= AgaviDateDefinitions::SATURDAY; ++$i) { $cal->setFirstDayOfWeek($i); $this->assertEquals($i, $cal->getFirstDayOfWeek(), 'set/getFirstDayOfWeek failed'); } for ($i = 1; $i <= 7; ++$i) { $cal->setMinimalDaysInFirstWeek($i); $this->assertEquals($i, $cal->getMinimalDaysInFirstWeek(), 'set/getFirstDayOfWeek failed'); } for ($i = 0; $i < AgaviDateDefinitions::FIELD_COUNT; ++$i) { $this->assertEquals($cal->getMinimum($i), $cal->getGreatestMinimum($i), 'getMinimum doesn\'t match getGreatestMinimum for field ' . $i); $this->assertFalse($cal->getLeastMaximum($i) > $cal->getMaximum($i), 'getLeastMaximum larger than getMaximum for field ' . $i); $this->assertFalse($cal->getMinimum($i) >= $cal->getMaximum($i), 'getMinimum not less than getMaximum for field ' . $i); } $cal->setTimeZone($this->tm->getDefaultTimeZone()); $cal->clear(); $cal->set2(1984, 5, 24); $this->assertEquals($this->date(84, 5, 24), $cal->getTime(), 'AgaviCalendarCalendar::set(3 args) failed'); $cal->clear(); $cal->set3(1985, 3, 2, 11, 49); $this->assertEquals($this->date(85, 3, 2, 11, 49), $cal->getTime(), 'AgaviCalendar::set(5 args) failed'); $cal->clear(); $cal->set4(1995, 9, 12, 1, 39, 55); $this->assertEquals($this->date(95, 9, 12, 1, 39, 55), $cal->getTime(), 'AgaviCalendar::set(6 args) failed'); $cal->getTime(); for ($i = 0; $i < AgaviDateDefinitions::FIELD_COUNT; ++$i) { switch ($i) { case AgaviDateDefinitions::YEAR: case AgaviDateDefinitions::MONTH: case AgaviDateDefinitions::DATE: case AgaviDateDefinitions::HOUR_OF_DAY: case AgaviDateDefinitions::MINUTE: case AgaviDateDefinitions::SECOND: case AgaviDateDefinitions::EXTENDED_YEAR: $this->assertTrue($cal->_isSet($i), 'AgaviCalendar::isSet F, should be T ' . $this->fieldName($i)); break; default: $this->assertFalse($cal->_isSet($i), 'AgaviCalendar::isSet = T, should be F ' . $this->fieldName($i)); } $cal->clear($i); $this->assertFalse($cal->_isSet($i), 'AgaviCalendar::clear/isSet failed ' + $this->fieldName($i)); } return; // TODO: enable again // TODO: there is no api for this currently $cal = AgaviCalendar::createInstance(AgaviTimeZone::createDefault(), AgaviLocale::getEnglish()); $cal = AgaviCalendar::createInstance($zone, AgaviLocale::getEnglish()); $gc = $this->tm->createCalendar($zone); $gc = $this->tm->createCalendar(AgaviLocale::getEnglish()); $gc = $this->tm->createCalendar(AgaviLocale::getEnglish()); $gc = new AgaviGregorianCalendar($zone, AgaviLocale::getEnglish()); $gc = $this->tm->createCalendar($zone); $gc = new AgaviGregorianCalendar(1998, 10, 14, 21, 43); $this->assertEquals($this->date(98, 10, 14, 21, 43), $gc->getTime()); $gc = new AgaviGregorianCalendar(1998, 10, 14, 21, 43, 55); $this->assertEquals($this->date(98, 10, 14, 21, 43, 55), $gc->getTime()); $gc2 = new AgaviGregorianCalendar(AgaviLocale::getEnglish()); $gc2 = clone $gc; $this->assertFalse($gc2->__is_not_equal($gc) || !$gc2->__is_equal($gc), 'AgaviGregorianCalendar assignment/operator==/operator!= failed'); }