/** * Obtains an instance backed by a period of days. * <p> * If the number of days is an exact multiple of 7 it will be converted to weeks. * * @param days the number of days * @return the periodic frequency * @throws IllegalArgumentException if days is negative or zero */ public static Frequency ofDays(int days) { if (days % 7 == 0) { return ofWeeks(days / 7); } return new Frequency(Period.ofDays(days)); }
@DataProvider(name = "parseGood") public static Object[][] data_parseGood() { return new Object[][] { {"1D", Frequency.ofDays(1)}, {"2D", Frequency.ofDays(2)}, {"91D", Frequency.ofDays(91)}, {"2W", Frequency.ofWeeks(2)}, {"6W", Frequency.ofWeeks(6)}, {"2M", Frequency.ofMonths(2)}, {"12M", Frequency.ofMonths(12)}, {"1Y", Frequency.ofYears(1)}, }; }
public void test_eventsPerYearEstimate_bad() { assertEquals(Frequency.ofDays(3).eventsPerYearEstimate(), 364d / 3, 1e-8); assertEquals(Frequency.ofWeeks(3).eventsPerYearEstimate(), 364d / 21, 1e-8); assertEquals(Frequency.ofWeeks(104).eventsPerYearEstimate(), 364d / 728, 1e-8); assertEquals(Frequency.ofMonths(5).eventsPerYearEstimate(), 12d / 5, 1e-8); assertEquals(Frequency.ofMonths(22).eventsPerYearEstimate(), 12d / 22, 1e-8); assertEquals(Frequency.ofMonths(24).eventsPerYearEstimate(), 12d / 24, 1e-8); assertEquals(Frequency.ofYears(2).eventsPerYearEstimate(), 0.5d, 1e-8); assertEquals(Frequency.of(Period.of(10, 0, 1)).eventsPerYearEstimate(), 0.1d, 1e-3); assertEquals(Frequency.of(Period.of(5, 0, 95)).eventsPerYearEstimate(), 0.19d, 1e-3); assertEquals(Frequency.of(Period.of(5, 0, 97)).eventsPerYearEstimate(), 0.19d, 1e-3); }
@DataProvider(name = "exactDivide") public static Object[][] data_exactDivide() { return new Object[][] { {Frequency.P1D, Frequency.P1D, 1}, {Frequency.P1W, Frequency.P1D, 7}, {Frequency.P2W, Frequency.P1D, 14}, {Frequency.P1W, Frequency.P1W, 1}, {Frequency.P2W, Frequency.P1W, 2}, {Frequency.ofWeeks(3), Frequency.P1W, 3}, {Frequency.P4W, Frequency.P1W, 4}, {Frequency.P13W, Frequency.P1W, 13}, {Frequency.P26W, Frequency.P1W, 26}, {Frequency.P26W, Frequency.P2W, 13}, {Frequency.P52W, Frequency.P1W, 52}, {Frequency.P52W, Frequency.P2W, 26}, {Frequency.P1M, Frequency.P1M, 1}, {Frequency.P2M, Frequency.P1M, 2}, {Frequency.P3M, Frequency.P1M, 3}, {Frequency.P4M, Frequency.P1M, 4}, {Frequency.P6M, Frequency.P1M, 6}, {Frequency.P6M, Frequency.P2M, 3}, {Frequency.P12M, Frequency.P1M, 12}, {Frequency.P12M, Frequency.P2M, 6}, {Frequency.ofYears(1), Frequency.P6M, 2}, {Frequency.ofYears(1), Frequency.P3M, 4}, {Frequency.ofYears(2), Frequency.P6M, 4}, }; }
@DataProvider(name = "based") public static Object[][] data_based() { return new Object[][] { {Frequency.ofDays(1), false, false, false}, {Frequency.ofDays(2), false, false, false}, {Frequency.ofDays(6), false, false, false}, {Frequency.ofDays(7), true, false, false}, {Frequency.ofWeeks(1), true, false, false}, {Frequency.ofWeeks(3), true, false, false}, {Frequency.ofMonths(1), false, true, false}, {Frequency.ofMonths(3), false, true, false}, {Frequency.ofMonths(12), false, true, true}, {Frequency.ofYears(1), false, true, true}, {Frequency.ofYears(3), false, true, false}, {Frequency.of(Period.of(1, 2, 3)), false, false, false}, {Frequency.TERM, false, false, false}, }; }
public void test_eventsPerYear_bad() { assertThrowsIllegalArg(() -> Frequency.ofDays(3).eventsPerYear()); assertThrowsIllegalArg(() -> Frequency.ofWeeks(3).eventsPerYear()); assertThrowsIllegalArg(() -> Frequency.ofWeeks(104).eventsPerYear()); assertThrowsIllegalArg(() -> Frequency.ofMonths(5).eventsPerYear()); assertThrowsIllegalArg(() -> Frequency.ofMonths(24).eventsPerYear()); assertThrowsIllegalArg(() -> Frequency.of(Period.of(2, 2, 2)).eventsPerYear()); }
public void test_of_notZero() { assertThrowsIllegalArg(() -> Frequency.of(Period.ofDays(0))); assertThrowsIllegalArg(() -> Frequency.ofDays(0)); assertThrowsIllegalArg(() -> Frequency.ofWeeks(0)); assertThrowsIllegalArg(() -> Frequency.ofMonths(0)); assertThrowsIllegalArg(() -> Frequency.ofYears(0)); }
public void test_of_notNegative() { assertThrowsIllegalArg(() -> Frequency.of(Period.ofDays(-1))); assertThrowsIllegalArg(() -> Frequency.of(Period.ofMonths(-1))); assertThrowsIllegalArg(() -> Frequency.of(Period.of(0, -1, -1))); assertThrowsIllegalArg(() -> Frequency.of(Period.of(0, -1, 1))); assertThrowsIllegalArg(() -> Frequency.of(Period.of(0, 1, -1))); assertThrowsIllegalArg(() -> Frequency.ofDays(-1)); assertThrowsIllegalArg(() -> Frequency.ofWeeks(-1)); assertThrowsIllegalArg(() -> Frequency.ofMonths(-1)); assertThrowsIllegalArg(() -> Frequency.ofYears(-1)); }
{Frequency.ofDays(7), Period.ofDays(7), "P1W"}, {Frequency.ofDays(91), Period.ofDays(91), "P13W"}, {Frequency.ofWeeks(1), Period.ofDays(7), "P1W"}, {Frequency.ofWeeks(3), Period.ofDays(21), "P3W"}, {Frequency.ofMonths(8), Period.ofMonths(8), "P8M"}, {Frequency.ofMonths(12), Period.ofMonths(12), "P12M"},