package net.time4j; import net.time4j.engine.EpochDays; import java.util.Arrays; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @RunWith(Parameterized.class) public class GregorianTransformationTest { @Parameters(name= "{index}: unix-days({0}-{1}-{2})={3}") public static Iterable<Object[]> data() { return Arrays.asList( new Object[][] { {1970, 1, 1, 0}, {1970, 1, 2, 1}, {1970, 1, 31, 30}, {1970, 2, 1, 31}, {1970, 2, 28, 58}, {1970, 3, 1, 59}, {1972, 2, 1, 31 + 2 * 365}, {1972, 2, 28, 58 + 2 * 365}, {1972, 2, 29, 59 + 2 * 365}, {1972, 3, 1, 60 + 2 * 365}, {1972, 4, 1, 91 + 2 * 365}, {1972, 5, 1, 121 + 2 * 365}, {1972, 6, 1, 152 + 2 * 365}, {1972, 7, 1, 182 + 2 * 365}, {1972, 8, 1, 213 + 2 * 365}, {1972, 9, 1, 244 + 2 * 365}, {1972, 10, 1, 274 + 2 * 365}, {1972, 11, 1, 305 + 2 * 365}, {1972, 12, 1, 335 + 2 * 365}, {1973, 1, 1, 3 * 365 + 1}, {-4713, 11, 24, -2440588}, {2000, 3, 1, 30 * 365 + 31 + 29 + 7}, {1899, 12, 31, -25568}, {1900, 1, 1, -25567}, {1900, 1, 2, -25566}, {1900, 1, 3, -25565}, {1900, 1, 4, -25564}, {1900, 1, 5, -25563}, {1900, 1, 6, -25562}, {1900, 1, 7, -25561}, {1900, 1, 8, -25560}, {1900, 1, 9, -25559}, {1900, 1, 10, -25558}, {1900, 1, 11, -25557}, {1900, 1, 12, -25556}, {1900, 1, 13, -25555}, {1900, 1, 14, -25554}, {1900, 1, 15, -25553}, {1900, 1, 16, -25552}, {1900, 1, 17, -25551}, {1900, 1, 18, -25550}, {1900, 1, 19, -25549}, {1900, 1, 20, -25548}, {1900, 1, 21, -25547}, {1900, 1, 22, -25546}, {1900, 1, 23, -25545}, {1900, 1, 24, -25544}, {1900, 1, 25, -25543}, {1900, 1, 26, -25542}, {1900, 1, 27, -25541}, {1900, 1, 28, -25540}, {1900, 1, 29, -25539}, {1900, 1, 30, -25538}, {1900, 1, 31, -25537}, {1900, 2, 1, -25536}, {1900, 2, 2, -25535}, {1900, 2, 3, -25534}, {1900, 2, 4, -25533}, {1900, 2, 5, -25532}, {1900, 2, 6, -25531}, {1900, 2, 7, -25530}, {1900, 2, 8, -25529}, {1900, 2, 9, -25528}, {1900, 2, 10, -25527}, {1900, 2, 11, -25526}, {1900, 2, 12, -25525}, {1900, 2, 13, -25524}, {1900, 2, 14, -25523}, {1900, 2, 15, -25522}, {1900, 2, 16, -25521}, {1900, 2, 17, -25520}, {1900, 2, 18, -25519}, {1900, 2, 19, -25518}, {1900, 2, 20, -25517}, {1900, 2, 21, -25516}, {1900, 2, 22, -25515}, {1900, 2, 23, -25514}, {1900, 2, 24, -25513}, {1900, 2, 25, -25512}, {1900, 2, 26, -25511}, {1900, 2, 27, -25510}, {1900, 2, 28, -25509}, {1900, 3, 1, -25508}, {1900, 3, 2, -25507}, {1900, 3, 3, -25506}, {1900, 3, 4, -25505}, {1900, 3, 5, -25504}, {1900, 3, 6, -25503}, {1900, 3, 7, -25502}, {1900, 3, 8, -25501}, {1900, 3, 9, -25500}, {1900, 3, 10, -25499}, {1900, 3, 11, -25498}, {1900, 3, 12, -25497}, {1900, 3, 13, -25496}, {1900, 3, 14, -25495}, {1900, 3, 15, -25494}, {1900, 3, 16, -25493}, {1900, 3, 17, -25492}, {1900, 3, 18, -25491}, {1900, 3, 19, -25490}, {1900, 3, 20, -25489}, {1900, 3, 21, -25488}, {1900, 3, 22, -25487}, {1900, 3, 23, -25486}, {1900, 3, 24, -25485}, {1900, 3, 25, -25484}, {1900, 3, 26, -25483}, {1900, 3, 27, -25482}, {1900, 3, 28, -25481}, {1900, 3, 29, -25480}, {1900, 3, 30, -25479}, {1900, 3, 31, -25478}, {1900, 4, 1, -25477}, {1900, 4, 2, -25476}, {1900, 4, 3, -25475}, {1900, 4, 4, -25474}, {1900, 4, 5, -25473}, {1900, 4, 6, -25472}, {1900, 4, 7, -25471}, {1900, 4, 8, -25470}, {1900, 4, 9, -25469}, {1900, 4, 10, -25468}, {1900, 4, 11, -25467}, {1900, 4, 12, -25466}, {1900, 4, 13, -25465}, {1900, 4, 14, -25464}, {1900, 4, 15, -25463}, {1900, 4, 16, -25462}, {1900, 4, 17, -25461}, {1900, 4, 18, -25460}, {1900, 4, 19, -25459}, {1900, 4, 20, -25458}, {1900, 4, 21, -25457}, {1900, 4, 22, -25456}, {1900, 4, 23, -25455}, {1900, 4, 24, -25454}, {1900, 4, 25, -25453}, {1900, 4, 26, -25452}, {1900, 4, 27, -25451}, {1900, 4, 28, -25450}, {1900, 4, 29, -25449}, {1900, 4, 30, -25448}, {1900, 5, 1, -25447}, {1900, 5, 2, -25446}, {1900, 5, 3, -25445}, {1900, 5, 4, -25444}, {1900, 5, 5, -25443}, {1900, 5, 6, -25442}, {1900, 5, 7, -25441}, {1900, 5, 8, -25440}, {1900, 5, 9, -25439}, {1900, 5, 10, -25438}, {1900, 5, 11, -25437}, {1900, 5, 12, -25436}, {1900, 5, 13, -25435}, {1900, 5, 14, -25434}, {1900, 5, 15, -25433}, {1900, 5, 16, -25432}, {1900, 5, 17, -25431}, {1900, 5, 18, -25430}, {1900, 5, 19, -25429}, {1900, 5, 20, -25428}, {1900, 5, 21, -25427}, {1900, 5, 22, -25426}, {1900, 5, 23, -25425}, {1900, 5, 24, -25424}, {1900, 5, 25, -25423}, {1900, 5, 26, -25422}, {1900, 5, 27, -25421}, {1900, 5, 28, -25420}, {1900, 5, 29, -25419}, {1900, 5, 30, -25418}, {1900, 5, 31, -25417}, {1900, 6, 1, -25416}, {1900, 6, 2, -25415}, {1900, 6, 3, -25414}, {1900, 6, 4, -25413}, {1900, 6, 5, -25412}, {1900, 6, 6, -25411}, {1900, 6, 7, -25410}, {1900, 6, 8, -25409}, {1900, 6, 9, -25408}, {1900, 6, 10, -25407}, {1900, 6, 11, -25406}, {1900, 6, 12, -25405}, {1900, 6, 13, -25404}, {1900, 6, 14, -25403}, {1900, 6, 15, -25402}, {1900, 6, 16, -25401}, {1900, 6, 17, -25400}, {1900, 6, 18, -25399}, {1900, 6, 19, -25398}, {1900, 6, 20, -25397}, {1900, 6, 21, -25396}, {1900, 6, 22, -25395}, {1900, 6, 23, -25394}, {1900, 6, 24, -25393}, {1900, 6, 25, -25392}, {1900, 6, 26, -25391}, {1900, 6, 27, -25390}, {1900, 6, 28, -25389}, {1900, 6, 29, -25388}, {1900, 6, 30, -25387}, {1900, 7, 1, -25386}, {1900, 7, 2, -25385}, {1900, 7, 3, -25384}, {1900, 7, 4, -25383}, {1900, 7, 5, -25382}, {1900, 7, 6, -25381}, {1900, 7, 7, -25380}, {1900, 7, 8, -25379}, {1900, 7, 9, -25378}, {1900, 7, 10, -25377}, {1900, 7, 11, -25376}, {1900, 7, 12, -25375}, {1900, 7, 13, -25374}, {1900, 7, 14, -25373}, {1900, 7, 15, -25372}, {1900, 7, 16, -25371}, {1900, 7, 17, -25370}, {1900, 7, 18, -25369}, {1900, 7, 19, -25368}, {1900, 7, 20, -25367}, {1900, 7, 21, -25366}, {1900, 7, 22, -25365}, {1900, 7, 23, -25364}, {1900, 7, 24, -25363}, {1900, 7, 25, -25362}, {1900, 7, 26, -25361}, {1900, 7, 27, -25360}, {1900, 7, 28, -25359}, {1900, 7, 29, -25358}, {1900, 7, 30, -25357}, {1900, 7, 31, -25356}, {1900, 8, 1, -25355}, {1900, 8, 2, -25354}, {1900, 8, 3, -25353}, {1900, 8, 4, -25352}, {1900, 8, 5, -25351}, {1900, 8, 6, -25350}, {1900, 8, 7, -25349}, {1900, 8, 8, -25348}, {1900, 8, 9, -25347}, {1900, 8, 10, -25346}, {1900, 8, 11, -25345}, {1900, 8, 12, -25344}, {1900, 8, 13, -25343}, {1900, 8, 14, -25342}, {1900, 8, 15, -25341}, {1900, 8, 16, -25340}, {1900, 8, 17, -25339}, {1900, 8, 18, -25338}, {1900, 8, 19, -25337}, {1900, 8, 20, -25336}, {1900, 8, 21, -25335}, {1900, 8, 22, -25334}, {1900, 8, 23, -25333}, {1900, 8, 24, -25332}, {1900, 8, 25, -25331}, {1900, 8, 26, -25330}, {1900, 8, 27, -25329}, {1900, 8, 28, -25328}, {1900, 8, 29, -25327}, {1900, 8, 30, -25326}, {1900, 8, 31, -25325}, {1900, 9, 1, -25324}, {1900, 9, 2, -25323}, {1900, 9, 3, -25322}, {1900, 9, 4, -25321}, {1900, 9, 5, -25320}, {1900, 9, 6, -25319}, {1900, 9, 7, -25318}, {1900, 9, 8, -25317}, {1900, 9, 9, -25316}, {1900, 9, 10, -25315}, {1900, 9, 11, -25314}, {1900, 9, 12, -25313}, {1900, 9, 13, -25312}, {1900, 9, 14, -25311}, {1900, 9, 15, -25310}, {1900, 9, 16, -25309}, {1900, 9, 17, -25308}, {1900, 9, 18, -25307}, {1900, 9, 19, -25306}, {1900, 9, 20, -25305}, {1900, 9, 21, -25304}, {1900, 9, 22, -25303}, {1900, 9, 23, -25302}, {1900, 9, 24, -25301}, {1900, 9, 25, -25300}, {1900, 9, 26, -25299}, {1900, 9, 27, -25298}, {1900, 9, 28, -25297}, {1900, 9, 29, -25296}, {1900, 9, 30, -25295}, {1900, 10, 1, -25294}, {1900, 10, 2, -25293}, {1900, 10, 3, -25292}, {1900, 10, 4, -25291}, {1900, 10, 5, -25290}, {1900, 10, 6, -25289}, {1900, 10, 7, -25288}, {1900, 10, 8, -25287}, {1900, 10, 9, -25286}, {1900, 10, 10, -25285}, {1900, 10, 11, -25284}, {1900, 10, 12, -25283}, {1900, 10, 13, -25282}, {1900, 10, 14, -25281}, {1900, 10, 15, -25280}, {1900, 10, 16, -25279}, {1900, 10, 17, -25278}, {1900, 10, 18, -25277}, {1900, 10, 19, -25276}, {1900, 10, 20, -25275}, {1900, 10, 21, -25274}, {1900, 10, 22, -25273}, {1900, 10, 23, -25272}, {1900, 10, 24, -25271}, {1900, 10, 25, -25270}, {1900, 10, 26, -25269}, {1900, 10, 27, -25268}, {1900, 10, 28, -25267}, {1900, 10, 29, -25266}, {1900, 10, 30, -25265}, {1900, 10, 31, -25264}, {1900, 11, 1, -25263}, {1900, 11, 2, -25262}, {1900, 11, 3, -25261}, {1900, 11, 4, -25260}, {1900, 11, 5, -25259}, {1900, 11, 6, -25258}, {1900, 11, 7, -25257}, {1900, 11, 8, -25256}, {1900, 11, 9, -25255}, {1900, 11, 10, -25254}, {1900, 11, 11, -25253}, {1900, 11, 12, -25252}, {1900, 11, 13, -25251}, {1900, 11, 14, -25250}, {1900, 11, 15, -25249}, {1900, 11, 16, -25248}, {1900, 11, 17, -25247}, {1900, 11, 18, -25246}, {1900, 11, 19, -25245}, {1900, 11, 20, -25244}, {1900, 11, 21, -25243}, {1900, 11, 22, -25242}, {1900, 11, 23, -25241}, {1900, 11, 24, -25240}, {1900, 11, 25, -25239}, {1900, 11, 26, -25238}, {1900, 11, 27, -25237}, {1900, 11, 28, -25236}, {1900, 11, 29, -25235}, {1900, 11, 30, -25234}, {1900, 12, 1, -25233}, {1900, 12, 2, -25232}, {1900, 12, 3, -25231}, {1900, 12, 4, -25230}, {1900, 12, 5, -25229}, {1900, 12, 6, -25228}, {1900, 12, 7, -25227}, {1900, 12, 8, -25226}, {1900, 12, 9, -25225}, {1900, 12, 10, -25224}, {1900, 12, 11, -25223}, {1900, 12, 12, -25222}, {1900, 12, 13, -25221}, {1900, 12, 14, -25220}, {1900, 12, 15, -25219}, {1900, 12, 16, -25218}, {1900, 12, 17, -25217}, {1900, 12, 18, -25216}, {1900, 12, 19, -25215}, {1900, 12, 20, -25214}, {1900, 12, 21, -25213}, {1900, 12, 22, -25212}, {1900, 12, 23, -25211}, {1900, 12, 24, -25210}, {1900, 12, 25, -25209}, {1900, 12, 26, -25208}, {1900, 12, 27, -25207}, {1900, 12, 28, -25206}, {1900, 12, 29, -25205}, {1900, 12, 30, -25204}, {1900, 12, 31, -25203}, {1901, 1, 1, -25202} } ); } private static final PlainDate ANY_DATE = PlainDate.of(0, EpochDays.UTC); private int year; private int month; private int dom; private long epoch; public GregorianTransformationTest( int year, int month, int dom, long epoch ) { super(); this.year = year; this.month = month; this.dom = dom; this.epoch = epoch; } @Test public void getEpochDays() { assertThat( PlainDate.of(this.year, this.month, this.dom).get(EpochDays.UNIX), is(this.epoch)); } @Test public void withEpochDays() { assertThat( ANY_DATE.with(EpochDays.UNIX, this.epoch).get(EpochDays.UNIX), is(this.epoch)); } }