1c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer/* 2c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. 3c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 5c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * This code is free software; you can redistribute it and/or modify it 6c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * under the terms of the GNU General Public License version 2 only, as 7c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * published by the Free Software Foundation. 8c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 9c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * This code is distributed in the hope that it will be useful, but WITHOUT 10c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * version 2 for more details (a copy is included in the LICENSE file that 13c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * accompanied this code). 14c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 15c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * You should have received a copy of the GNU General Public License version 16c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 2 along with this work; if not, write to the Free Software Foundation, 17c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 19c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * or visit www.oracle.com if you need additional information or have any 21c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * questions. 22c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer */ 23c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 24c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer/* 25c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * This file is available under and governed by the GNU General Public 26c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * License version 2 only, as published by the Free Software Foundation. 27c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * However, the following notice accompanied the original version of this 28c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * file: 29c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 30c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * Copyright (c) 2007-2012, Stephen Colebourne & Michael Nascimento Santos 31c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 32c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * All rights reserved. 33c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 34c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * Redistribution and use in source and binary forms, with or without 35c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * modification, are permitted provided that the following conditions are met: 36c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 37c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * * Redistributions of source code must retain the above copyright notice, 38c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * this list of conditions and the following disclaimer. 39c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 40c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * * Redistributions in binary form must reproduce the above copyright notice, 41c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * this list of conditions and the following disclaimer in the documentation 42c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * and/or other materials provided with the distribution. 43c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 44c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * * Neither the name of JSR-310 nor the names of its contributors 45c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * may be used to endorse or promote products derived from this software 46c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * without specific prior written permission. 47c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 48c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 49c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 50c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 51c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 52c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 53c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 54c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 55c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 56c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 57c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 58c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 59c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer */ 60c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerpackage test.java.time; 61c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 62c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoField.YEAR; 63c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static org.testng.Assert.assertEquals; 64c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static org.testng.Assert.assertSame; 65c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static org.testng.Assert.assertTrue; 66c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 67c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.LocalDate; 68c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.Month; 69c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.ChronoUnit; 70c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 71c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport org.testng.annotations.BeforeMethod; 72c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport org.testng.annotations.DataProvider; 73c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport org.testng.annotations.Test; 74c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 75c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer/** 76c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * Test LocalDate. 77c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer */ 78c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer@Test 79c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerpublic class TestLocalDate extends AbstractTest { 80c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 81c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer private LocalDate TEST_2007_07_15; 82c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 83c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @BeforeMethod 84c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void setUp() { 85c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer TEST_2007_07_15 = LocalDate.of(2007, 7, 15); 86c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 87c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 88c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 89c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 90c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_immutable() { 91c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertImmutable(LocalDate.class); 92c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 93c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 94c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 95c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // Since plusDays/minusDays actually depends on MJDays, it cannot be used for testing 96c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer private LocalDate next(LocalDate date) { 97c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer int newDayOfMonth = date.getDayOfMonth() + 1; 98c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (newDayOfMonth <= date.getMonth().length(isIsoLeap(date.getYear()))) { 99c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return date.withDayOfMonth(newDayOfMonth); 100c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 101c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer date = date.withDayOfMonth(1); 102c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (date.getMonth() == Month.DECEMBER) { 103c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer date = date.withYear(date.getYear() + 1); 104c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 105c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return date.with(date.getMonth().plus(1)); 106c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 107c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 108c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer private LocalDate previous(LocalDate date) { 109c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer int newDayOfMonth = date.getDayOfMonth() - 1; 110c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (newDayOfMonth > 0) { 111c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return date.withDayOfMonth(newDayOfMonth); 112c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 113c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer date = date.with(date.getMonth().minus(1)); 114c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (date.getMonth() == Month.DECEMBER) { 115c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer date = date.withYear(date.getYear() - 1); 116c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 117c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return date.withDayOfMonth(date.getMonth().length(isIsoLeap(date.getYear()))); 118c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 119c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 120c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 121c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_with_DateTimeField_long_noChange_same() { 122c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.with(YEAR, 2007); 123c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 124c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 125c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 126c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 127c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withYear_int_noChange_same() { 128c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.withYear(2007); 129c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 130c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 131c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 132c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 133c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withMonth_int_noChange_same() { 134c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.withMonth(7); 135c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 136c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 137c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 138c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 139c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withDayOfMonth_noChange_same() { 140c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.withDayOfMonth(15); 141c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 142c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 143c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 144c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 145c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withDayOfYear_noChange_same() { 146c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.withDayOfYear(31 + 28 + 31 + 30 + 31 + 30 + 15); 147c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 148c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 149c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 150c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 151c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plus_Period_zero() { 152c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.plus(MockSimplePeriod.ZERO_DAYS); 153c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 154c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 155c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 156c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 157c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plus_longPeriodUnit_zero() { 158c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.plus(0, ChronoUnit.DAYS); 159c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 160c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 161c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 162c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 163c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusYears_long_noChange_same() { 164c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.plusYears(0); 165c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 166c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 167c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 168c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 169c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusMonths_long_noChange_same() { 170c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.plusMonths(0); 171c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 172c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 173c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 174c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 175c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // plusWeeks() 176c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 177c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="samplePlusWeeksSymmetry") 178c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] provider_samplePlusWeeksSymmetry() { 179c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 180c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 1, 1)}, 181c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 2, 28)}, 182c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 3, 1)}, 183c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 12, 31)}, 184c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 1, 1)}, 185c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 2, 28)}, 186c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 2, 29)}, 187c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 3, 1)}, 188c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 12, 31)}, 189c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 1, 1)}, 190c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 2, 28)}, 191c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 3, 1)}, 192c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 12, 31)}, 193c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 1, 1)}, 194c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 2, 28)}, 195c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 2, 29)}, 196c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 3, 1)}, 197c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 12, 31)}, 198c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 1, 1)}, 199c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 2, 28)}, 200c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 3, 1)}, 201c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 12, 31)}, 202c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 1, 1)}, 203c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 2, 28)}, 204c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 3, 1)}, 205c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 12, 31)}, 206c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 207c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 208c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 209c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="samplePlusWeeksSymmetry") 210c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusWeeks_symmetry(LocalDate reference) { 211c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (int weeks = 0; weeks < 365 * 8; weeks++) { 212c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = reference.plusWeeks(weeks).plusWeeks(-weeks); 213c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(t, reference); 214c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 215c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer t = reference.plusWeeks(-weeks).plusWeeks(weeks); 216c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(t, reference); 217c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 218c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 219c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 220c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 221c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusWeeks_noChange_same() { 222c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.plusWeeks(0); 223c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 224c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 225c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 226c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 227c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // plusDays() 228c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 229c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="samplePlusDaysSymmetry") 230c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] provider_samplePlusDaysSymmetry() { 231c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 232c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 1, 1)}, 233c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 2, 28)}, 234c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 3, 1)}, 235c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 12, 31)}, 236c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 1, 1)}, 237c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 2, 28)}, 238c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 2, 29)}, 239c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 3, 1)}, 240c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 12, 31)}, 241c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 1, 1)}, 242c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 2, 28)}, 243c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 3, 1)}, 244c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 12, 31)}, 245c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 1, 1)}, 246c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 2, 28)}, 247c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 2, 29)}, 248c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 3, 1)}, 249c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 12, 31)}, 250c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 1, 1)}, 251c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 2, 28)}, 252c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 3, 1)}, 253c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 12, 31)}, 254c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 1, 1)}, 255c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 2, 28)}, 256c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 3, 1)}, 257c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 12, 31)}, 258c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 259c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 260c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 261c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="samplePlusDaysSymmetry") 262c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusDays_symmetry(LocalDate reference) { 263c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (int days = 0; days < 365 * 8; days++) { 264c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = reference.plusDays(days).plusDays(-days); 265c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(t, reference); 266c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 267c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer t = reference.plusDays(-days).plusDays(days); 268c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(t, reference); 269c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 270c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 271c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 272c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 273c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusDays_noChange_same() { 274c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.plusDays(0); 275c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 276c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 277c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 278c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 279c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minus_Period_zero() { 280c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.minus(MockSimplePeriod.ZERO_DAYS); 281c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 282c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 283c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 284c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 285c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minus_longPeriodUnit_zero() { 286c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.minus(0, ChronoUnit.DAYS); 287c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 288c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 289c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 290c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 291c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusYears_long_noChange_same() { 292c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.minusYears(0); 293c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 294c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 295c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 296c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 297c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusMonths_long_noChange_same() { 298c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.minusMonths(0); 299c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 300c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 301c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 302c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 303c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // minusWeeks() 304c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 305c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="sampleMinusWeeksSymmetry") 306c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] provider_sampleMinusWeeksSymmetry() { 307c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 308c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 1, 1)}, 309c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 2, 28)}, 310c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 3, 1)}, 311c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 12, 31)}, 312c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 1, 1)}, 313c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 2, 28)}, 314c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 2, 29)}, 315c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 3, 1)}, 316c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 12, 31)}, 317c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 1, 1)}, 318c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 2, 28)}, 319c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 3, 1)}, 320c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 12, 31)}, 321c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 1, 1)}, 322c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 2, 28)}, 323c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 2, 29)}, 324c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 3, 1)}, 325c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 12, 31)}, 326c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 1, 1)}, 327c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 2, 28)}, 328c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 3, 1)}, 329c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 12, 31)}, 330c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 1, 1)}, 331c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 2, 28)}, 332c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 3, 1)}, 333c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 12, 31)}, 334c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 335c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 336c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 337c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="sampleMinusWeeksSymmetry") 338c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusWeeks_symmetry(LocalDate reference) { 339c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (int weeks = 0; weeks < 365 * 8; weeks++) { 340c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = reference.minusWeeks(weeks).minusWeeks(-weeks); 341c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(t, reference); 342c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 343c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer t = reference.minusWeeks(-weeks).minusWeeks(weeks); 344c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(t, reference); 345c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 346c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 347c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 348c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 349c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusWeeks_noChange_same() { 350c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.minusWeeks(0); 351c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 352c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 353c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 354c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 355c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // minusDays() 356c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 357c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="sampleMinusDaysSymmetry") 358c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] provider_sampleMinusDaysSymmetry() { 359c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 360c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 1, 1)}, 361c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 2, 28)}, 362c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 3, 1)}, 363c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(-1, 12, 31)}, 364c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 1, 1)}, 365c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 2, 28)}, 366c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 2, 29)}, 367c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 3, 1)}, 368c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(0, 12, 31)}, 369c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 1, 1)}, 370c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 2, 28)}, 371c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 3, 1)}, 372c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2007, 12, 31)}, 373c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 1, 1)}, 374c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 2, 28)}, 375c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 2, 29)}, 376c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 3, 1)}, 377c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2008, 12, 31)}, 378c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 1, 1)}, 379c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 2, 28)}, 380c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 3, 1)}, 381c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2099, 12, 31)}, 382c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 1, 1)}, 383c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 2, 28)}, 384c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 3, 1)}, 385c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {LocalDate.of(2100, 12, 31)}, 386c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 387c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 388c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 389c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="sampleMinusDaysSymmetry") 390c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusDays_symmetry(LocalDate reference) { 391c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (int days = 0; days < 365 * 8; days++) { 392c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = reference.minusDays(days).minusDays(-days); 393c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(t, reference); 394c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 395c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer t = reference.minusDays(-days).minusDays(days); 396c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(t, reference); 397c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 398c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 399c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 400c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 401c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusDays_noChange_same() { 402c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate t = TEST_2007_07_15.minusDays(0); 403c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertSame(t, TEST_2007_07_15); 404c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 405c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 406c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 407c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_toEpochDay_fromMJDays_symmetry() { 408c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer long date_0000_01_01 = -678941 - 40587; 409c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 410c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate test = LocalDate.of(0, 1, 1); 411c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (long i = date_0000_01_01; i < 700000; i++) { 412c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(LocalDate.ofEpochDay(test.toEpochDay()), test); 413c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test = next(test); 414c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 415c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test = LocalDate.of(0, 1, 1); 416c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (long i = date_0000_01_01; i > -2000000; i--) { 417c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(LocalDate.ofEpochDay(test.toEpochDay()), test); 418c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test = previous(test); 419c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 420c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 421c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 422c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer void doTest_comparisons_LocalDate(LocalDate... localDates) { 423c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (int i = 0; i < localDates.length; i++) { 424c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate a = localDates[i]; 425c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (int j = 0; j < localDates.length; j++) { 426c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate b = localDates[j]; 427c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (i < j) { 428c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertTrue(a.compareTo(b) < 0, a + " <=> " + b); 429c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.isBefore(b), true, a + " <=> " + b); 430c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.isAfter(b), false, a + " <=> " + b); 431c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.equals(b), false, a + " <=> " + b); 432c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else if (i > j) { 433c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertTrue(a.compareTo(b) > 0, a + " <=> " + b); 434c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.isBefore(b), false, a + " <=> " + b); 435c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.isAfter(b), true, a + " <=> " + b); 436c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.equals(b), false, a + " <=> " + b); 437c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 438c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.compareTo(b), 0, a + " <=> " + b); 439c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.isBefore(b), false, a + " <=> " + b); 440c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.isAfter(b), false, a + " <=> " + b); 441c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.equals(b), true, a + " <=> " + b); 442c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 443c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 444c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 445c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 446c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 447c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer} 448