46 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
47 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
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 tck.java.time.chrono;
58
59 import static org.testng.Assert.assertEquals;
60 import static org.testng.Assert.fail;
61
62 import java.time.DateTimeException;
63 import java.time.LocalDate;
64 import java.time.LocalDateTime;
65 import java.time.LocalTime;
66 import java.time.ZoneId;
67 import java.time.ZonedDateTime;
68 import java.time.chrono.Chronology;
69 import java.time.chrono.IsoChronology;
70 import java.time.format.ResolverStyle;
71 import java.time.temporal.ChronoField;
72 import java.time.temporal.TemporalAccessor;
73 import java.time.temporal.TemporalAdjusters;
74 import java.time.temporal.TemporalField;
75 import java.time.temporal.TemporalQueries;
76 import java.time.temporal.TemporalQuery;
77 import java.util.HashMap;
78 import java.util.Map;
79
80 import org.testng.annotations.DataProvider;
81 import org.testng.annotations.Test;
82
83 /**
84 * Test.
85 */
86 @Test
87 public class TCKIsoChronology {
88 // Can only work with IsoChronology here
89 // others may be in separate module
90
91 @Test
92 public void factory_from_TemporalAccessor_dateWithChronlogy() {
93 assertEquals(Chronology.from(LocalDate.of(2012, 6, 30)), IsoChronology.INSTANCE);
94 }
95
96 @Test
97 public void factory_from_TemporalAccessor_chronology() {
98 assertEquals(Chronology.from(new TemporalAccessor() {
99 @Override
100 public boolean isSupported(TemporalField field) {
101 throw new UnsupportedOperationException();
102 }
103
104 @Override
105 public long getLong(TemporalField field) {
106 throw new UnsupportedOperationException();
107 }
108
109 @SuppressWarnings("unchecked")
658 public void test_resolve_ymaa_strict(int y, int m, int w, int d, LocalDate expected, boolean smart, boolean strict) {
659 Map<TemporalField, Long> fieldValues = new HashMap<>();
660 fieldValues.put(ChronoField.YEAR, (long) y);
661 fieldValues.put(ChronoField.MONTH_OF_YEAR, (long) m);
662 fieldValues.put(ChronoField.ALIGNED_WEEK_OF_MONTH, (long) w);
663 fieldValues.put(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH, (long) d);
664 if (strict) {
665 LocalDate date = IsoChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT);
666 assertEquals(date, expected);
667 assertEquals(fieldValues.size(), 0);
668 } else {
669 try {
670 IsoChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT);
671 fail("Should have failed");
672 } catch (DateTimeException ex) {
673 // expected
674 }
675 }
676 }
677
678 //-----------------------------------------------------------------------
679 private static LocalDate date(int y, int m, int d) {
680 return LocalDate.of(y, m, d);
681 }
682
683 }
|
46 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
47 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
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 tck.java.time.chrono;
58
59 import static org.testng.Assert.assertEquals;
60 import static org.testng.Assert.fail;
61
62 import java.time.DateTimeException;
63 import java.time.LocalDate;
64 import java.time.LocalDateTime;
65 import java.time.LocalTime;
66 import java.time.OffsetDateTime;
67 import java.time.Year;
68 import java.time.ZonedDateTime;
69 import java.time.ZoneId;
70 import java.time.ZoneOffset;
71 import java.time.chrono.Chronology;
72 import java.time.chrono.Era;
73 import java.time.chrono.HijrahEra;
74 import java.time.chrono.IsoChronology;
75 import java.time.chrono.IsoEra;
76 import java.time.format.ResolverStyle;
77 import java.time.temporal.ChronoField;
78 import java.time.temporal.TemporalAccessor;
79 import java.time.temporal.TemporalAdjusters;
80 import java.time.temporal.TemporalField;
81 import java.time.temporal.TemporalQueries;
82 import java.time.temporal.TemporalQuery;
83 import java.util.HashMap;
84 import java.util.Map;
85
86 import org.testng.annotations.DataProvider;
87 import org.testng.annotations.Test;
88
89 /**
90 * Test.
91 */
92 @Test
93 public class TCKIsoChronology {
94 // Can only work with IsoChronology here
95 // others may be in separate module
96 private static final ZoneOffset OFFSET_P0100 = ZoneOffset.ofHours(1);
97 private static final ZoneOffset OFFSET_M0100 = ZoneOffset.ofHours(-1);
98
99 @Test
100 public void factory_from_TemporalAccessor_dateWithChronlogy() {
101 assertEquals(Chronology.from(LocalDate.of(2012, 6, 30)), IsoChronology.INSTANCE);
102 }
103
104 @Test
105 public void factory_from_TemporalAccessor_chronology() {
106 assertEquals(Chronology.from(new TemporalAccessor() {
107 @Override
108 public boolean isSupported(TemporalField field) {
109 throw new UnsupportedOperationException();
110 }
111
112 @Override
113 public long getLong(TemporalField field) {
114 throw new UnsupportedOperationException();
115 }
116
117 @SuppressWarnings("unchecked")
666 public void test_resolve_ymaa_strict(int y, int m, int w, int d, LocalDate expected, boolean smart, boolean strict) {
667 Map<TemporalField, Long> fieldValues = new HashMap<>();
668 fieldValues.put(ChronoField.YEAR, (long) y);
669 fieldValues.put(ChronoField.MONTH_OF_YEAR, (long) m);
670 fieldValues.put(ChronoField.ALIGNED_WEEK_OF_MONTH, (long) w);
671 fieldValues.put(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH, (long) d);
672 if (strict) {
673 LocalDate date = IsoChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT);
674 assertEquals(date, expected);
675 assertEquals(fieldValues.size(), 0);
676 } else {
677 try {
678 IsoChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT);
679 fail("Should have failed");
680 } catch (DateTimeException ex) {
681 // expected
682 }
683 }
684 }
685
686 @DataProvider(name = "epochSecond_dataProvider")
687 Object[][] data_epochSecond() {
688 return new Object[][] {
689 {2008, 3, 3, 1, 2, 2, OFFSET_P0100},
690 {2008, 3, 3, 1, 2, 2, OFFSET_M0100},
691 {2008, 2, 28, 1, 2, 2, OFFSET_P0100},
692 {2009, 3, 3, 1, 2, 2, OFFSET_P0100},
693 {2009, 3, 3, 1, 2, 2, OFFSET_M0100},
694 {2009, 2, 28, 1, 2, 2, OFFSET_P0100},
695 {1968, 3, 3, 1, 2, 2, OFFSET_P0100},
696 {1968, 3, 3, 1, 2, 2, OFFSET_M0100},
697 {1968, 2, 28, 1, 2, 2, OFFSET_P0100},
698 {1969, 3, 3 , 1, 2, 2, OFFSET_P0100},
699 {1969, 3, 3, 1, 2, 2, OFFSET_M0100},
700 {1969, 2, 28, 1, 2, 2, OFFSET_P0100},
701 {1970, 1, 1, 1, 2, 2, OFFSET_P0100},
702 {1970, 1, 1, 1, 2, 2, OFFSET_M0100},
703 {-4, 3, 3 , 1, 2, 2, OFFSET_P0100},
704 {-1, 3, 3 , 1, 2, 2, OFFSET_P0100},
705 };
706 }
707
708 @Test(dataProvider = "epochSecond_dataProvider")
709 public void test_epochSecond_1(int y, int m, int d, int h , int min, int s, ZoneOffset offset) {
710 assertEquals(IsoChronology.INSTANCE.epochSecond(y, m, d, h, min, s, offset),
711 OffsetDateTime.of(y, m, d, h, min, s, 0, offset).toEpochSecond());
712 }
713
714 @Test
715 public void test_epochSecond_2() {
716 assertEquals(IsoChronology.INSTANCE.epochSecond(2008, 3, 3, 1, 2, 2, OFFSET_P0100),
717 ZonedDateTime.of(2008, 3, 3, 1, 2, 2, 0, ZoneId.of("+01:00")).toEpochSecond());
718 assertEquals(IsoChronology.INSTANCE.epochSecond(1969, 3, 3, 1, 2, 2, OFFSET_P0100),
719 ZonedDateTime.of(1969, 3, 3, 1, 2, 2, 0, ZoneId.of("+01:00")).toEpochSecond());
720 }
721
722 @Test
723 public void test_epochSecond_max() {
724 assertEquals(IsoChronology.INSTANCE.epochSecond(Year.MAX_VALUE, 12, 31, 23, 59, 59, ZoneOffset.MIN),
725 OffsetDateTime.of(Year.MAX_VALUE, 12, 31, 23, 59, 59, 0, ZoneOffset.MIN).toEpochSecond());
726 }
727
728 @Test
729 public void test_epochSecond_min() {
730 assertEquals(IsoChronology.INSTANCE.epochSecond(Year.MIN_VALUE, 1, 1, 0, 0, 0, ZoneOffset.MAX),
731 OffsetDateTime.of(Year.MIN_VALUE, 1, 1, 0, 0, 0, 0, ZoneOffset.MAX).toEpochSecond());
732 }
733
734 @Test(expectedExceptions=DateTimeException.class)
735 public void test_epochSecond_bad() {
736 IsoChronology.INSTANCE.epochSecond(2009, 2, 29, 1, 2, 2, OFFSET_P0100);
737 }
738
739 @DataProvider(name = "era_epochSecond_dataProvider")
740 Object[][] data_era_epochSecond() {
741 return new Object[][] {
742 {IsoEra.CE, 2008, 3, 3, 1, 2, 2, OFFSET_P0100},
743 {IsoEra.CE, 2008, 3, 3, 1, 2, 2, OFFSET_M0100},
744 {IsoEra.CE, 2008, 2, 28, 1, 2, 2, OFFSET_P0100},
745 {IsoEra.CE, 2009, 3, 3, 1, 2, 2, OFFSET_P0100},
746 {IsoEra.CE, 2009, 3, 3, 1, 2, 2, OFFSET_M0100},
747 {IsoEra.CE, 2009, 2, 28, 1, 2, 2, OFFSET_P0100},
748 {IsoEra.CE, 1968, 3, 3, 1, 2, 2, OFFSET_P0100},
749 {IsoEra.CE, 1968, 3, 3, 1, 2, 2, OFFSET_M0100},
750 {IsoEra.CE, 1968, 2, 28, 1, 2, 2, OFFSET_P0100},
751 {IsoEra.CE, 1969, 3, 3 , 1, 2, 2, OFFSET_P0100},
752 {IsoEra.CE, 1969, 3, 3, 1, 2, 2, OFFSET_M0100},
753 {IsoEra.CE, 1969, 2, 28, 1, 2, 2, OFFSET_P0100},
754 {IsoEra.CE, 1970, 1, 1, 1, 2, 2, OFFSET_P0100},
755 {IsoEra.CE, 1970, 1, 1, 1, 2, 2, OFFSET_M0100},
756 {IsoEra.BCE, 5, 3, 3 , 1, 2, 2, OFFSET_P0100},
757 {IsoEra.BCE, 2, 3, 3 , 1, 2, 2, OFFSET_P0100},
758 };
759 }
760
761 @Test(dataProvider = "era_epochSecond_dataProvider")
762 public void test_era_epochSecond_1(Era era, int y, int m, int d, int h , int min, int s, ZoneOffset offset) {
763 assertEquals(IsoChronology.INSTANCE.epochSecond(era, y, m, d, h, min, s, offset),
764 OffsetDateTime.of(IsoChronology.INSTANCE.date(era, y, m, d), LocalTime.of(h, min, s), offset)
765 .toEpochSecond());
766 }
767
768 @Test
769 public void test_era_epochSecond_2() {
770 assertEquals(IsoChronology.INSTANCE.epochSecond(IsoEra.CE, 2008, 3, 3, 1, 2, 2, OFFSET_P0100),
771 ZonedDateTime.of(2008, 3, 3, 1, 2, 2, 0, ZoneId.of("+01:00")).toEpochSecond());
772 assertEquals(IsoChronology.INSTANCE.epochSecond(IsoEra.CE, 1969, 3, 3, 1, 2, 2, OFFSET_P0100),
773 ZonedDateTime.of(1969, 3, 3, 1, 2, 2, 0, ZoneId.of("+01:00")).toEpochSecond());
774 }
775
776 @Test(expectedExceptions=ClassCastException.class)
777 public void test_era_epochSecond_bad() {
778 IsoChronology.INSTANCE.epochSecond(HijrahEra.AH, 2009, 2, 29, 1, 2, 2, OFFSET_P0100);
779 }
780
781
782 //-----------------------------------------------------------------------
783 private static LocalDate date(int y, int m, int d) {
784 return LocalDate.of(y, m, d);
785 }
786 }
|