48 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 49 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 50 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 51 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 52 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 53 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 54 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 55 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 56 */ 57 package test.java.time.temporal; 58 59 import static org.testng.Assert.assertEquals; 60 61 import java.util.Calendar; 62 import java.util.Locale; 63 import java.util.TimeZone; 64 65 import java.time.LocalDate; 66 import java.time.temporal.ChronoField; 67 import java.time.temporal.ChronoUnit; 68 import java.time.temporal.ChronoLocalDate; 69 import java.time.calendar.ThaiBuddhistChrono; 70 71 import org.testng.annotations.Test; 72 import org.testng.annotations.DataProvider; 73 74 /** 75 * Test. 76 */ 77 @Test 78 public class TestThaiBuddhistChronoImpl { 79 80 /** 81 * Range of years to check consistency with java.util.Calendar 82 */ 83 @DataProvider(name="RangeVersusCalendar") 84 Object[][] provider_rangeVersusCalendar() { 85 return new Object[][] { 86 {LocalDate.of(1583, 1, 1), LocalDate.of(2100, 1, 1)}, 87 }; 88 } 89 90 //----------------------------------------------------------------------- 91 // Verify ThaiBuddhist Calendar matches java.util.Calendar for range 92 //----------------------------------------------------------------------- 93 @Test(groups={"implementation"}, dataProvider="RangeVersusCalendar") 94 public void test_ThaiBuddhistChrono_vsCalendar(LocalDate isoStartDate, LocalDate isoEndDate) { 95 Locale locale = Locale.forLanguageTag("th-TH--u-ca-buddhist"); 96 assertEquals(locale.toString(), "th_TH", "Unexpected locale"); 97 Calendar cal = java.util.Calendar.getInstance(locale); 98 assertEquals(cal.getCalendarType(), "buddhist", "Unexpected calendar type"); 99 100 ChronoLocalDate<ThaiBuddhistChrono> thaiDate = ThaiBuddhistChrono.INSTANCE.date(isoStartDate); 101 102 cal.setTimeZone(TimeZone.getTimeZone("GMT+00")); 103 cal.set(Calendar.YEAR, thaiDate.get(ChronoField.YEAR)); 104 cal.set(Calendar.MONTH, thaiDate.get(ChronoField.MONTH_OF_YEAR) - 1); 105 cal.set(Calendar.DAY_OF_MONTH, thaiDate.get(ChronoField.DAY_OF_MONTH)); 106 107 while (thaiDate.isBefore(isoEndDate)) { 108 assertEquals(thaiDate.get(ChronoField.DAY_OF_MONTH), cal.get(Calendar.DAY_OF_MONTH), "Day mismatch in " + thaiDate + "; cal: " + cal); 109 assertEquals(thaiDate.get(ChronoField.MONTH_OF_YEAR), cal.get(Calendar.MONTH) + 1, "Month mismatch in " + thaiDate); 110 assertEquals(thaiDate.get(ChronoField.YEAR_OF_ERA), cal.get(Calendar.YEAR), "Year mismatch in " + thaiDate); 111 112 thaiDate = thaiDate.plus(1, ChronoUnit.DAYS); 113 cal.add(Calendar.DAY_OF_MONTH, 1); 114 } 115 } 116 117 private String calToString(Calendar cal) { 118 return String.format("%04d-%02d-%02d", 119 cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH)); 120 } | 48 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 49 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 50 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 51 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 52 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 53 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 54 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 55 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 56 */ 57 package test.java.time.temporal; 58 59 import static org.testng.Assert.assertEquals; 60 61 import java.util.Calendar; 62 import java.util.Locale; 63 import java.util.TimeZone; 64 65 import java.time.LocalDate; 66 import java.time.temporal.ChronoField; 67 import java.time.temporal.ChronoUnit; 68 import java.time.chrono.ChronoLocalDate; 69 import java.time.chrono.ThaiBuddhistChronology; 70 import java.time.chrono.ThaiBuddhistDate; 71 72 import org.testng.annotations.Test; 73 import org.testng.annotations.DataProvider; 74 75 /** 76 * Test. 77 */ 78 @Test 79 public class TestThaiBuddhistChronoImpl { 80 81 /** 82 * Range of years to check consistency with java.util.Calendar 83 */ 84 @DataProvider(name="RangeVersusCalendar") 85 Object[][] provider_rangeVersusCalendar() { 86 return new Object[][] { 87 {LocalDate.of(1583, 1, 1), LocalDate.of(2100, 1, 1)}, 88 }; 89 } 90 91 //----------------------------------------------------------------------- 92 // Verify ThaiBuddhist Calendar matches java.util.Calendar for range 93 //----------------------------------------------------------------------- 94 @Test(groups={"implementation"}, dataProvider="RangeVersusCalendar") 95 public void test_ThaiBuddhistChrono_vsCalendar(LocalDate isoStartDate, LocalDate isoEndDate) { 96 Locale locale = Locale.forLanguageTag("th-TH--u-ca-buddhist"); 97 assertEquals(locale.toString(), "th_TH", "Unexpected locale"); 98 Calendar cal = java.util.Calendar.getInstance(locale); 99 assertEquals(cal.getCalendarType(), "buddhist", "Unexpected calendar type"); 100 101 ThaiBuddhistDate thaiDate = ThaiBuddhistChronology.INSTANCE.date(isoStartDate); 102 103 cal.setTimeZone(TimeZone.getTimeZone("GMT+00")); 104 cal.set(Calendar.YEAR, thaiDate.get(ChronoField.YEAR)); 105 cal.set(Calendar.MONTH, thaiDate.get(ChronoField.MONTH_OF_YEAR) - 1); 106 cal.set(Calendar.DAY_OF_MONTH, thaiDate.get(ChronoField.DAY_OF_MONTH)); 107 108 while (thaiDate.isBefore(isoEndDate)) { 109 assertEquals(thaiDate.get(ChronoField.DAY_OF_MONTH), cal.get(Calendar.DAY_OF_MONTH), "Day mismatch in " + thaiDate + "; cal: " + cal); 110 assertEquals(thaiDate.get(ChronoField.MONTH_OF_YEAR), cal.get(Calendar.MONTH) + 1, "Month mismatch in " + thaiDate); 111 assertEquals(thaiDate.get(ChronoField.YEAR_OF_ERA), cal.get(Calendar.YEAR), "Year mismatch in " + thaiDate); 112 113 thaiDate = thaiDate.plus(1, ChronoUnit.DAYS); 114 cal.add(Calendar.DAY_OF_MONTH, 1); 115 } 116 } 117 118 private String calToString(Calendar cal) { 119 return String.format("%04d-%02d-%02d", 120 cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH)); 121 } |