public void test_weekOfMonth_getValue_sun7() { // July 2011 starts on a Friday // Fri/Sat 1st/2nd are week 0 DateTimeRule rule = WeekRules.of(SUNDAY, 7).weekOfMonth(); for (int i = 1; i <= 31; i++) { int w = MathUtils.floorDiv(i - 3, 7) + 1; // 3rd is start of week 1 assertEquals(rule.getValue(LocalDate.of(2011, 7, i)), rule.field(w)); } }
@Test(dataProvider = "allRules") public void test_weekOfMonth_getValue_crossCheckCalendar(DayOfWeek dow, int minimalDays) { DateTimeRule rule = WeekRules.of(dow, minimalDays).weekOfMonth(); GregorianCalendar gcal = new GregorianCalendar(); gcal.setFirstDayOfWeek(dow == SUNDAY ? 1 : dow.getValue() + 1); gcal.setMinimalDaysInFirstWeek(minimalDays); gcal.set(2011, Calendar.JANUARY, 1); LocalDate date = LocalDate.of(2011, 1, 1); for (int i = 1; i <= 365; i++) { assertEquals(rule.getValue(date).getValue(), gcal.get(Calendar.WEEK_OF_MONTH)); gcal.add(Calendar.DAY_OF_MONTH, 1); date = date.plusDays(1); } }
public void test_dayOfWeek_getValue_sun1() { // July 2011 starts on a Friday DateTimeRule rule = WeekRules.of(SUNDAY, 1).dayOfWeek(); for (int i = 1; i <= 31; i++) { int stdDOW = (i + 4 - 1) % 7 + 1; DayOfWeek stdObj = DayOfWeek.of(stdDOW); int relDOW = (i + 5 - 1) % 7 + 1; DateTimeField relField = rule.field(relDOW); assertEquals(rule.getValue(LocalDate.of(2011, 7, i)), relField); assertEquals(rule.getValue(stdObj), relField); // assertEquals(DayOfWeek.from(relField), stdObj); // TODO: engine change needed } // assertEquals(rule.field(-7), rule.derive(DAY_OF_WEEK.field(-8))); // 2prev Mon // // assertEquals(rule.field(-6), rule.derive(DAY_OF_WEEK.field(0))); // prev Sun // assertEquals(rule.field(-5), rule.derive(DAY_OF_WEEK.field(-6))); // prev Mon // assertEquals(rule.field(-4), rule.derive(DAY_OF_WEEK.field(-5))); // prev Tue // assertEquals(rule.field(-3), rule.derive(DAY_OF_WEEK.field(-4))); // prev Wed // assertEquals(rule.field(-2), rule.derive(DAY_OF_WEEK.field(-3))); // prev Thu // assertEquals(rule.field(-1), rule.derive(DAY_OF_WEEK.field(-2))); // prev Fri // assertEquals(rule.field(0), rule.derive(DAY_OF_WEEK.field(-1))); // prev Sat // TODO: these tests used to work (normalizer) // assertEquals(rule.field(1), rule.derive(DAY_OF_WEEK.field(7))); // Sun // assertEquals(rule.field(2), rule.derive(DAY_OF_WEEK.field(1))); // Mon // assertEquals(rule.field(3), rule.derive(DAY_OF_WEEK.field(2))); // Tue // assertEquals(rule.field(4), rule.derive(DAY_OF_WEEK.field(3))); // Wed // assertEquals(rule.field(5), rule.derive(DAY_OF_WEEK.field(4))); // Thu // assertEquals(rule.field(6), rule.derive(DAY_OF_WEEK.field(5))); // Fri // assertEquals(rule.field(7), rule.derive(DAY_OF_WEEK.field(6))); // Sat // assertEquals(null, rule.derive(DAY_OF_WEEK.field(0))); // assertEquals(null, rule.derive(DAY_OF_WEEK.field(8))); // assertEquals(rule.field(8), rule.derive(DAY_OF_WEEK.field(14))); // next Sun // assertEquals(rule.field(9), rule.derive(DAY_OF_WEEK.field(8))); // next Mon // assertEquals(rule.field(10), rule.derive(DAY_OF_WEEK.field(9))); // next Tue // assertEquals(rule.field(11), rule.derive(DAY_OF_WEEK.field(10))); // next Wed // assertEquals(rule.field(12), rule.derive(DAY_OF_WEEK.field(11))); // next Thu // assertEquals(rule.field(13), rule.derive(DAY_OF_WEEK.field(12))); // next Fri // assertEquals(rule.field(14), rule.derive(DAY_OF_WEEK.field(13))); // next Sat // // assertEquals(rule.field(15), rule.derive(DAY_OF_WEEK.field(21))); // 2next Sun }
// ----------------------------------------------------------------------- // Basics // ----------------------------------------------------------------------- public void test_basics() throws Exception { DateTimeRule rule = ISODateTimeRule.YEAR; assertEquals(rule.getType(), DateTimeField.class); assertEquals(rule.getName(), "Year"); assertEquals(rule.getValueRange(), DateTimeRuleRange.of(Year.MIN_YEAR, Year.MAX_YEAR)); assertEquals(rule.getPeriodUnit(), ISOPeriodUnit.YEARS); assertEquals(rule.getPeriodRange(), null); }
// ----------------------------------------------------------------------- // weekOfMonth() // ----------------------------------------------------------------------- public void test_weekOfMonth_sun1() { DateTimeRule rule = WeekRules.of(SUNDAY, 1).weekOfMonth(); assertEquals(rule.toString(), "WeekOfMonth-WeekRules[SUNDAY,1]"); assertEquals(rule.getBaseRule(), rule); assertEquals(rule.convertToPeriod(-1), -1); assertEquals(rule.convertToPeriod(0), 0); assertEquals(rule.convertToPeriod(1), 1); assertEquals(rule.convertToPeriod(2), 2); assertEquals(rule.convertToPeriod(5), 5); assertEquals(rule.convertToPeriod(6), 6); assertEquals(rule.convertFromPeriod(-1), -1); assertEquals(rule.convertFromPeriod(0), 0); assertEquals(rule.convertFromPeriod(1), 1); assertEquals(rule.convertFromPeriod(2), 2); assertEquals(rule.convertFromPeriod(5), 5); assertEquals(rule.convertFromPeriod(6), 6); }
// ----------------------------------------------------------------------- // dayOfWeek() // ----------------------------------------------------------------------- public void test_dayOfWeek_sun1() { DateTimeRule rule = WeekRules.of(SUNDAY, 1).dayOfWeek(); assertEquals(rule.toString(), "DayOfWeek-WeekRules[SUNDAY,1]"); assertEquals(rule.getBaseRule(), rule); assertEquals(rule.convertToPeriod(1), 0); // Sun assertEquals(rule.convertToPeriod(2), 1); // Mon assertEquals(rule.convertToPeriod(3), 2); // Tue assertEquals(rule.convertToPeriod(4), 3); // Wed assertEquals(rule.convertToPeriod(5), 4); // Thu assertEquals(rule.convertToPeriod(6), 5); // Fri assertEquals(rule.convertToPeriod(7), 6); // Sat assertEquals(rule.convertToPeriod(8), 7); assertEquals(rule.convertToPeriod(0), -1); assertEquals(rule.convertFromPeriod(0), 1); // Sun assertEquals(rule.convertFromPeriod(6), 7); // Sat assertEquals(rule.convertFromPeriod(-1), 0); assertEquals(rule.convertFromPeriod(7), 8); }