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) 2008-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 tck.java.time; 61c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 62c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoField.ERA; 63c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoField.MONTH_OF_YEAR; 64c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoField.PROLEPTIC_MONTH; 65c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoField.YEAR; 66c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoField.YEAR_OF_ERA; 67c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoUnit.CENTURIES; 68c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoUnit.DAYS; 69c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoUnit.DECADES; 70c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoUnit.HOURS; 71c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoUnit.MILLENNIA; 72c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoUnit.MONTHS; 73c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoUnit.YEARS; 74c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static org.testng.Assert.assertEquals; 75c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static org.testng.Assert.assertTrue; 76c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static org.testng.Assert.fail; 77c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 78c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.io.ByteArrayOutputStream; 79c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.io.DataOutputStream; 80c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.io.IOException; 81c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.Clock; 82c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.DateTimeException; 83c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.Duration; 84c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.Instant; 85c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.LocalDate; 86c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.LocalDateTime; 87c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.LocalTime; 88c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.Month; 89c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.Period; 90c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.Year; 91c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.YearMonth; 92c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.ZoneId; 93c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.ZoneOffset; 94c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.chrono.IsoChronology; 95c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.format.DateTimeFormatter; 96c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.format.DateTimeParseException; 97c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.ChronoField; 98c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.ChronoUnit; 99c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.JulianFields; 100c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.TemporalAccessor; 101c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.TemporalAmount; 102c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.TemporalField; 103c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.TemporalQueries; 104c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.TemporalQuery; 105c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.TemporalUnit; 106c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.UnsupportedTemporalTypeException; 107c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.util.ArrayList; 108c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.util.Arrays; 109c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.util.HashSet; 110c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.util.List; 111c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.util.Set; 112c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 113986666b60bfe25276fc3a8e5e4b6ce96d94b58b7Joachim Sauerimport org.testng.annotations.BeforeClass; 114c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport org.testng.annotations.DataProvider; 115c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport org.testng.annotations.Test; 116c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 117c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer/** 118c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * Test YearMonth. 119c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer */ 120c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer@Test 121c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerpublic class TCKYearMonth extends AbstractDateTimeTest { 122c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1236975f84c2ed72e1e26d20190b6f318718c849008Tobias Thierer // Android-changed: This was originally non-static and initialized in @BeforeMethod, 124986666b60bfe25276fc3a8e5e4b6ce96d94b58b7Joachim Sauer // but @BeforeMethod is run after @DataProvider methods are run, so it only worked by accident, 125986666b60bfe25276fc3a8e5e4b6ce96d94b58b7Joachim Sauer // since multiple test methods were run and the first one did not require this value. 126986666b60bfe25276fc3a8e5e4b6ce96d94b58b7Joachim Sauer private static YearMonth TEST_2008_06; 127c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 128986666b60bfe25276fc3a8e5e4b6ce96d94b58b7Joachim Sauer @BeforeClass 129986666b60bfe25276fc3a8e5e4b6ce96d94b58b7Joachim Sauer public static void setUp() { 130c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer TEST_2008_06 = YearMonth.of(2008, 6); 131c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 132c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 133c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 134c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Override 135c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer protected List<TemporalAccessor> samples() { 136c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer TemporalAccessor[] array = {TEST_2008_06, }; 137c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return Arrays.asList(array); 138c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 139c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 140c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Override 141c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer protected List<TemporalField> validFields() { 142c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer TemporalField[] array = { 143c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer MONTH_OF_YEAR, 144c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer PROLEPTIC_MONTH, 145c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YEAR_OF_ERA, 146c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YEAR, 147c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ERA, 148c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 149c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return Arrays.asList(array); 150c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 151c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 152c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Override 153c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer protected List<TemporalField> invalidFields() { 154c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer List<TemporalField> list = new ArrayList<>(Arrays.<TemporalField>asList(ChronoField.values())); 155c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer list.removeAll(validFields()); 156c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer list.add(JulianFields.JULIAN_DAY); 157c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer list.add(JulianFields.MODIFIED_JULIAN_DAY); 158c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer list.add(JulianFields.RATA_DIE); 159c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return list; 160c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 161c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 162c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 163c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer void check(YearMonth test, int y, int m) { 164c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.getYear(), y); 165c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.getMonth().getValue(), m); 166c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 167c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 168c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 169c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // now() 170c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 171c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 172c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void now() { 173c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth expected = YearMonth.now(Clock.systemDefaultZone()); 174c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.now(); 175c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (int i = 0; i < 100; i++) { 176c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (expected.equals(test)) { 177c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return; 178c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 179c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer expected = YearMonth.now(Clock.systemDefaultZone()); 180c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test = YearMonth.now(); 181c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 182c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test, expected); 183c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 184c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 185c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 186c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // now(ZoneId) 187c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 188c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 189c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void now_ZoneId_nullZoneId() { 190c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.now((ZoneId) null); 191c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 192c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 193c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 194c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void now_ZoneId() { 195c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ZoneId zone = ZoneId.of("UTC+01:02:03"); 196c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth expected = YearMonth.now(Clock.system(zone)); 197c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.now(zone); 198c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (int i = 0; i < 100; i++) { 199c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (expected.equals(test)) { 200c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return; 201c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 202c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer expected = YearMonth.now(Clock.system(zone)); 203c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test = YearMonth.now(zone); 204c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 205c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test, expected); 206c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 207c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 208c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 209c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // now(Clock) 210c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 211c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 212c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void now_Clock() { 213c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Instant instant = LocalDateTime.of(2010, 12, 31, 0, 0).toInstant(ZoneOffset.UTC); 214c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Clock clock = Clock.fixed(instant, ZoneOffset.UTC); 215c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.now(clock); 216c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.getYear(), 2010); 217c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.getMonth(), Month.DECEMBER); 218c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 219c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 220c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 221c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void now_Clock_nullClock() { 222c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.now((Clock) null); 223c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 224c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 225c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 226c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 227c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void factory_intsMonth() { 228c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, Month.FEBRUARY); 229c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer check(test, 2008, 2); 230c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 231c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 232c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 233c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_factory_intsMonth_yearTooLow() { 234c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(Year.MIN_VALUE - 1, Month.JANUARY); 235c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 236c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 237c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 238c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_factory_intsMonth_dayTooHigh() { 239c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(Year.MAX_VALUE + 1, Month.JANUARY); 240c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 241c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 242c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 243c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void factory_intsMonth_nullMonth() { 244c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(2008, null); 245c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 246c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 247c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 248c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 249c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void factory_ints() { 250c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 2); 251c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer check(test, 2008, 2); 252c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 253c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 254c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 255c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_factory_ints_yearTooLow() { 256c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(Year.MIN_VALUE - 1, 2); 257c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 258c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 259c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 260c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_factory_ints_dayTooHigh() { 261c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(Year.MAX_VALUE + 1, 2); 262c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 263c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 264c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 265c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_factory_ints_monthTooLow() { 266c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(2008, 0); 267c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 268c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 269c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 270c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_factory_ints_monthTooHigh() { 271c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(2008, 13); 272c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 273c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 274c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 275c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 276c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_from_TemporalAccessor() { 277c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(YearMonth.from(LocalDate.of(2007, 7, 15)), YearMonth.of(2007, 7)); 278c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 279c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 280c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 281c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_from_TemporalAccessor_invalid_noDerive() { 282c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.from(LocalTime.of(12, 30)); 283c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 284c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 285c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 286c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_from_TemporalAccessor_null() { 287c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.from((TemporalAccessor) null); 288c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 289c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 290c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 291c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // parse() 292c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 293c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="goodParseData") 294c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] provider_goodParseData() { 295c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 296c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"0000-01", YearMonth.of(0, 1)}, 297c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"0000-12", YearMonth.of(0, 12)}, 298c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"9999-12", YearMonth.of(9999, 12)}, 299c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"2000-01", YearMonth.of(2000, 1)}, 300c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"2000-02", YearMonth.of(2000, 2)}, 301c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"2000-03", YearMonth.of(2000, 3)}, 302c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"2000-04", YearMonth.of(2000, 4)}, 303c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"2000-05", YearMonth.of(2000, 5)}, 304c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"2000-06", YearMonth.of(2000, 6)}, 305c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"2000-07", YearMonth.of(2000, 7)}, 306c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"2000-08", YearMonth.of(2000, 8)}, 307c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"2000-09", YearMonth.of(2000, 9)}, 308c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"2000-10", YearMonth.of(2000, 10)}, 309c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"2000-11", YearMonth.of(2000, 11)}, 310c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"2000-12", YearMonth.of(2000, 12)}, 311c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 312c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"+12345678-03", YearMonth.of(12345678, 3)}, 313c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"+123456-03", YearMonth.of(123456, 3)}, 314c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"0000-03", YearMonth.of(0, 3)}, 315c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"-1234-03", YearMonth.of(-1234, 3)}, 316c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"-12345678-03", YearMonth.of(-12345678, 3)}, 317c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 318c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"+" + Year.MAX_VALUE + "-03", YearMonth.of(Year.MAX_VALUE, 3)}, 319c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {Year.MIN_VALUE + "-03", YearMonth.of(Year.MIN_VALUE, 3)}, 320c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 321c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 322c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 323c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="goodParseData") 324c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void factory_parse_success(String text, YearMonth expected) { 325c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth yearMonth = YearMonth.parse(text); 326c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(yearMonth, expected); 327c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 328c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 329c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 330c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="badParseData") 331c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] provider_badParseData() { 332c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 333c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"", 0}, 334c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"-00", 1}, 335c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"--01-0", 1}, 336c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"A01-3", 0}, 337c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"200-01", 0}, 338c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"2009/12", 4}, 339c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 340c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"-0000-10", 0}, 341c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"-12345678901-10", 11}, 342c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"+1-10", 1}, 343c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"+12-10", 1}, 344c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"+123-10", 1}, 345c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"+1234-10", 0}, 346c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"12345-10", 0}, 347c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {"+12345678901-10", 11}, 348c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 349c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 350c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 351c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="badParseData", expectedExceptions=DateTimeParseException.class) 352c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void factory_parse_fail(String text, int pos) { 353c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 354c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.parse(text); 355c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail(String.format("Parse should have failed for %s at position %d", text, pos)); 356c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (DateTimeParseException ex) { 357c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ex.getParsedString(), text); 358c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ex.getErrorIndex(), pos); 359c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer throw ex; 360c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 361c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 362c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 363c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 364c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeParseException.class) 365c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void factory_parse_illegalValue_Month() { 366c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.parse("2008-13"); 367c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 368c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 369c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 370c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void factory_parse_nullText() { 371c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.parse(null); 372c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 373c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 374c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 375c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // parse(DateTimeFormatter) 376c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 377c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 378c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void factory_parse_formatter() { 379c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer DateTimeFormatter f = DateTimeFormatter.ofPattern("y M"); 380c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.parse("2010 12", f); 381c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test, YearMonth.of(2010, 12)); 382c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 383c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 384c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 385c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void factory_parse_formatter_nullText() { 386c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer DateTimeFormatter f = DateTimeFormatter.ofPattern("y M"); 387c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.parse((String) null, f); 388c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 389c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 390c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 391c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void factory_parse_formatter_nullFormatter() { 392c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.parse("ANY", null); 393c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 394c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 395c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 396c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // isSupported(TemporalField) 397c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 398c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 399c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_isSupported_TemporalField() { 400c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported((TemporalField) null), false); 401c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.NANO_OF_SECOND), false); 402c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.NANO_OF_DAY), false); 403c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.MICRO_OF_SECOND), false); 404c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.MICRO_OF_DAY), false); 405c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.MILLI_OF_SECOND), false); 406c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.MILLI_OF_DAY), false); 407c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.SECOND_OF_MINUTE), false); 408c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.SECOND_OF_DAY), false); 409c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.MINUTE_OF_HOUR), false); 410c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.MINUTE_OF_DAY), false); 411c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.HOUR_OF_AMPM), false); 412c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.CLOCK_HOUR_OF_AMPM), false); 413c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.HOUR_OF_DAY), false); 414c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.CLOCK_HOUR_OF_DAY), false); 415c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.AMPM_OF_DAY), false); 416c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.DAY_OF_WEEK), false); 417c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH), false); 418c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), false); 419c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.DAY_OF_MONTH), false); 420c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.DAY_OF_YEAR), false); 421c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.EPOCH_DAY), false); 422c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.ALIGNED_WEEK_OF_MONTH), false); 423c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.ALIGNED_WEEK_OF_YEAR), false); 424c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.MONTH_OF_YEAR), true); 425c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.PROLEPTIC_MONTH), true); 426c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.YEAR), true); 427c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.YEAR_OF_ERA), true); 428c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.ERA), true); 429c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.INSTANT_SECONDS), false); 430c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoField.OFFSET_SECONDS), false); 431c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 432c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 433c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 434c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // isSupported(TemporalUnit) 435c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 436c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 437c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_isSupported_TemporalUnit() { 438c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported((TemporalUnit) null), false); 439c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.NANOS), false); 440c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.MICROS), false); 441c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.MILLIS), false); 442c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.SECONDS), false); 443c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.MINUTES), false); 444c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.HOURS), false); 445c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.HALF_DAYS), false); 446c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.DAYS), false); 447c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.WEEKS), false); 448c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.MONTHS), true); 449c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.YEARS), true); 450c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.DECADES), true); 451c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.CENTURIES), true); 452c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.MILLENNIA), true); 453c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.ERAS), true); 454c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.isSupported(ChronoUnit.FOREVER), false); 455c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 456c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 457c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 458c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // get(TemporalField) 459c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 460c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 461c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_get_TemporalField() { 462c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.get(YEAR), 2008); 463c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.get(MONTH_OF_YEAR), 6); 464c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.get(YEAR_OF_ERA), 2008); 465c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.get(ERA), 1); 466c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 467c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 468c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 469c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_getLong_TemporalField() { 470c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.getLong(YEAR), 2008); 471c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.getLong(MONTH_OF_YEAR), 6); 472c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.getLong(YEAR_OF_ERA), 2008); 473c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.getLong(ERA), 1); 474c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.getLong(PROLEPTIC_MONTH), 2008 * 12 + 6 - 1); 475c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 476c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 477c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 478c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // query(TemporalQuery) 479c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 480c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="query") 481c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_query() { 482c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 483c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {TEST_2008_06, TemporalQueries.chronology(), IsoChronology.INSTANCE}, 484c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {TEST_2008_06, TemporalQueries.zoneId(), null}, 485c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {TEST_2008_06, TemporalQueries.precision(), ChronoUnit.MONTHS}, 486c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {TEST_2008_06, TemporalQueries.zone(), null}, 487c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {TEST_2008_06, TemporalQueries.offset(), null}, 488c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {TEST_2008_06, TemporalQueries.localDate(), null}, 489c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {TEST_2008_06, TemporalQueries.localTime(), null}, 490c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 491c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 492c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 493c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="query") 494c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public <T> void test_query(TemporalAccessor temporal, TemporalQuery<T> query, T expected) { 495c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(temporal.query(query), expected); 496c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 497c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 498c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="query") 499c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public <T> void test_queryFrom(TemporalAccessor temporal, TemporalQuery<T> query, T expected) { 500c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(query.queryFrom(temporal), expected); 501c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 502c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 503c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 504c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_query_null() { 505c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer TEST_2008_06.query(null); 506c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 507c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 508c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 509c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // get*() 510c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 511c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="sampleDates") 512c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] provider_sampleDates() { 513c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 514c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {2008, 1}, 515c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {2008, 2}, 516c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {-1, 3}, 517c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {0, 12}, 518c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 519c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 520c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 521c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="sampleDates") 522c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_get(int y, int m) { 523c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth a = YearMonth.of(y, m); 524c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.getYear(), y); 525c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.getMonth(), Month.of(m)); 526c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.getMonthValue(), m); 527c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 528c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 529c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 530c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // with(Year) 531c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 532c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 533c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_with_Year() { 534c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 535c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.with(Year.of(2000)), YearMonth.of(2000, 6)); 536c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 537c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 538c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 539c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_with_Year_noChange_equal() { 540c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 541c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.with(Year.of(2008)), test); 542c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 543c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 544c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 545c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_with_Year_null() { 546c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 547c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.with((Year) null); 548c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 549c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 550c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 551c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // with(Month) 552c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 553c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 554c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_with_Month() { 555c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 556c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.with(Month.JANUARY), YearMonth.of(2008, 1)); 557c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 558c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 559c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 560c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_with_Month_noChange_equal() { 561c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 562c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.with(Month.JUNE), test); 563c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 564c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 565c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 566c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_with_Month_null() { 567c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 568c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.with((Month) null); 569c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 570c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 571c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 572c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // withYear() 573c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 574c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 575c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withYear() { 576c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 577c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.withYear(1999), YearMonth.of(1999, 6)); 578c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 579c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 580c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 581c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withYear_int_noChange_equal() { 582c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 583c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.withYear(2008), test); 584c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 585c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 586c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 587c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withYear_tooLow() { 588c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 589c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.withYear(Year.MIN_VALUE - 1); 590c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 591c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 592c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 593c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withYear_tooHigh() { 594c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 595c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.withYear(Year.MAX_VALUE + 1); 596c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 597c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 598c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 599c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // withMonth() 600c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 601c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 602c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withMonth() { 603c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 604c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.withMonth(1), YearMonth.of(2008, 1)); 605c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 606c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 607c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 608c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withMonth_int_noChange_equal() { 609c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 610c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.withMonth(6), test); 611c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 612c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 613c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 614c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withMonth_tooLow() { 615c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 616c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.withMonth(0); 617c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 618c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 619c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 620c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withMonth_tooHigh() { 621c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 622c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.withMonth(13); 623c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 624c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 625c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 626c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // plusYears() 627c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 628c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 629c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusYears_long() { 630c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 631c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.plusYears(1), YearMonth.of(2009, 6)); 632c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 633c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 634c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 635c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusYears_long_noChange_equal() { 636c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 637c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.plusYears(0), test); 638c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 639c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 640c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 641c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusYears_long_negative() { 642c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 643c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.plusYears(-1), YearMonth.of(2007, 6)); 644c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 645c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 646c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 647c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusYears_long_big() { 648c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(-40, 6); 649c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.plusYears(20L + Year.MAX_VALUE), YearMonth.of((int) (-40L + 20L + Year.MAX_VALUE), 6)); 650c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 651c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 652c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 653c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusYears_long_invalidTooLarge() { 654c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MAX_VALUE, 6); 655c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.plusYears(1); 656c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 657c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 658c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 659c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusYears_long_invalidTooLargeMaxAddMax() { 660c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MAX_VALUE, 12); 661c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.plusYears(Long.MAX_VALUE); 662c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 663c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 664c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 665c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusYears_long_invalidTooLargeMaxAddMin() { 666c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MAX_VALUE, 12); 667c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.plusYears(Long.MIN_VALUE); 668c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 669c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 670c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 671c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusYears_long_invalidTooSmall() { 672c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MIN_VALUE, 6); 673c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.plusYears(-1); 674c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 675c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 676c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 677c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // plusMonths() 678c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 679c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 680c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusMonths_long() { 681c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 682c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.plusMonths(1), YearMonth.of(2008, 7)); 683c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 684c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 685c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 686c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusMonths_long_noChange_equal() { 687c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 688c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.plusMonths(0), test); 689c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 690c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 691c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 692c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusMonths_long_overYears() { 693c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 694c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.plusMonths(7), YearMonth.of(2009, 1)); 695c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 696c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 697c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 698c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusMonths_long_negative() { 699c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 700c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.plusMonths(-1), YearMonth.of(2008, 5)); 701c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 702c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 703c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 704c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusMonths_long_negativeOverYear() { 705c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 706c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.plusMonths(-6), YearMonth.of(2007, 12)); 707c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 708c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 709c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 710c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusMonths_long_big() { 711c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(-40, 6); 712c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer long months = 20L + Integer.MAX_VALUE; 713c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.plusMonths(months), YearMonth.of((int) (-40L + months / 12), 6 + (int) (months % 12))); 714c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 715c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 716c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions={DateTimeException.class}) 717c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusMonths_long_invalidTooLarge() { 718c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MAX_VALUE, 12); 719c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.plusMonths(1); 720c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 721c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 722c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 723c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusMonths_long_invalidTooLargeMaxAddMax() { 724c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MAX_VALUE, 12); 725c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.plusMonths(Long.MAX_VALUE); 726c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 727c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 728c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 729c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusMonths_long_invalidTooLargeMaxAddMin() { 730c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MAX_VALUE, 12); 731c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.plusMonths(Long.MIN_VALUE); 732c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 733c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 734c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions={DateTimeException.class}) 735c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plusMonths_long_invalidTooSmall() { 736c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MIN_VALUE, 1); 737c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.plusMonths(-1); 738c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 739c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 740c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 741c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // plus(long, TemporalUnit) 742c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 743c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="plus_long_TemporalUnit") 744c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_plus_long_TemporalUnit() { 745c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 746c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 10), 1, ChronoUnit.YEARS, YearMonth.of(2, 10), null}, 747c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 10), -12, ChronoUnit.YEARS, YearMonth.of(-11, 10), null}, 748c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 10), 0, ChronoUnit.YEARS, YearMonth.of(1, 10), null}, 749c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(999999999, 12), 0, ChronoUnit.YEARS, YearMonth.of(999999999, 12), null}, 750c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-999999999, 1), 0, ChronoUnit.YEARS, YearMonth.of(-999999999, 1), null}, 751c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(0, 1), -999999999, ChronoUnit.YEARS, YearMonth.of(-999999999, 1), null}, 752c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(0, 12), 999999999, ChronoUnit.YEARS, YearMonth.of(999999999, 12), null}, 753c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 754c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 10), 1, ChronoUnit.MONTHS, YearMonth.of(1, 11), null}, 755c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 10), -12, ChronoUnit.MONTHS, YearMonth.of(0, 10), null}, 756c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 10), 0, ChronoUnit.MONTHS, YearMonth.of(1, 10), null}, 757c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(999999999, 12), 0, ChronoUnit.MONTHS, YearMonth.of(999999999, 12), null}, 758c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-999999999, 1), 0, ChronoUnit.MONTHS, YearMonth.of(-999999999, 1), null}, 759c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-999999999, 2), -1, ChronoUnit.MONTHS, YearMonth.of(-999999999, 1), null}, 760c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(999999999, 3), 9, ChronoUnit.MONTHS, YearMonth.of(999999999, 12), null}, 761c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 762c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-1, 10), 1, ChronoUnit.ERAS, YearMonth.of(2, 10), null}, 763c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(5, 10), 1, ChronoUnit.CENTURIES, YearMonth.of(105, 10), null}, 764c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(5, 10), 1, ChronoUnit.DECADES, YearMonth.of(15, 10), null}, 765c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 766c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(999999999, 12), 1, ChronoUnit.MONTHS, null, DateTimeException.class}, 767c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-999999999, 1), -1, ChronoUnit.MONTHS, null, DateTimeException.class}, 768c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 769c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), 0, ChronoUnit.DAYS, null, DateTimeException.class}, 770c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), 0, ChronoUnit.WEEKS, null, DateTimeException.class}, 771c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 772c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 773c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 774c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="plus_long_TemporalUnit") 775c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plus_long_TemporalUnit(YearMonth base, long amount, TemporalUnit unit, YearMonth expectedYearMonth, Class<?> expectedEx) { 776c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (expectedEx == null) { 777c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(base.plus(amount, unit), expectedYearMonth); 778c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 779c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 780c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth result = base.plus(amount, unit); 781c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail(); 782c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (Exception ex) { 783c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertTrue(expectedEx.isInstance(ex)); 784c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 785c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 786c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 787c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 788c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 789c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // plus(TemporalAmount) 790c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 791c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="plus_TemporalAmount") 792c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_plus_TemporalAmount() { 793c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 794c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofYears(1), YearMonth.of(2, 1), null}, 795c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofYears(-12), YearMonth.of(-11, 1), null}, 796c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofYears(0), YearMonth.of(1, 1), null}, 797c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(999999999, 12), Period.ofYears(0), YearMonth.of(999999999, 12), null}, 798c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-999999999, 1), Period.ofYears(0), YearMonth.of(-999999999, 1), null}, 799c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(0, 1), Period.ofYears(-999999999), YearMonth.of(-999999999, 1), null}, 800c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(0, 12), Period.ofYears(999999999), YearMonth.of(999999999, 12), null}, 801c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 802c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofMonths(1), YearMonth.of(1, 2), null}, 803c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofMonths(-12), YearMonth.of(0, 1), null}, 804c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofMonths(121), YearMonth.of(11, 2), null}, 805c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofMonths(0), YearMonth.of(1, 1), null}, 806c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(999999999, 12), Period.ofMonths(0), YearMonth.of(999999999, 12), null}, 807c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-999999999, 1), Period.ofMonths(0), YearMonth.of(-999999999, 1), null}, 808c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-999999999, 2), Period.ofMonths(-1), YearMonth.of(-999999999, 1), null}, 809c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(999999999, 11), Period.ofMonths(1), YearMonth.of(999999999, 12), null}, 810c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 811c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofYears(1).withMonths(2), YearMonth.of(2, 3), null}, 812c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofYears(-12).withMonths(-1), YearMonth.of(-12, 12), null}, 813c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 814c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofMonths(2).withYears(1), YearMonth.of(2, 3), null}, 815c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofMonths(-1).withYears(-12), YearMonth.of(-12, 12), null}, 816c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 817c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofDays(365), null, DateTimeException.class}, 818c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Duration.ofDays(365), null, DateTimeException.class}, 819c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Duration.ofHours(365*24), null, DateTimeException.class}, 820c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Duration.ofMinutes(365*24*60), null, DateTimeException.class}, 821c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Duration.ofSeconds(365*24*3600), null, DateTimeException.class}, 822c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Duration.ofNanos(365*24*3600*1000000000), null, DateTimeException.class}, 823c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 824c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 825c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 826c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="plus_TemporalAmount") 827c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_plus_TemporalAmount(YearMonth base, TemporalAmount temporalAmount, YearMonth expectedYearMonth, Class<?> expectedEx) { 828c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (expectedEx == null) { 829c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(base.plus(temporalAmount), expectedYearMonth); 830c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 831c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 832c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth result = base.plus(temporalAmount); 833c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail(); 834c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (Exception ex) { 835c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertTrue(expectedEx.isInstance(ex)); 836c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 837c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 838c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 839c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 840c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 841c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // minusYears() 842c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 843c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 844c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusYears_long() { 845c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 846c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.minusYears(1), YearMonth.of(2007, 6)); 847c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 848c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 849c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 850c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusYears_long_noChange_equal() { 851c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 852c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.minusYears(0), test); 853c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 854c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 855c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 856c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusYears_long_negative() { 857c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 858c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.minusYears(-1), YearMonth.of(2009, 6)); 859c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 860c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 861c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 862c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusYears_long_big() { 863c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(40, 6); 864c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.minusYears(20L + Year.MAX_VALUE), YearMonth.of((int) (40L - 20L - Year.MAX_VALUE), 6)); 865c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 866c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 867c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 868c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusYears_long_invalidTooLarge() { 869c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MAX_VALUE, 6); 870c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.minusYears(-1); 871c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 872c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 873c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 874c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusYears_long_invalidTooLargeMaxSubtractMax() { 875c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MIN_VALUE, 12); 876c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.minusYears(Long.MAX_VALUE); 877c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 878c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 879c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 880c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusYears_long_invalidTooLargeMaxSubtractMin() { 881c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MIN_VALUE, 12); 882c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.minusYears(Long.MIN_VALUE); 883c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 884c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 885c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 886c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusYears_long_invalidTooSmall() { 887c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MIN_VALUE, 6); 888c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.minusYears(1); 889c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 890c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 891c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 892c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // minusMonths() 893c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 894c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 895c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusMonths_long() { 896c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 897c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.minusMonths(1), YearMonth.of(2008, 5)); 898c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 899c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 900c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 901c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusMonths_long_noChange_equal() { 902c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 903c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.minusMonths(0), test); 904c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 905c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 906c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 907c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusMonths_long_overYears() { 908c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 909c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.minusMonths(6), YearMonth.of(2007, 12)); 910c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 911c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 912c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 913c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusMonths_long_negative() { 914c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 915c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.minusMonths(-1), YearMonth.of(2008, 7)); 916c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 917c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 918c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 919c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusMonths_long_negativeOverYear() { 920c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 921c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.minusMonths(-7), YearMonth.of(2009, 1)); 922c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 923c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 924c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 925c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusMonths_long_big() { 926c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(40, 6); 927c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer long months = 20L + Integer.MAX_VALUE; 928c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.minusMonths(months), YearMonth.of((int) (40L - months / 12), 6 - (int) (months % 12))); 929c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 930c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 931c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions={DateTimeException.class}) 932c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusMonths_long_invalidTooLarge() { 933c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MAX_VALUE, 12); 934c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.minusMonths(-1); 935c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 936c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 937c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 938c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusMonths_long_invalidTooLargeMaxSubtractMax() { 939c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MAX_VALUE, 12); 940c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.minusMonths(Long.MAX_VALUE); 941c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 942c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 943c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 944c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusMonths_long_invalidTooLargeMaxSubtractMin() { 945c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MAX_VALUE, 12); 946c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.minusMonths(Long.MIN_VALUE); 947c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 948c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 949c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions={DateTimeException.class}) 950c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minusMonths_long_invalidTooSmall() { 951c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(Year.MIN_VALUE, 1); 952c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.minusMonths(1); 953c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 954c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 955c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 956c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // minus(long, TemporalUnit) 957c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 958c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="minus_long_TemporalUnit") 959c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_minus_long_TemporalUnit() { 960c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 961c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 10), 1, ChronoUnit.YEARS, YearMonth.of(0, 10), null}, 962c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 10), 12, ChronoUnit.YEARS, YearMonth.of(-11, 10), null}, 963c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 10), 0, ChronoUnit.YEARS, YearMonth.of(1, 10), null}, 964c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(999999999, 12), 0, ChronoUnit.YEARS, YearMonth.of(999999999, 12), null}, 965c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-999999999, 1), 0, ChronoUnit.YEARS, YearMonth.of(-999999999, 1), null}, 966c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(0, 1), 999999999, ChronoUnit.YEARS, YearMonth.of(-999999999, 1), null}, 967c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(0, 12), -999999999, ChronoUnit.YEARS, YearMonth.of(999999999, 12), null}, 968c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 969c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 10), 1, ChronoUnit.MONTHS, YearMonth.of(1, 9), null}, 970c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 10), 12, ChronoUnit.MONTHS, YearMonth.of(0, 10), null}, 971c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 10), 0, ChronoUnit.MONTHS, YearMonth.of(1, 10), null}, 972c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(999999999, 12), 0, ChronoUnit.MONTHS, YearMonth.of(999999999, 12), null}, 973c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-999999999, 1), 0, ChronoUnit.MONTHS, YearMonth.of(-999999999, 1), null}, 974c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-999999999, 2), 1, ChronoUnit.MONTHS, YearMonth.of(-999999999, 1), null}, 975c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(999999999, 11), -1, ChronoUnit.MONTHS, YearMonth.of(999999999, 12), null}, 976c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 977c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 10), 1, ChronoUnit.ERAS, YearMonth.of(0, 10), null}, 978c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(5, 10), 1, ChronoUnit.CENTURIES, YearMonth.of(-95, 10), null}, 979c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(5, 10), 1, ChronoUnit.DECADES, YearMonth.of(-5, 10), null}, 980c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 981c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(999999999, 12), -1, ChronoUnit.MONTHS, null, DateTimeException.class}, 982c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-999999999, 1), 1, ChronoUnit.MONTHS, null, DateTimeException.class}, 983c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 984c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), 0, ChronoUnit.DAYS, null, DateTimeException.class}, 985c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), 0, ChronoUnit.WEEKS, null, DateTimeException.class}, 986c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 987c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 988c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 989c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="minus_long_TemporalUnit") 990c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minus_long_TemporalUnit(YearMonth base, long amount, TemporalUnit unit, YearMonth expectedYearMonth, Class<?> expectedEx) { 991c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (expectedEx == null) { 992c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(base.minus(amount, unit), expectedYearMonth); 993c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 994c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 995c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth result = base.minus(amount, unit); 996c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail(); 997c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (Exception ex) { 998c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertTrue(expectedEx.isInstance(ex)); 999c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1000c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1001c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1002c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1003c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1004c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // minus(TemporalAmount) 1005c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1006c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="minus_TemporalAmount") 1007c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_minus_TemporalAmount() { 1008c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 1009c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofYears(1), YearMonth.of(0, 1), null}, 1010c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofYears(-12), YearMonth.of(13, 1), null}, 1011c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofYears(0), YearMonth.of(1, 1), null}, 1012c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(999999999, 12), Period.ofYears(0), YearMonth.of(999999999, 12), null}, 1013c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-999999999, 1), Period.ofYears(0), YearMonth.of(-999999999, 1), null}, 1014c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(0, 1), Period.ofYears(999999999), YearMonth.of(-999999999, 1), null}, 1015c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(0, 12), Period.ofYears(-999999999), YearMonth.of(999999999, 12), null}, 1016c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1017c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofMonths(1), YearMonth.of(0, 12), null}, 1018c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofMonths(-12), YearMonth.of(2, 1), null}, 1019c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofMonths(121), YearMonth.of(-10, 12), null}, 1020c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofMonths(0), YearMonth.of(1, 1), null}, 1021c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(999999999, 12), Period.ofMonths(0), YearMonth.of(999999999, 12), null}, 1022c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-999999999, 1), Period.ofMonths(0), YearMonth.of(-999999999, 1), null}, 1023c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(-999999999, 2), Period.ofMonths(1), YearMonth.of(-999999999, 1), null}, 1024c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(999999999, 11), Period.ofMonths(-1), YearMonth.of(999999999, 12), null}, 1025c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1026c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofYears(1).withMonths(2), YearMonth.of(-1, 11), null}, 1027c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofYears(-12).withMonths(-1), YearMonth.of(13, 2), null}, 1028c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1029c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofMonths(2).withYears(1), YearMonth.of(-1, 11), null}, 1030c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofMonths(-1).withYears(-12), YearMonth.of(13, 2), null}, 1031c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1032c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Period.ofDays(365), null, DateTimeException.class}, 1033c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Duration.ofDays(365), null, DateTimeException.class}, 1034c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Duration.ofHours(365*24), null, DateTimeException.class}, 1035c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Duration.ofMinutes(365*24*60), null, DateTimeException.class}, 1036c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Duration.ofSeconds(365*24*3600), null, DateTimeException.class}, 1037c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(1, 1), Duration.ofNanos(365*24*3600*1000000000), null, DateTimeException.class}, 1038c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 1039c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1040c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1041c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="minus_TemporalAmount") 1042c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_minus_TemporalAmount(YearMonth base, TemporalAmount temporalAmount, YearMonth expectedYearMonth, Class<?> expectedEx) { 1043c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (expectedEx == null) { 1044c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(base.minus(temporalAmount), expectedYearMonth); 1045c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 1046c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 1047c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth result = base.minus(temporalAmount); 1048c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail(); 1049c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (Exception ex) { 1050c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertTrue(expectedEx.isInstance(ex)); 1051c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1052c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1053c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1054c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1055c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1056c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // adjustInto() 1057c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1058c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1059c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_adjustDate() { 1060c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 1061c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate date = LocalDate.of(2007, 1, 1); 1062c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.adjustInto(date), LocalDate.of(2008, 6, 1)); 1063c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1064c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1065c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1066c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_adjustDate_preserveDoM() { 1067c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2011, 3); 1068c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate date = LocalDate.of(2008, 2, 29); 1069c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.adjustInto(date), LocalDate.of(2011, 3, 29)); 1070c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1071c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1072c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1073c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_adjustDate_resolve() { 1074c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2007, 2); 1075c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate date = LocalDate.of(2008, 3, 31); 1076c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.adjustInto(date), LocalDate.of(2007, 2, 28)); 1077c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1078c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1079c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1080c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_adjustDate_equal() { 1081c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 6); 1082c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate date = LocalDate.of(2008, 6, 30); 1083c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.adjustInto(date), date); 1084c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1085c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1086c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 1087c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_adjustDate_null() { 1088c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer TEST_2008_06.adjustInto((LocalDate) null); 1089c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1090c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1091c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1092c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // isLeapYear() 1093c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1094c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1095c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_isLeapYear() { 1096c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(YearMonth.of(2007, 6).isLeapYear(), false); 1097c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(YearMonth.of(2008, 6).isLeapYear(), true); 1098c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1099c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1100c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1101c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // lengthOfMonth() 1102c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1103c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1104c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_lengthOfMonth_june() { 1105c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2007, 6); 1106c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.lengthOfMonth(), 30); 1107c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1108c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1109c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1110c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_lengthOfMonth_febNonLeap() { 1111c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2007, 2); 1112c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.lengthOfMonth(), 28); 1113c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1114c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1115c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1116c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_lengthOfMonth_febLeap() { 1117c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 2); 1118c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.lengthOfMonth(), 29); 1119c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1120c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1121c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1122c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // lengthOfYear() 1123c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1124c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1125c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_lengthOfYear() { 1126c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(YearMonth.of(2007, 6).lengthOfYear(), 365); 1127c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(YearMonth.of(2008, 6).lengthOfYear(), 366); 1128c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1129c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1130c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1131c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // isValidDay(int) 1132c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1133c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1134c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_isValidDay_int_june() { 1135c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2007, 6); 1136c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(1), true); 1137c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(30), true); 1138c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1139c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(-1), false); 1140c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(0), false); 1141c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(31), false); 1142c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(32), false); 1143c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1144c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1145c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1146c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_isValidDay_int_febNonLeap() { 1147c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2007, 2); 1148c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(1), true); 1149c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(28), true); 1150c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1151c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(-1), false); 1152c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(0), false); 1153c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(29), false); 1154c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(32), false); 1155c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1156c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1157c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1158c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_isValidDay_int_febLeap() { 1159c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(2008, 2); 1160c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(1), true); 1161c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(29), true); 1162c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1163c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(-1), false); 1164c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(0), false); 1165c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(30), false); 1166c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.isValidDay(32), false); 1167c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1168c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1169c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1170c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // until(Temporal, TemporalUnit) 1171c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1172c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="periodUntilUnit") 1173c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_periodUntilUnit() { 1174c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 1175c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(-1, 12), MONTHS, -2000 * 12 - 1}, 1176c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(0, 1), MONTHS, -2000 * 12}, 1177c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(0, 12), MONTHS, -1999 * 12 - 1}, 1178c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(1, 1), MONTHS, -1999 * 12}, 1179c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(1999, 12), MONTHS, -1}, 1180c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(2000, 1), MONTHS, 0}, 1181c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(2000, 2), MONTHS, 1}, 1182c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(2000, 3), MONTHS, 2}, 1183c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(2000, 12), MONTHS, 11}, 1184c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(2001, 1), MONTHS, 12}, 1185c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(2246, 5), MONTHS, 246 * 12 + 4}, 1186c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1187c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(-1, 12), YEARS, -2000}, 1188c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(0, 1), YEARS, -2000}, 1189c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(0, 12), YEARS, -1999}, 1190c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(1, 1), YEARS, -1999}, 1191c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(1998, 12), YEARS, -1}, 1192c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(1999, 1), YEARS, -1}, 1193c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(1999, 2), YEARS, 0}, 1194c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(1999, 12), YEARS, 0}, 1195c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(2000, 1), YEARS, 0}, 1196c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(2000, 2), YEARS, 0}, 1197c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(2000, 12), YEARS, 0}, 1198c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(2001, 1), YEARS, 1}, 1199c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 1), ym(2246, 5), YEARS, 246}, 1200c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1201c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(-1, 5), DECADES, -200}, 1202c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(0, 4), DECADES, -200}, 1203c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(0, 5), DECADES, -200}, 1204c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(0, 6), DECADES, -199}, 1205c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(1, 5), DECADES, -199}, 1206c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(1990, 4), DECADES, -1}, 1207c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(1990, 5), DECADES, -1}, 1208c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(1990, 6), DECADES, 0}, 1209c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2000, 4), DECADES, 0}, 1210c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2000, 5), DECADES, 0}, 1211c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2000, 6), DECADES, 0}, 1212c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2010, 4), DECADES, 0}, 1213c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2010, 5), DECADES, 1}, 1214c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2010, 6), DECADES, 1}, 1215c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1216c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(-1, 5), CENTURIES, -20}, 1217c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(0, 4), CENTURIES, -20}, 1218c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(0, 5), CENTURIES, -20}, 1219c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(0, 6), CENTURIES, -19}, 1220c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(1, 5), CENTURIES, -19}, 1221c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(1900, 4), CENTURIES, -1}, 1222c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(1900, 5), CENTURIES, -1}, 1223c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(1900, 6), CENTURIES, 0}, 1224c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2000, 4), CENTURIES, 0}, 1225c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2000, 5), CENTURIES, 0}, 1226c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2000, 6), CENTURIES, 0}, 1227c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2100, 4), CENTURIES, 0}, 1228c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2100, 5), CENTURIES, 1}, 1229c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2100, 6), CENTURIES, 1}, 1230c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1231c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(-1, 5), MILLENNIA, -2}, 1232c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(0, 4), MILLENNIA, -2}, 1233c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(0, 5), MILLENNIA, -2}, 1234c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(0, 6), MILLENNIA, -1}, 1235c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(1, 5), MILLENNIA, -1}, 1236c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(1000, 4), MILLENNIA, -1}, 1237c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(1000, 5), MILLENNIA, -1}, 1238c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(1000, 6), MILLENNIA, 0}, 1239c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2000, 4), MILLENNIA, 0}, 1240c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2000, 5), MILLENNIA, 0}, 1241c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(2000, 6), MILLENNIA, 0}, 1242c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(3000, 4), MILLENNIA, 0}, 1243c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(3000, 5), MILLENNIA, 1}, 1244c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ym(2000, 5), ym(3000, 5), MILLENNIA, 1}, 1245c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 1246c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1247c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1248c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="periodUntilUnit") 1249c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_until_TemporalUnit(YearMonth ym1, YearMonth ym2, TemporalUnit unit, long expected) { 1250c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer long amount = ym1.until(ym2, unit); 1251c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(amount, expected); 1252c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1253c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1254c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="periodUntilUnit") 1255c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_until_TemporalUnit_negated(YearMonth ym1, YearMonth ym2, TemporalUnit unit, long expected) { 1256c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer long amount = ym2.until(ym1, unit); 1257c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(amount, -expected); 1258c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1259c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1260c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="periodUntilUnit") 1261c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_until_TemporalUnit_between(YearMonth ym1, YearMonth ym2, TemporalUnit unit, long expected) { 1262c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer long amount = unit.between(ym1, ym2); 1263c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(amount, expected); 1264c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1265c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1266c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1267c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_until_convertedType() { 1268c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth start = YearMonth.of(2010, 6); 1269c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate end = start.plusMonths(2).atDay(12); 1270c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(start.until(end, MONTHS), 2); 1271c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1272c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1273c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 1274c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_until_invalidType() { 1275c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth start = YearMonth.of(2010, 6); 1276c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer start.until(LocalTime.of(11, 30), MONTHS); 1277c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1278c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1279c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions = UnsupportedTemporalTypeException.class) 1280c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_until_TemporalUnit_unsupportedUnit() { 1281c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer TEST_2008_06.until(TEST_2008_06, HOURS); 1282c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1283c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1284c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions = NullPointerException.class) 1285c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_until_TemporalUnit_nullEnd() { 1286c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer TEST_2008_06.until(null, DAYS); 1287c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1288c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1289c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions = NullPointerException.class) 1290c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_until_TemporalUnit_nullUnit() { 1291c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer TEST_2008_06.until(TEST_2008_06, null); 1292c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1293c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1294c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1295c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // format(DateTimeFormatter) 1296c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1297c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1298c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_format_formatter() { 1299c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer DateTimeFormatter f = DateTimeFormatter.ofPattern("y M"); 1300c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer String t = YearMonth.of(2010, 12).format(f); 1301c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(t, "2010 12"); 1302c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1303c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1304c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 1305c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_format_formatter_null() { 1306c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(2010, 12).format(null); 1307c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1308c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1309c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1310c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // atDay(int) 1311c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1312c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="atDay") 1313c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_atDay() { 1314c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 1315c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2008, 6), 8, LocalDate.of(2008, 6, 8)}, 1316c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1317c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2008, 1), 31, LocalDate.of(2008, 1, 31)}, 1318c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2008, 2), 29, LocalDate.of(2008, 2, 29)}, 1319c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2008, 3), 31, LocalDate.of(2008, 3, 31)}, 1320c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2008, 4), 30, LocalDate.of(2008, 4, 30)}, 1321c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1322c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2009, 1), 32, null}, 1323c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2009, 1), 0, null}, 1324c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2009, 2), 29, null}, 1325c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2009, 2), 30, null}, 1326c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2009, 2), 31, null}, 1327c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2009, 4), 31, null}, 1328c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 1329c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1330c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1331c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="atDay") 1332c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_atDay(YearMonth test, int day, LocalDate expected) { 1333c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (expected != null) { 1334c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.atDay(day), expected); 1335c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 1336c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 1337c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer test.atDay(day); 1338c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail(); 1339c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (DateTimeException ex) { 1340c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // expected 1341c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1342c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1343c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1344c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1345c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1346c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // atEndOfMonth() 1347c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1348c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="atEndOfMonth") 1349c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_atEndOfMonth() { 1350c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 1351c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2008, 1), LocalDate.of(2008, 1, 31)}, 1352c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2008, 2), LocalDate.of(2008, 2, 29)}, 1353c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2008, 3), LocalDate.of(2008, 3, 31)}, 1354c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2008, 4), LocalDate.of(2008, 4, 30)}, 1355c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2008, 5), LocalDate.of(2008, 5, 31)}, 1356c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2008, 6), LocalDate.of(2008, 6, 30)}, 1357c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2008, 12), LocalDate.of(2008, 12, 31)}, 1358c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1359c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2009, 1), LocalDate.of(2009, 1, 31)}, 1360c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2009, 2), LocalDate.of(2009, 2, 28)}, 1361c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2009, 3), LocalDate.of(2009, 3, 31)}, 1362c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2009, 4), LocalDate.of(2009, 4, 30)}, 1363c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2009, 5), LocalDate.of(2009, 5, 31)}, 1364c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2009, 6), LocalDate.of(2009, 6, 30)}, 1365c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YearMonth.of(2009, 12), LocalDate.of(2009, 12, 31)}, 1366c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 1367c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1368c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1369c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="atEndOfMonth") 1370c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_atEndOfMonth(YearMonth test, LocalDate expected) { 1371c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test.atEndOfMonth(), expected); 1372c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1373c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1374c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1375c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // compareTo() 1376c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1377c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1378c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_comparisons() { 1379c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer doTest_comparisons_YearMonth( 1380c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(-1, 1), 1381c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(0, 1), 1382c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(0, 12), 1383c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(1, 1), 1384c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(1, 2), 1385c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(1, 12), 1386c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(2008, 1), 1387c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(2008, 6), 1388c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth.of(2008, 12) 1389c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ); 1390c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1391c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1392c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer void doTest_comparisons_YearMonth(YearMonth... localDates) { 1393c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (int i = 0; i < localDates.length; i++) { 1394c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth a = localDates[i]; 1395c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (int j = 0; j < localDates.length; j++) { 1396c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth b = localDates[j]; 1397c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (i < j) { 1398c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertTrue(a.compareTo(b) < 0, a + " <=> " + b); 1399c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.isBefore(b), true, a + " <=> " + b); 1400c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.isAfter(b), false, a + " <=> " + b); 1401c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.equals(b), false, a + " <=> " + b); 1402c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else if (i > j) { 1403c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertTrue(a.compareTo(b) > 0, a + " <=> " + b); 1404c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.isBefore(b), false, a + " <=> " + b); 1405c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.isAfter(b), true, a + " <=> " + b); 1406c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.equals(b), false, a + " <=> " + b); 1407c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 1408c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.compareTo(b), 0, a + " <=> " + b); 1409c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.isBefore(b), false, a + " <=> " + b); 1410c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.isAfter(b), false, a + " <=> " + b); 1411c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.equals(b), true, a + " <=> " + b); 1412c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1413c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1414c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1415c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1416c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1417c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 1418c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_compareTo_ObjectNull() { 1419c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer TEST_2008_06.compareTo(null); 1420c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1421c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1422c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 1423c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_isBefore_ObjectNull() { 1424c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer TEST_2008_06.isBefore(null); 1425c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1426c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1427c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=NullPointerException.class) 1428c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_isAfter_ObjectNull() { 1429c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer TEST_2008_06.isAfter(null); 1430c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1431c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1432c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1433c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // equals() 1434c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1435c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1436c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_equals() { 1437c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth a = YearMonth.of(2008, 6); 1438c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth b = YearMonth.of(2008, 6); 1439c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth c = YearMonth.of(2007, 6); 1440c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth d = YearMonth.of(2008, 5); 1441c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1442c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.equals(a), true); 1443c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.equals(b), true); 1444c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.equals(c), false); 1445c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.equals(d), false); 1446c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1447c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(b.equals(a), true); 1448c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(b.equals(b), true); 1449c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(b.equals(c), false); 1450c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(b.equals(d), false); 1451c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1452c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(c.equals(a), false); 1453c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(c.equals(b), false); 1454c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(c.equals(c), true); 1455c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(c.equals(d), false); 1456c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1457c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(d.equals(a), false); 1458c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(d.equals(b), false); 1459c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(d.equals(c), false); 1460c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(d.equals(d), true); 1461c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1462c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1463c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1464c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_equals_itself_true() { 1465c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.equals(TEST_2008_06), true); 1466c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1467c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1468c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1469c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_equals_string_false() { 1470c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.equals("2007-07-15"), false); 1471c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1472c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1473c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1474c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_equals_null_false() { 1475c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(TEST_2008_06.equals(null), false); 1476c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1477c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1478c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1479c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // hashCode() 1480c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1481c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="sampleDates") 1482c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_hashCode(int y, int m) { 1483c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth a = YearMonth.of(y, m); 1484c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.hashCode(), a.hashCode()); 1485c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth b = YearMonth.of(y, m); 1486c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(a.hashCode(), b.hashCode()); 1487c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1488c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1489c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 1490c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_hashCode_unique() { 1491c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Set<Integer> uniques = new HashSet<Integer>(201 * 12); 1492c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (int i = 1900; i <= 2100; i++) { 1493c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (int j = 1; j <= 12; j++) { 1494c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertTrue(uniques.add(YearMonth.of(i, j).hashCode())); 1495c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1496c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1497c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1498c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1499c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1500c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // toString() 1501c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 1502c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="sampleToString") 1503c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] provider_sampleToString() { 1504c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 1505c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {2008, 1, "2008-01"}, 1506c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {2008, 12, "2008-12"}, 1507c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {7, 5, "0007-05"}, 1508c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {0, 5, "0000-05"}, 1509c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {-1, 1, "-0001-01"}, 1510c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 1511c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1512c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1513c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="sampleToString") 1514c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_toString(int y, int m, String expected) { 1515c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer YearMonth test = YearMonth.of(y, m); 1516c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer String str = test.toString(); 1517c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(str, expected); 1518c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1519c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1520c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer private YearMonth ym(int year, int month) { 1521c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return YearMonth.of(year, month); 1522c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 1523c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 1524c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer} 1525