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. Oracle designates this 8c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * particular file as subject to the "Classpath" exception as provided 9c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * by Oracle in the LICENSE file that accompanied this code. 10c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 11c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * This code is distributed in the hope that it will be useful, but WITHOUT 12c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * version 2 for more details (a copy is included in the LICENSE file that 15c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * accompanied this code). 16c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 17c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * You should have received a copy of the GNU General Public License version 18c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 2 along with this work; if not, write to the Free Software Foundation, 19c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 21c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * or visit www.oracle.com if you need additional information or have any 23c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * questions. 24c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer */ 25c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 26c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer/* 27c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * Copyright (c) 2008-2012, Stephen Colebourne & Michael Nascimento Santos 28c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 29c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * All rights reserved. 30c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 31c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * Redistribution and use in source and binary forms, with or without 32c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * modification, are permitted provided that the following conditions are met: 33c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 34c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * * Redistributions of source code must retain the above copyright notice, 35c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * this list of conditions and the following disclaimer. 36c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 37c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * * Redistributions in binary form must reproduce the above copyright notice, 38c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * this list of conditions and the following disclaimer in the documentation 39c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * and/or other materials provided with the distribution. 40c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 41c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * * Neither the name of JSR-310 nor the names of its contributors 42c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * may be used to endorse or promote products derived from this software 43c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * without specific prior written permission. 44c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * 45c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 46c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 47c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 48c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 49c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 50c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 51c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 52c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 53c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 54c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 55c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 56c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer */ 57c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerpackage tck.java.time.chrono; 58c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 59c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoField.DAY_OF_MONTH; 60c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoField.DAY_OF_YEAR; 61c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoField.MONTH_OF_YEAR; 62c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoField.YEAR; 63c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static java.time.temporal.ChronoField.YEAR_OF_ERA; 64c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static org.testng.Assert.assertEquals; 65c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static org.testng.Assert.assertFalse; 66c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static org.testng.Assert.assertNotEquals; 67c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static org.testng.Assert.assertTrue; 68c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport static org.testng.Assert.fail; 69c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 70c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.Clock; 71c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.DateTimeException; 72c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.LocalDate; 73c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.LocalDateTime; 74c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.Month; 75c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.Year; 76c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.ZoneId; 77c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.ZoneOffset; 78c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.chrono.ChronoLocalDate; 79c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.chrono.ChronoPeriod; 80c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.chrono.Chronology; 81c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.chrono.Era; 82c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.chrono.IsoChronology; 83c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.chrono.MinguoChronology; 84c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.chrono.MinguoDate; 85c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.chrono.ThaiBuddhistChronology; 86c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.chrono.ThaiBuddhistDate; 87c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.chrono.ThaiBuddhistEra; 88c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.format.ResolverStyle; 89c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.ChronoField; 90c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.ChronoUnit; 91c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.TemporalAdjusters; 92c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.TemporalField; 93c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.time.temporal.ValueRange; 94c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.util.HashMap; 95c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.util.List; 96c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.util.Locale; 97c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport java.util.Map; 98c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 99c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport org.testng.Assert; 100c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport org.testng.annotations.DataProvider; 101c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerimport org.testng.annotations.Test; 102c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 103c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer/** 104c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer * Test. 105c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer */ 106c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer@Test 107c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauerpublic class TCKThaiBuddhistChronology { 108c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 109c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer private static final int YDIFF = 543; 110c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 111c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 112c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // Chronology.of(String) 113c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 114c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 115c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_chrono_byName() { 116c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Chronology c = ThaiBuddhistChronology.INSTANCE; 117c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Chronology test = Chronology.of("ThaiBuddhist"); 118c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertNotNull(test, "The ThaiBuddhist calendar could not be found byName"); 119c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertEquals(test.getId(), "ThaiBuddhist", "ID mismatch"); 120c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertEquals(test.getCalendarType(), "buddhist", "Type mismatch"); 121c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertEquals(test, c); 122c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 123c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 124c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 125c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // Chronology.ofLocale(Locale) 126c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 127c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 128c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_chrono_byLocale_fullTag_thaiCalendarFromThai() { 129c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Chronology test = Chronology.ofLocale(Locale.forLanguageTag("th-TH-u-ca-buddhist")); 130c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertEquals(test.getId(), "ThaiBuddhist"); 131c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertEquals(test, ThaiBuddhistChronology.INSTANCE); 132c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 133c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 134c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 135c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_chrono_byLocale_fullTag_thaiCalendarFromElsewhere() { 136c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Chronology test = Chronology.ofLocale(Locale.forLanguageTag("en-US-u-ca-buddhist")); 137c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertEquals(test.getId(), "ThaiBuddhist"); 138c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertEquals(test, ThaiBuddhistChronology.INSTANCE); 139c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 140c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 141c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 142c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_chrono_byLocale_oldTH_noVariant() { // deliberately different to Calendar 143c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Chronology test = Chronology.ofLocale(new Locale("th", "TH")); 144c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertEquals(test.getId(), "ISO"); 145c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertEquals(test, IsoChronology.INSTANCE); 146c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 147c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 148c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 149c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_chrono_byLocale_oldTH_variant() { 150c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Chronology test = Chronology.ofLocale(new Locale("th", "TH", "TH")); 151c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertEquals(test.getId(), "ISO"); 152c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertEquals(test, IsoChronology.INSTANCE); 153c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 154c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 155c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 156c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_chrono_byLocale_iso() { 157c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertEquals(Chronology.ofLocale(new Locale("th", "TH")).getId(), "ISO"); 158c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertEquals(Chronology.ofLocale(Locale.forLanguageTag("th-TH")).getId(), "ISO"); 159c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Assert.assertEquals(Chronology.ofLocale(Locale.forLanguageTag("th-TH-TH")).getId(), "ISO"); 160c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 161c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 162c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 163c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // creation, toLocalDate() 164c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 165c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="samples") 166c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_samples() { 167c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 168c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(1 + YDIFF, 1, 1), LocalDate.of(1, 1, 1)}, 169c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(1 + YDIFF, 1, 2), LocalDate.of(1, 1, 2)}, 170c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(1 + YDIFF, 1, 3), LocalDate.of(1, 1, 3)}, 171c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 172c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(2 + YDIFF, 1, 1), LocalDate.of(2, 1, 1)}, 173c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(3 + YDIFF, 1, 1), LocalDate.of(3, 1, 1)}, 174c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(3 + YDIFF, 12, 6), LocalDate.of(3, 12, 6)}, 175c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(4 + YDIFF, 1, 1), LocalDate.of(4, 1, 1)}, 176c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(4 + YDIFF, 7, 3), LocalDate.of(4, 7, 3)}, 177c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(4 + YDIFF, 7, 4), LocalDate.of(4, 7, 4)}, 178c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(5 + YDIFF, 1, 1), LocalDate.of(5, 1, 1)}, 179c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(1662 + YDIFF, 3, 3), LocalDate.of(1662, 3, 3)}, 180c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(1728 + YDIFF, 10, 28), LocalDate.of(1728, 10, 28)}, 181c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(1728 + YDIFF, 10, 29), LocalDate.of(1728, 10, 29)}, 182c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(2555, 8, 29), LocalDate.of(2012, 8, 29)}, 183c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 184c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.dateYearDay(4 + YDIFF, 60), LocalDate.of(4, 2, 29)}, 185c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.dateYearDay(400 + YDIFF, 60), LocalDate.of(400, 2, 29)}, 186c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.dateYearDay(2000 + YDIFF, 60), LocalDate.of(2000, 2, 29)}, 187c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 188c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.dateYearDay(ThaiBuddhistEra.BE, 1916 + YDIFF, 60), LocalDate.of(1916, 2, 29)}, 189c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.dateYearDay(ThaiBuddhistEra.BEFORE_BE, -1907 - YDIFF, 60), LocalDate.of(1908, 2, 29)}, 190c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.dateYearDay(ThaiBuddhistEra.BE, 2000 + YDIFF, 60), LocalDate.of(2000, 2, 29)}, 191c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.dateYearDay(ThaiBuddhistEra.BE, 2400 + YDIFF, 60), LocalDate.of(2400, 2, 29)}, 192c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 193c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(ThaiBuddhistEra.BE, 1916 + YDIFF, 2, 29 ), LocalDate.of(1916, 2, 29)}, 194c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(ThaiBuddhistEra.BEFORE_BE, -1907 - YDIFF, 2, 29), LocalDate.of(1908, 2, 29)}, 195c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(ThaiBuddhistEra.BE, 2000 + YDIFF, 2, 29), LocalDate.of(2000, 2, 29)}, 196c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(ThaiBuddhistEra.BE, 2400 + YDIFF, 2, 29), LocalDate.of(2400, 2, 29)}, 197c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 198c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 199c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 200c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="samples") 201c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_toLocalDate(ThaiBuddhistDate jdate, LocalDate iso) { 202c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(LocalDate.from(jdate), iso); 203c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 204c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 205c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="samples") 206c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_fromCalendrical(ThaiBuddhistDate jdate, LocalDate iso) { 207c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.date(iso), jdate); 208c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistDate.from(iso), jdate); 209c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 210c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 211c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="samples") 212c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_isEqual(ThaiBuddhistDate jdate, LocalDate iso) { 213c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertTrue(jdate.isEqual(iso)); 214c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 215c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 216c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="samples") 217c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_date_equals(ThaiBuddhistDate jdate, LocalDate iso) { 218c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertFalse(jdate.equals(iso)); 219c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertNotEquals(jdate.hashCode(), iso.hashCode()); 220c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 221c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 222c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 223c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_dateNow(){ 224c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.dateNow(), ThaiBuddhistDate.now()) ; 225c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.dateNow(), ThaiBuddhistDate.now(ZoneId.systemDefault())) ; 226c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.dateNow(), ThaiBuddhistDate.now(Clock.systemDefaultZone())) ; 227c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.dateNow(), ThaiBuddhistDate.now(Clock.systemDefaultZone().getZone())) ; 228c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 229c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.dateNow(), ThaiBuddhistChronology.INSTANCE.dateNow(ZoneId.systemDefault())) ; 230c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.dateNow(), ThaiBuddhistChronology.INSTANCE.dateNow(Clock.systemDefaultZone())) ; 231c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.dateNow(), ThaiBuddhistChronology.INSTANCE.dateNow(Clock.systemDefaultZone().getZone())) ; 232c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 233c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ZoneId zoneId = ZoneId.of("Europe/Paris"); 234c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.dateNow(zoneId), ThaiBuddhistChronology.INSTANCE.dateNow(Clock.system(zoneId))) ; 235c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.dateNow(zoneId), ThaiBuddhistChronology.INSTANCE.dateNow(Clock.system(zoneId).getZone())) ; 236c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.dateNow(zoneId), ThaiBuddhistDate.now(Clock.system(zoneId))) ; 237c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.dateNow(zoneId), ThaiBuddhistDate.now(Clock.system(zoneId).getZone())) ; 238c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 239c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.dateNow(ZoneId.of(ZoneOffset.UTC.getId())), ThaiBuddhistChronology.INSTANCE.dateNow(Clock.systemUTC())) ; 240c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 241c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 242c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="badDates") 243c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_badDates() { 244c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 245c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1728, 0, 0}, 246c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 247c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1728, -1, 1}, 248c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1728, 0, 1}, 249c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1728, 14, 1}, 250c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1728, 15, 1}, 251c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 252c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1728, 1, -1}, 253c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1728, 1, 0}, 254c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1728, 1, 32}, 255c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 256c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1728, 12, -1}, 257c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1728, 12, 0}, 258c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1728, 12, 32}, 259c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 260c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {3 + YDIFF, 2, 29}, 261c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {600 + YDIFF, 2, 29}, 262c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1501 + YDIFF, 2, 29}, 263c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 264c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 265c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 266c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="badDates", expectedExceptions=DateTimeException.class) 267c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_badDates(int year, int month, int dom) { 268c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistChronology.INSTANCE.date(year, month, dom); 269c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 270c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 271c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 272c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // prolepticYear() and is LeapYear() 273c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 274c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="prolepticYear") 275c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_prolepticYear() { 276c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 277c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1, ThaiBuddhistEra.BE, 4 + YDIFF, 4 + YDIFF, true}, 278c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1, ThaiBuddhistEra.BE, 7 + YDIFF, 7 + YDIFF, false}, 279c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1, ThaiBuddhistEra.BE, 8 + YDIFF, 8 + YDIFF, true}, 280c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1, ThaiBuddhistEra.BE, 1000 + YDIFF, 1000 + YDIFF, false}, 281c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1, ThaiBuddhistEra.BE, 2000 + YDIFF, 2000 + YDIFF, true}, 282c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1, ThaiBuddhistEra.BE, 0, 0, false}, 283c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1, ThaiBuddhistEra.BE, -4 + YDIFF, -4 + YDIFF, true}, 284c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1, ThaiBuddhistEra.BE, -7 + YDIFF, -7 + YDIFF, false}, 285c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1, ThaiBuddhistEra.BE, -100 + YDIFF, -100 + YDIFF, false}, 286c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {1, ThaiBuddhistEra.BE, -800 + YDIFF, -800 + YDIFF, true}, 287c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 288c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {0, ThaiBuddhistEra.BEFORE_BE, -3 - YDIFF, 4 + YDIFF, true}, 289c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {0, ThaiBuddhistEra.BEFORE_BE, -6 - YDIFF, 7 + YDIFF, false}, 290c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {0, ThaiBuddhistEra.BEFORE_BE, -7 - YDIFF, 8 + YDIFF, true}, 291c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {0, ThaiBuddhistEra.BEFORE_BE, -999 - YDIFF, 1000 + YDIFF, false}, 292c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {0, ThaiBuddhistEra.BEFORE_BE, -1999 - YDIFF, 2000 + YDIFF, true}, 293c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {0, ThaiBuddhistEra.BEFORE_BE, 1, 0, false}, 294c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {0, ThaiBuddhistEra.BEFORE_BE, 5 - YDIFF, -4 + YDIFF, true}, 295c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {0, ThaiBuddhistEra.BEFORE_BE, 8 - YDIFF, -7 + YDIFF, false}, 296c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {0, ThaiBuddhistEra.BEFORE_BE, 101 - YDIFF, -100 + YDIFF, false}, 297c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {0, ThaiBuddhistEra.BEFORE_BE, 801 - YDIFF, -800 + YDIFF, true}, 298c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 299c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 300c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 301c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 302c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="prolepticYear") 303c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_prolepticYear(int eraValue, Era era, int yearOfEra, int expectedProlepticYear, boolean isLeapYear) { 304c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Era eraObj = ThaiBuddhistChronology.INSTANCE.eraOf(eraValue); 305c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertTrue(ThaiBuddhistChronology.INSTANCE.eras().contains(eraObj)); 306c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(eraObj, era); 307c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.prolepticYear(era, yearOfEra), expectedProlepticYear); 308c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 309c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 310c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="prolepticYear") 311c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_isLeapYear(int eraValue, Era era, int yearOfEra, int expectedProlepticYear, boolean isLeapYear) { 312c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.isLeapYear(expectedProlepticYear), isLeapYear) ; 313c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.isLeapYear(expectedProlepticYear), Year.of(expectedProlepticYear - YDIFF).isLeap()); 314c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 315c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate jdate = ThaiBuddhistDate.now(); 316c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer jdate = jdate.with(ChronoField.YEAR, expectedProlepticYear).with(ChronoField.MONTH_OF_YEAR, 2); 317c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (isLeapYear) { 318c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(jdate.lengthOfMonth(), 29); 319c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 320c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(jdate.lengthOfMonth(), 28); 321c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 322c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 323c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 324c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 325c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // Bad Era for Chronology.date(era,...) and Chronology.prolepticYear(Era,...) 326c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 327c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 328c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_InvalidEras() { 329c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // Verify that the eras from every other Chronology are invalid 330c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (Chronology chrono : Chronology.getAvailableChronologies()) { 331c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (chrono instanceof ThaiBuddhistChronology) { 332c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer continue; 333c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 334c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer List<Era> eras = chrono.eras(); 335c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer for (Era era : eras) { 336c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 337c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ChronoLocalDate date = ThaiBuddhistChronology.INSTANCE.date(era, 1, 1, 1); 338c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail("ThaiBuddhistChronology.date did not throw ClassCastException for Era: " + era); 339c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (ClassCastException cex) { 340c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ; // ignore expected exception 341c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 342c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 343c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer /* TODO: Test for missing ThaiBuddhistDate.of(Era, y, m, d) method. 344c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 345c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @SuppressWarnings("unused") 346c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate jdate = ThaiBuddhistDate.of(era, 1, 1, 1); 347c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail("ThaiBuddhistDate.of did not throw ClassCastException for Era: " + era); 348c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (ClassCastException cex) { 349c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ; // ignore expected exception 350c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 351c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer */ 352c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 353c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 354c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @SuppressWarnings("unused") 355c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer int year = ThaiBuddhistChronology.INSTANCE.prolepticYear(era, 1); 356c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail("ThaiBuddhistChronology.prolepticYear did not throw ClassCastException for Era: " + era); 357c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (ClassCastException cex) { 358c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ; // ignore expected exception 359c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } } 360c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 361c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 362c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 363c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 364c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // with(WithAdjuster) 365c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 366c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 367c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_adjust1() { 368c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate base = ThaiBuddhistChronology.INSTANCE.date(1728, 10, 29); 369c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate test = base.with(TemporalAdjusters.lastDayOfMonth()); 370c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test, ThaiBuddhistChronology.INSTANCE.date(1728, 10, 31)); 371c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 372c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 373c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 374c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_adjust2() { 375c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate base = ThaiBuddhistChronology.INSTANCE.date(1728, 12, 2); 376c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate test = base.with(TemporalAdjusters.lastDayOfMonth()); 377c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test, ThaiBuddhistChronology.INSTANCE.date(1728, 12, 31)); 378c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 379c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 380c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 381c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // withYear() 382c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 383c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 384c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withYear_BE() { 385c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate base = ThaiBuddhistChronology.INSTANCE.date(2555, 8, 29); 386c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate test = base.with(YEAR, 2554); 387c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test, ThaiBuddhistChronology.INSTANCE.date(2554, 8, 29)); 388c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 389c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 390c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 391c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withYear_BBE() { 392c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate base = ThaiBuddhistChronology.INSTANCE.date(-2554, 8, 29); 393c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate test = base.with(YEAR_OF_ERA, 2554); 394c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test, ThaiBuddhistChronology.INSTANCE.date(-2553, 8, 29)); 395c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 396c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 397c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 398c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // withEra() 399c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 400c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 401c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withEra_BE() { 402c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate base = ThaiBuddhistChronology.INSTANCE.date(2555, 8, 29); 403c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate test = base.with(ChronoField.ERA, ThaiBuddhistEra.BE.getValue()); 404c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test, ThaiBuddhistChronology.INSTANCE.date(2555, 8, 29)); 405c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 406c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 407c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 408c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withEra_BBE() { 409c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate base = ThaiBuddhistChronology.INSTANCE.date(-2554, 8, 29); 410c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate test = base.with(ChronoField.ERA, ThaiBuddhistEra.BEFORE_BE.getValue()); 411c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test, ThaiBuddhistChronology.INSTANCE.date(-2554, 8, 29)); 412c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 413c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 414c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 415c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_withEra_swap() { 416c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate base = ThaiBuddhistChronology.INSTANCE.date(-2554, 8, 29); 417c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate test = base.with(ChronoField.ERA, ThaiBuddhistEra.BE.getValue()); 418c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test, ThaiBuddhistChronology.INSTANCE.date(2555, 8, 29)); 419c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 420c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 421c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 422c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // BuddhistDate.with(Local*) 423c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 424c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 425c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_adjust_toLocalDate() { 426c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate jdate = ThaiBuddhistChronology.INSTANCE.date(1726, 1, 4); 427c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate test = jdate.with(LocalDate.of(2012, 7, 6)); 428c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test, ThaiBuddhistChronology.INSTANCE.date(2555, 7, 6)); 429c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 430c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 431c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(expectedExceptions=DateTimeException.class) 432c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_adjust_toMonth() { 433c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate jdate = ThaiBuddhistChronology.INSTANCE.date(1726, 1, 4); 434c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer jdate.with(Month.APRIL); 435c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 436c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 437c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 438c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // LocalDate.with(BuddhistDate) 439c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 440c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 441c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_LocalDate_adjustToBuddhistDate() { 442c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate jdate = ThaiBuddhistChronology.INSTANCE.date(2555, 10, 29); 443c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDate test = LocalDate.MIN.with(jdate); 444c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test, LocalDate.of(2012, 10, 29)); 445c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 446c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 447c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 448c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_LocalDateTime_adjustToBuddhistDate() { 449c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate jdate = ThaiBuddhistChronology.INSTANCE.date(2555, 10, 29); 450c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer LocalDateTime test = LocalDateTime.MIN.with(jdate); 451c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(test, LocalDateTime.of(2012, 10, 29, 0, 0)); 452c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 453c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 454c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 455c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // PeriodUntil() 456c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 457c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 458c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_periodUntilDate() { 459c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate mdate1 = ThaiBuddhistDate.of(1, 1, 1); 460c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate mdate2 = ThaiBuddhistDate.of(2, 2, 2); 461c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ChronoPeriod period = mdate1.until(mdate2); 462c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(period, ThaiBuddhistChronology.INSTANCE.period(1, 1, 1)); 463c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 464c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 465c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 466c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_periodUntilUnit() { 467c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate mdate1 = ThaiBuddhistDate.of(1, 1, 1); 468c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate mdate2 = ThaiBuddhistDate.of(2, 2, 2); 469c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer long months = mdate1.until(mdate2, ChronoUnit.MONTHS); 470c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(months, 13); 471c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 472c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 473c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 474c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_periodUntilDiffChrono() { 475c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate mdate1 = ThaiBuddhistDate.of(1, 1, 1); 476c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate mdate2 = ThaiBuddhistDate.of(2, 2, 2); 477c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer MinguoDate ldate2 = MinguoChronology.INSTANCE.date(mdate2); 478c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ChronoPeriod period = mdate1.until(ldate2); 479c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(period, ThaiBuddhistChronology.INSTANCE.period(1, 1, 1)); 480c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 481c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 482c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 483c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // toString() 484c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 485c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name="toString") 486c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_toString() { 487c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 488c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(544, 1, 1), "ThaiBuddhist BE 544-01-01"}, 489c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(2271, 10, 28), "ThaiBuddhist BE 2271-10-28"}, 490c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(2271, 10, 29), "ThaiBuddhist BE 2271-10-29"}, 491c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(2270, 12, 5), "ThaiBuddhist BE 2270-12-05"}, 492c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ThaiBuddhistChronology.INSTANCE.date(2270, 12, 6), "ThaiBuddhist BE 2270-12-06"}, 493c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 494c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 495c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 496c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider="toString") 497c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_toString(ThaiBuddhistDate jdate, String expected) { 498c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(jdate.toString(), expected); 499c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 500c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 501c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 502c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // chronology range(ChronoField) 503c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 504c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 505c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_Chrono_range() { 506c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer long minYear = LocalDate.MIN.getYear() + YDIFF; 507c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer long maxYear = LocalDate.MAX.getYear() + YDIFF; 508c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.range(YEAR), ValueRange.of(minYear, maxYear)); 509c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.range(YEAR_OF_ERA), ValueRange.of(1, -minYear + 1, maxYear)); 510c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 511c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.range(DAY_OF_MONTH), DAY_OF_MONTH.range()); 512c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.range(DAY_OF_YEAR), DAY_OF_YEAR.range()); 513c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(ThaiBuddhistChronology.INSTANCE.range(MONTH_OF_YEAR), MONTH_OF_YEAR.range()); 514c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 515c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 516c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 517c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // equals() 518c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 519c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 520c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_equals_true() { 521c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertTrue(ThaiBuddhistChronology.INSTANCE.equals(ThaiBuddhistChronology.INSTANCE)); 522c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 523c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 524c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test 525c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_equals_false() { 526c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertFalse(ThaiBuddhistChronology.INSTANCE.equals(IsoChronology.INSTANCE)); 527c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 528c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 529c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 530c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 531c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name = "resolve_yearOfEra") 532c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_resolve_yearOfEra() { 533c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 534c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // era only 535c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.STRICT, -1, null, null, null, null}, 536c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.SMART, -1, null, null, null, null}, 537c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.LENIENT, -1, null, null, null, null}, 538c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 539c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.STRICT, 0, null, null, ChronoField.ERA, 0}, 540c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.SMART, 0, null, null, ChronoField.ERA, 0}, 541c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.LENIENT, 0, null, null, ChronoField.ERA, 0}, 542c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 543c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.STRICT, 1, null, null, ChronoField.ERA, 1}, 544c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.SMART, 1, null, null, ChronoField.ERA, 1}, 545c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.LENIENT, 1, null, null, ChronoField.ERA, 1}, 546c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 547c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.STRICT, 2, null, null, null, null}, 548c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.SMART, 2, null, null, null, null}, 549c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.LENIENT, 2, null, null, null, null}, 550c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 551c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // era and year-of-era 552c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.STRICT, -1, 2012, null, null, null}, 553c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.SMART, -1, 2012, null, null, null}, 554c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.LENIENT, -1, 2012, null, null, null}, 555c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 556c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.STRICT, 0, 2012, null, ChronoField.YEAR, -2011}, 557c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.SMART, 0, 2012, null, ChronoField.YEAR, -2011}, 558c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.LENIENT, 0, 2012, null, ChronoField.YEAR, -2011}, 559c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 560c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.STRICT, 1, 2012, null, ChronoField.YEAR, 2012}, 561c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.SMART, 1, 2012, null, ChronoField.YEAR, 2012}, 562c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.LENIENT, 1, 2012, null, ChronoField.YEAR, 2012}, 563c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 564c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.STRICT, 2, 2012, null, null, null}, 565c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.SMART, 2, 2012, null, null, null}, 566c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.LENIENT, 2, 2012, null, null, null}, 567c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 568c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // year-of-era only 569c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.STRICT, null, 2012, null, ChronoField.YEAR_OF_ERA, 2012}, 570c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.SMART, null, 2012, null, ChronoField.YEAR, 2012}, 571c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.LENIENT, null, 2012, null, ChronoField.YEAR, 2012}, 572c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 573c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.STRICT, null, Integer.MAX_VALUE, null, null, null}, 574c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.SMART, null, Integer.MAX_VALUE, null, null, null}, 575c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.LENIENT, null, Integer.MAX_VALUE, null, ChronoField.YEAR, Integer.MAX_VALUE}, 576c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 577c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // year-of-era and year 578c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.STRICT, null, 2012, 2012, ChronoField.YEAR, 2012}, 579c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.SMART, null, 2012, 2012, ChronoField.YEAR, 2012}, 580c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.LENIENT, null, 2012, 2012, ChronoField.YEAR, 2012}, 581c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 582c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.STRICT, null, 2012, -2011, ChronoField.YEAR, -2011}, 583c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.SMART, null, 2012, -2011, ChronoField.YEAR, -2011}, 584c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.LENIENT, null, 2012, -2011, ChronoField.YEAR, -2011}, 585c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 586c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.STRICT, null, 2012, 2013, null, null}, 587c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.SMART, null, 2012, 2013, null, null}, 588c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.LENIENT, null, 2012, 2013, null, null}, 589c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 590c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.STRICT, null, 2012, -2013, null, null}, 591c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.SMART, null, 2012, -2013, null, null}, 592c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {ResolverStyle.LENIENT, null, 2012, -2013, null, null}, 593c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 594c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 595c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 596c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider = "resolve_yearOfEra") 597c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_resolve_yearOfEra(ResolverStyle style, Integer e, Integer yoe, Integer y, ChronoField field, Integer expected) { 598c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Map<TemporalField, Long> fieldValues = new HashMap<>(); 599c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (e != null) { 600c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.ERA, (long) e); 601c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 602c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (yoe != null) { 603c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.YEAR_OF_ERA, (long) yoe); 604c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 605c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (y != null) { 606c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.YEAR, (long) y); 607c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 608c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (field != null) { 609c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate date = ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, style); 610c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(date, null); 611c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(fieldValues.get(field), (Long) expected.longValue()); 612c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(fieldValues.size(), 1); 613c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 614c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 615c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, style); 616c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail("Should have failed"); 617c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (DateTimeException ex) { 618c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // expected 619c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 620c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 621c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 622c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 623c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 624c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 625c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name = "resolve_ymd") 626c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_resolve_ymd() { 627c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 628c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, -365, date(YDIFF + 2010, 12, 31), false, false}, 629c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, -364, date(YDIFF + 2011, 1, 1), false, false}, 630c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, -31, date(YDIFF + 2011, 11, 30), false, false}, 631c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, -30, date(YDIFF + 2011, 12, 1), false, false}, 632c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, -12, date(YDIFF + 2011, 12, 19), false, false}, 633c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, date(YDIFF + 2012, 1, 1), true, true}, 634c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 27, date(YDIFF + 2012, 1, 27), true, true}, 635c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 28, date(YDIFF + 2012, 1, 28), true, true}, 636c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 29, date(YDIFF + 2012, 1, 29), true, true}, 637c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 30, date(YDIFF + 2012, 1, 30), true, true}, 638c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 31, date(YDIFF + 2012, 1, 31), true, true}, 639c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 59, date(YDIFF + 2012, 2, 28), false, false}, 640c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 60, date(YDIFF + 2012, 2, 29), false, false}, 641c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 61, date(YDIFF + 2012, 3, 1), false, false}, 642c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 365, date(YDIFF + 2012, 12, 30), false, false}, 643c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 366, date(YDIFF + 2012, 12, 31), false, false}, 644c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 367, date(YDIFF + 2013, 1, 1), false, false}, 645c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 367 + 364, date(YDIFF + 2013, 12, 31), false, false}, 646c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 367 + 365, date(YDIFF + 2014, 1, 1), false, false}, 647c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 648c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 1, date(YDIFF + 2012, 2, 1), true, true}, 649c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 28, date(YDIFF + 2012, 2, 28), true, true}, 650c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 29, date(YDIFF + 2012, 2, 29), true, true}, 651c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 30, date(YDIFF + 2012, 3, 1), date(YDIFF + 2012, 2, 29), false}, 652c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 31, date(YDIFF + 2012, 3, 2), date(YDIFF + 2012, 2, 29), false}, 653c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 32, date(YDIFF + 2012, 3, 3), false, false}, 654c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 655c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, -12, 1, date(YDIFF + 2010, 12, 1), false, false}, 656c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, -11, 1, date(YDIFF + 2011, 1, 1), false, false}, 657c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, -1, 1, date(YDIFF + 2011, 11, 1), false, false}, 658c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 0, 1, date(YDIFF + 2011, 12, 1), false, false}, 659c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, date(YDIFF + 2012, 1, 1), true, true}, 660c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 12, 1, date(YDIFF + 2012, 12, 1), true, true}, 661c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 13, 1, date(YDIFF + 2013, 1, 1), false, false}, 662c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 24, 1, date(YDIFF + 2013, 12, 1), false, false}, 663c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 25, 1, date(YDIFF + 2014, 1, 1), false, false}, 664c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 665c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 6, -31, date(YDIFF + 2012, 4, 30), false, false}, 666c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 6, -30, date(YDIFF + 2012, 5, 1), false, false}, 667c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 6, -1, date(YDIFF + 2012, 5, 30), false, false}, 668c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 6, 0, date(YDIFF + 2012, 5, 31), false, false}, 669c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 6, 1, date(YDIFF + 2012, 6, 1), true, true}, 670c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 6, 30, date(YDIFF + 2012, 6, 30), true, true}, 671c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 6, 31, date(YDIFF + 2012, 7, 1), date(YDIFF + 2012, 6, 30), false}, 672c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 6, 61, date(YDIFF + 2012, 7, 31), false, false}, 673c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 6, 62, date(YDIFF + 2012, 8, 1), false, false}, 674c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 675c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2011, 2, 1, date(YDIFF + 2011, 2, 1), true, true}, 676c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2011, 2, 28, date(YDIFF + 2011, 2, 28), true, true}, 677c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2011, 2, 29, date(YDIFF + 2011, 3, 1), date(YDIFF + 2011, 2, 28), false}, 678c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2011, 2, 30, date(YDIFF + 2011, 3, 2), date(YDIFF + 2011, 2, 28), false}, 679c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2011, 2, 31, date(YDIFF + 2011, 3, 3), date(YDIFF + 2011, 2, 28), false}, 680c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2011, 2, 32, date(YDIFF + 2011, 3, 4), false, false}, 681c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 682c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 683c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 684c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider = "resolve_ymd") 685c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_resolve_ymd_lenient(int y, int m, int d, ThaiBuddhistDate expected, Object smart, boolean strict) { 686c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Map<TemporalField, Long> fieldValues = new HashMap<>(); 687c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.YEAR, (long) y); 688c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.MONTH_OF_YEAR, (long) m); 689c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.DAY_OF_MONTH, (long) d); 690c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate date = ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.LENIENT); 691c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(date, expected); 692c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(fieldValues.size(), 0); 693c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 694c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 695c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider = "resolve_ymd") 696c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_resolve_ymd_smart(int y, int m, int d, ThaiBuddhistDate expected, Object smart, boolean strict) { 697c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Map<TemporalField, Long> fieldValues = new HashMap<>(); 698c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.YEAR, (long) y); 699c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.MONTH_OF_YEAR, (long) m); 700c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.DAY_OF_MONTH, (long) d); 701c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (Boolean.TRUE.equals(smart)) { 702c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate date = ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.SMART); 703c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(date, expected); 704c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(fieldValues.size(), 0); 705c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else if (smart instanceof ThaiBuddhistDate) { 706c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate date = ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.SMART); 707c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(date, smart); 708c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 709c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 710c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.SMART); 711c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail("Should have failed"); 712c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (DateTimeException ex) { 713c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // expected 714c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 715c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 716c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 717c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 718c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider = "resolve_ymd") 719c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_resolve_ymd_strict(int y, int m, int d, ThaiBuddhistDate expected, Object smart, boolean strict) { 720c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Map<TemporalField, Long> fieldValues = new HashMap<>(); 721c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.YEAR, (long) y); 722c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.MONTH_OF_YEAR, (long) m); 723c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.DAY_OF_MONTH, (long) d); 724c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (strict) { 725c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate date = ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT); 726c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(date, expected); 727c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(fieldValues.size(), 0); 728c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 729c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 730c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT); 731c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail("Should have failed"); 732c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (DateTimeException ex) { 733c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // expected 734c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 735c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 736c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 737c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 738c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 739c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 740c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name = "resolve_yd") 741c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_resolve_yd() { 742c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 743c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, -365, date(YDIFF + 2010, 12, 31), false, false}, 744c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, -364, date(YDIFF + 2011, 1, 1), false, false}, 745c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, -31, date(YDIFF + 2011, 11, 30), false, false}, 746c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, -30, date(YDIFF + 2011, 12, 1), false, false}, 747c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, -12, date(YDIFF + 2011, 12, 19), false, false}, 748c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, -1, date(YDIFF + 2011, 12, 30), false, false}, 749c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 0, date(YDIFF + 2011, 12, 31), false, false}, 750c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, date(YDIFF + 2012, 1, 1), true, true}, 751c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, date(YDIFF + 2012, 1, 2), true, true}, 752c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 31, date(YDIFF + 2012, 1, 31), true, true}, 753c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 32, date(YDIFF + 2012, 2, 1), true, true}, 754c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 59, date(YDIFF + 2012, 2, 28), true, true}, 755c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 60, date(YDIFF + 2012, 2, 29), true, true}, 756c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 61, date(YDIFF + 2012, 3, 1), true, true}, 757c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 365, date(YDIFF + 2012, 12, 30), true, true}, 758c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 366, date(YDIFF + 2012, 12, 31), true, true}, 759c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 367, date(YDIFF + 2013, 1, 1), false, false}, 760c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 367 + 364, date(YDIFF + 2013, 12, 31), false, false}, 761c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 367 + 365, date(YDIFF + 2014, 1, 1), false, false}, 762c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 763c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2011, 59, date(YDIFF + 2011, 2, 28), true, true}, 764c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2011, 60, date(YDIFF + 2011, 3, 1), true, true}, 765c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 766c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 767c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 768c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider = "resolve_yd") 769c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_resolve_yd_lenient(int y, int d, ThaiBuddhistDate expected, boolean smart, boolean strict) { 770c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Map<TemporalField, Long> fieldValues = new HashMap<>(); 771c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.YEAR, (long) y); 772c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.DAY_OF_YEAR, (long) d); 773c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate date = ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.LENIENT); 774c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(date, expected); 775c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(fieldValues.size(), 0); 776c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 777c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 778c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider = "resolve_yd") 779c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_resolve_yd_smart(int y, int d, ThaiBuddhistDate expected, boolean smart, boolean strict) { 780c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Map<TemporalField, Long> fieldValues = new HashMap<>(); 781c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.YEAR, (long) y); 782c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.DAY_OF_YEAR, (long) d); 783c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (smart) { 784c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate date = ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.SMART); 785c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(date, expected); 786c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(fieldValues.size(), 0); 787c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 788c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 789c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.SMART); 790c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail("Should have failed"); 791c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (DateTimeException ex) { 792c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // expected 793c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 794c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 795c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 796c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 797c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider = "resolve_yd") 798c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_resolve_yd_strict(int y, int d, ThaiBuddhistDate expected, boolean smart, boolean strict) { 799c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Map<TemporalField, Long> fieldValues = new HashMap<>(); 800c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.YEAR, (long) y); 801c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.DAY_OF_YEAR, (long) d); 802c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (strict) { 803c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate date = ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT); 804c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(date, expected); 805c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(fieldValues.size(), 0); 806c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 807c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 808c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT); 809c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail("Should have failed"); 810c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (DateTimeException ex) { 811c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // expected 812c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 813c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 814c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 815c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 816c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 817c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 818c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @DataProvider(name = "resolve_ymaa") 819c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Object[][] data_resolve_ymaa() { 820c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return new Object[][] { 821c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, -365, date(YDIFF + 2010, 12, 31), false, false}, 822c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, -364, date(YDIFF + 2011, 1, 1), false, false}, 823c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, -31, date(YDIFF + 2011, 11, 30), false, false}, 824c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, -30, date(YDIFF + 2011, 12, 1), false, false}, 825c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, -12, date(YDIFF + 2011, 12, 19), false, false}, 826c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, 1, date(YDIFF + 2012, 1, 1), true, true}, 827c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, 59, date(YDIFF + 2012, 2, 28), false, false}, 828c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, 60, date(YDIFF + 2012, 2, 29), false, false}, 829c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, 61, date(YDIFF + 2012, 3, 1), false, false}, 830c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, 365, date(YDIFF + 2012, 12, 30), false, false}, 831c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, 366, date(YDIFF + 2012, 12, 31), false, false}, 832c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, 367, date(YDIFF + 2013, 1, 1), false, false}, 833c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, 367 + 364, date(YDIFF + 2013, 12, 31), false, false}, 834c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, 367 + 365, date(YDIFF + 2014, 1, 1), false, false}, 835c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 836c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 0, 1, date(YDIFF + 2012, 1, 25), false, false}, 837c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 0, 7, date(YDIFF + 2012, 1, 31), false, false}, 838c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 1, 1, date(YDIFF + 2012, 2, 1), true, true}, 839c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 1, 7, date(YDIFF + 2012, 2, 7), true, true}, 840c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 2, 1, date(YDIFF + 2012, 2, 8), true, true}, 841c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 2, 7, date(YDIFF + 2012, 2, 14), true, true}, 842c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 3, 1, date(YDIFF + 2012, 2, 15), true, true}, 843c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 3, 7, date(YDIFF + 2012, 2, 21), true, true}, 844c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 4, 1, date(YDIFF + 2012, 2, 22), true, true}, 845c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 4, 7, date(YDIFF + 2012, 2, 28), true, true}, 846c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 5, 1, date(YDIFF + 2012, 2, 29), true, true}, 847c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 5, 2, date(YDIFF + 2012, 3, 1), true, false}, 848c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 5, 7, date(YDIFF + 2012, 3, 6), true, false}, 849c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 6, 1, date(YDIFF + 2012, 3, 7), false, false}, 850c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 2, 6, 7, date(YDIFF + 2012, 3, 13), false, false}, 851c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 852c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 12, 1, 1, date(YDIFF + 2012, 12, 1), true, true}, 853c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 12, 5, 1, date(YDIFF + 2012, 12, 29), true, true}, 854c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 12, 5, 2, date(YDIFF + 2012, 12, 30), true, true}, 855c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 12, 5, 3, date(YDIFF + 2012, 12, 31), true, true}, 856c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 12, 5, 4, date(YDIFF + 2013, 1, 1), true, false}, 857c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 12, 5, 7, date(YDIFF + 2013, 1, 4), true, false}, 858c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 859c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, -12, 1, 1, date(YDIFF + 2010, 12, 1), false, false}, 860c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, -11, 1, 1, date(YDIFF + 2011, 1, 1), false, false}, 861c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, -1, 1, 1, date(YDIFF + 2011, 11, 1), false, false}, 862c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 0, 1, 1, date(YDIFF + 2011, 12, 1), false, false}, 863c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 1, 1, 1, date(YDIFF + 2012, 1, 1), true, true}, 864c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 12, 1, 1, date(YDIFF + 2012, 12, 1), true, true}, 865c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 13, 1, 1, date(YDIFF + 2013, 1, 1), false, false}, 866c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 24, 1, 1, date(YDIFF + 2013, 12, 1), false, false}, 867c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2012, 25, 1, 1, date(YDIFF + 2014, 1, 1), false, false}, 868c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 869c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2011, 2, 1, 1, date(YDIFF + 2011, 2, 1), true, true}, 870c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2011, 2, 4, 7, date(YDIFF + 2011, 2, 28), true, true}, 871c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer {YDIFF + 2011, 2, 5, 1, date(YDIFF + 2011, 3, 1), true, false}, 872c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer }; 873c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 874c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 875c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider = "resolve_ymaa") 876c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_resolve_ymaa_lenient(int y, int m, int w, int d, ThaiBuddhistDate expected, boolean smart, boolean strict) { 877c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Map<TemporalField, Long> fieldValues = new HashMap<>(); 878c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.YEAR, (long) y); 879c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.MONTH_OF_YEAR, (long) m); 880c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.ALIGNED_WEEK_OF_MONTH, (long) w); 881c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH, (long) d); 882c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate date = ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.LENIENT); 883c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(date, expected); 884c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(fieldValues.size(), 0); 885c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 886c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 887c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider = "resolve_ymaa") 888c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_resolve_ymaa_smart(int y, int m, int w, int d, ThaiBuddhistDate expected, boolean smart, boolean strict) { 889c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Map<TemporalField, Long> fieldValues = new HashMap<>(); 890c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.YEAR, (long) y); 891c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.MONTH_OF_YEAR, (long) m); 892c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.ALIGNED_WEEK_OF_MONTH, (long) w); 893c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH, (long) d); 894c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (smart) { 895c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate date = ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.SMART); 896c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(date, expected); 897c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(fieldValues.size(), 0); 898c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 899c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 900c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.SMART); 901c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail("Should have failed"); 902c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (DateTimeException ex) { 903c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // expected 904c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 905c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 906c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 907c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 908c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer @Test(dataProvider = "resolve_ymaa") 909c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer public void test_resolve_ymaa_strict(int y, int m, int w, int d, ThaiBuddhistDate expected, boolean smart, boolean strict) { 910c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer Map<TemporalField, Long> fieldValues = new HashMap<>(); 911c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.YEAR, (long) y); 912c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.MONTH_OF_YEAR, (long) m); 913c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.ALIGNED_WEEK_OF_MONTH, (long) w); 914c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fieldValues.put(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH, (long) d); 915c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer if (strict) { 916c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistDate date = ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT); 917c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(date, expected); 918c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer assertEquals(fieldValues.size(), 0); 919c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } else { 920c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer try { 921c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer ThaiBuddhistChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT); 922c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer fail("Should have failed"); 923c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } catch (DateTimeException ex) { 924c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer // expected 925c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 926c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 927c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 928c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 929c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer //----------------------------------------------------------------------- 930c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer private static ThaiBuddhistDate date(int y, int m, int d) { 931c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer return ThaiBuddhistDate.of(y, m, d); 932c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer } 933c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer 934c9dd3385ea6f927052783f42fb1282fb093e636eJoachim Sauer} 935