50 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
51 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
52 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
53 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
54 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
55 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
56 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
57 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
58 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
59 */
60 package tck.java.time;
61
62 import static java.time.temporal.ChronoField.OFFSET_SECONDS;
63 import static org.testng.Assert.assertEquals;
64 import static org.testng.Assert.assertSame;
65 import static org.testng.Assert.assertTrue;
66 import static org.testng.Assert.fail;
67
68 import java.io.ByteArrayOutputStream;
69 import java.io.DataOutputStream;
70 import java.util.ArrayList;
71 import java.util.Arrays;
72 import java.util.List;
73
74 import java.time.DateTimeException;
75 import java.time.Duration;
76 import java.time.Instant;
77 import java.time.LocalDate;
78 import java.time.LocalDateTime;
79 import java.time.LocalTime;
80 import java.time.ZoneOffset;
81 import java.time.ZonedDateTime;
82 import java.time.temporal.ChronoField;
83 import java.time.temporal.JulianFields;
84 import java.time.temporal.OffsetDate;
85 import java.time.temporal.Queries;
86 import java.time.temporal.TemporalAccessor;
87 import java.time.temporal.TemporalField;
88
89 import org.testng.annotations.Test;
90
91 /**
92 * Test ZoneOffset.
93 */
94 @Test
95 public class TCKZoneOffset extends AbstractDateTimeTest {
96
97 //-----------------------------------------------------------------------
98 @Override
99 protected List<TemporalAccessor> samples() {
100 TemporalAccessor[] array = {ZoneOffset.ofHours(1), ZoneOffset.ofHoursMinutesSeconds(-5, -6, -30) };
101 return Arrays.asList(array);
102 }
103
104 @Override
105 protected List<TemporalField> validFields() {
106 TemporalField[] array = {
107 OFFSET_SECONDS,
108 };
463 assertEquals(ZoneOffset.ofTotalSeconds(60 * 60 + 1), ZoneOffset.ofHoursMinutesSeconds(1, 0, 1));
464 assertEquals(ZoneOffset.ofTotalSeconds(18 * 60 * 60), ZoneOffset.ofHours(18));
465 assertEquals(ZoneOffset.ofTotalSeconds(-18 * 60 * 60), ZoneOffset.ofHours(-18));
466 }
467
468 @Test(expectedExceptions=DateTimeException.class, groups={"tck"})
469 public void test_factory_ofTotalSeconds_tooLarge() {
470 ZoneOffset.ofTotalSeconds(18 * 60 * 60 + 1);
471 }
472
473 @Test(expectedExceptions=DateTimeException.class, groups={"tck"})
474 public void test_factory_ofTotalSeconds_tooSmall() {
475 ZoneOffset.ofTotalSeconds(-18 * 60 * 60 - 1);
476 }
477
478 //-----------------------------------------------------------------------
479 // from()
480 //-----------------------------------------------------------------------
481 @Test(groups={"tck"})
482 public void test_factory_CalendricalObject() {
483 assertEquals(ZoneOffset.from(OffsetDate.of(LocalDate.of(2012, 5, 2), ZoneOffset.ofHours(6))), ZoneOffset.ofHours(6));
484 assertEquals(ZoneOffset.from(ZonedDateTime.of(LocalDateTime.of(LocalDate.of(2007, 7, 15),
485 LocalTime.of(17, 30)), ZoneOffset.ofHours(2))), ZoneOffset.ofHours(2));
486 }
487
488 @Test(expectedExceptions=DateTimeException.class, groups={"tck"})
489 public void test_factory_CalendricalObject_invalid_noDerive() {
490 ZoneOffset.from(LocalTime.of(12, 30));
491 }
492
493 @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
494 public void test_factory_CalendricalObject_null() {
495 ZoneOffset.from((TemporalAccessor) null);
496 }
497
498 //-----------------------------------------------------------------------
499 // getTotalSeconds()
500 //-----------------------------------------------------------------------
501 @Test(groups={"tck"})
502 public void test_getTotalSeconds() {
503 ZoneOffset offset = ZoneOffset.ofTotalSeconds(60 * 60 + 1);
543 //-----------------------------------------------------------------------
544 // get(TemporalField)
545 //-----------------------------------------------------------------------
546 @Test
547 public void test_get_TemporalField() {
548 assertEquals(ZoneOffset.UTC.get(OFFSET_SECONDS), 0);
549 assertEquals(ZoneOffset.ofHours(-2).get(OFFSET_SECONDS), -7200);
550 assertEquals(ZoneOffset.ofHoursMinutesSeconds(0, 1, 5).get(OFFSET_SECONDS), 65);
551 }
552
553 @Test
554 public void test_getLong_TemporalField() {
555 assertEquals(ZoneOffset.UTC.getLong(OFFSET_SECONDS), 0);
556 assertEquals(ZoneOffset.ofHours(-2).getLong(OFFSET_SECONDS), -7200);
557 assertEquals(ZoneOffset.ofHoursMinutesSeconds(0, 1, 5).getLong(OFFSET_SECONDS), 65);
558 }
559
560 //-----------------------------------------------------------------------
561 // query(TemporalQuery)
562 //-----------------------------------------------------------------------
563 @Test
564 public void test_query_chrono() {
565 ZoneOffset test = ZoneOffset.ofHoursMinutes(1, 30);
566 assertEquals(test.query(Queries.chrono()), null);
567 assertEquals(Queries.chrono().queryFrom(test), null);
568 }
569
570 @Test
571 public void test_query_zoneId() {
572 ZoneOffset test = ZoneOffset.ofHoursMinutes(1, 30);
573 assertEquals(test.query(Queries.zoneId()), null);
574 assertEquals(Queries.zoneId().queryFrom(test), null);
575 }
576
577 @Test
578 public void test_query_precision() {
579 ZoneOffset test = ZoneOffset.ofHoursMinutes(1, 30);
580 assertEquals(test.query(Queries.precision()), null);
581 assertEquals(Queries.precision().queryFrom(test), null);
582 }
583
584 @Test
585 public void test_query_offset() {
586 ZoneOffset test = ZoneOffset.ofHoursMinutes(1, 30);
587 assertEquals(test.query(Queries.offset()), test);
588 assertEquals(Queries.offset().queryFrom(test), test);
589 }
590
591 @Test
592 public void test_query_zone() {
593 ZoneOffset test = ZoneOffset.ofHoursMinutes(1, 30);
594 assertEquals(test.query(Queries.zone()), test);
595 assertEquals(Queries.zone().queryFrom(test), test);
596 }
597
598 @Test(expectedExceptions=NullPointerException.class)
599 public void test_query_null() {
600 ZoneOffset.ofHoursMinutes(1, 30).query(null);
601 }
602
603 //-----------------------------------------------------------------------
604 // compareTo()
605 //-----------------------------------------------------------------------
606 @Test(groups={"tck"})
607 public void test_compareTo() {
608 ZoneOffset offset1 = ZoneOffset.ofHoursMinutesSeconds(1, 2, 3);
609 ZoneOffset offset2 = ZoneOffset.ofHoursMinutesSeconds(2, 3, 4);
610 assertTrue(offset1.compareTo(offset2) > 0);
611 assertTrue(offset2.compareTo(offset1) < 0);
612 assertTrue(offset1.compareTo(offset1) == 0);
613 assertTrue(offset2.compareTo(offset2) == 0);
614 }
615
616 //-----------------------------------------------------------------------
617 // equals() / hashCode()
618 //-----------------------------------------------------------------------
619 @Test(groups={"tck"})
620 public void test_equals() {
|
50 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
51 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
52 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
53 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
54 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
55 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
56 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
57 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
58 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
59 */
60 package tck.java.time;
61
62 import static java.time.temporal.ChronoField.OFFSET_SECONDS;
63 import static org.testng.Assert.assertEquals;
64 import static org.testng.Assert.assertSame;
65 import static org.testng.Assert.assertTrue;
66 import static org.testng.Assert.fail;
67
68 import java.io.ByteArrayOutputStream;
69 import java.io.DataOutputStream;
70 import java.time.DateTimeException;
71 import java.time.Duration;
72 import java.time.Instant;
73 import java.time.LocalDate;
74 import java.time.LocalDateTime;
75 import java.time.LocalTime;
76 import java.time.ZoneOffset;
77 import java.time.ZonedDateTime;
78 import java.time.temporal.ChronoField;
79 import java.time.temporal.JulianFields;
80 import java.time.temporal.Queries;
81 import java.time.temporal.TemporalAccessor;
82 import java.time.temporal.TemporalField;
83 import java.time.temporal.TemporalQuery;
84 import java.util.ArrayList;
85 import java.util.Arrays;
86 import java.util.List;
87
88 import org.testng.annotations.DataProvider;
89 import org.testng.annotations.Test;
90
91 /**
92 * Test ZoneOffset.
93 */
94 @Test
95 public class TCKZoneOffset extends AbstractDateTimeTest {
96
97 //-----------------------------------------------------------------------
98 @Override
99 protected List<TemporalAccessor> samples() {
100 TemporalAccessor[] array = {ZoneOffset.ofHours(1), ZoneOffset.ofHoursMinutesSeconds(-5, -6, -30) };
101 return Arrays.asList(array);
102 }
103
104 @Override
105 protected List<TemporalField> validFields() {
106 TemporalField[] array = {
107 OFFSET_SECONDS,
108 };
463 assertEquals(ZoneOffset.ofTotalSeconds(60 * 60 + 1), ZoneOffset.ofHoursMinutesSeconds(1, 0, 1));
464 assertEquals(ZoneOffset.ofTotalSeconds(18 * 60 * 60), ZoneOffset.ofHours(18));
465 assertEquals(ZoneOffset.ofTotalSeconds(-18 * 60 * 60), ZoneOffset.ofHours(-18));
466 }
467
468 @Test(expectedExceptions=DateTimeException.class, groups={"tck"})
469 public void test_factory_ofTotalSeconds_tooLarge() {
470 ZoneOffset.ofTotalSeconds(18 * 60 * 60 + 1);
471 }
472
473 @Test(expectedExceptions=DateTimeException.class, groups={"tck"})
474 public void test_factory_ofTotalSeconds_tooSmall() {
475 ZoneOffset.ofTotalSeconds(-18 * 60 * 60 - 1);
476 }
477
478 //-----------------------------------------------------------------------
479 // from()
480 //-----------------------------------------------------------------------
481 @Test(groups={"tck"})
482 public void test_factory_CalendricalObject() {
483 assertEquals(ZoneOffset.from(ZonedDateTime.of(LocalDateTime.of(LocalDate.of(2007, 7, 15),
484 LocalTime.of(17, 30)), ZoneOffset.ofHours(2))), ZoneOffset.ofHours(2));
485 }
486
487 @Test(expectedExceptions=DateTimeException.class, groups={"tck"})
488 public void test_factory_CalendricalObject_invalid_noDerive() {
489 ZoneOffset.from(LocalTime.of(12, 30));
490 }
491
492 @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
493 public void test_factory_CalendricalObject_null() {
494 ZoneOffset.from((TemporalAccessor) null);
495 }
496
497 //-----------------------------------------------------------------------
498 // getTotalSeconds()
499 //-----------------------------------------------------------------------
500 @Test(groups={"tck"})
501 public void test_getTotalSeconds() {
502 ZoneOffset offset = ZoneOffset.ofTotalSeconds(60 * 60 + 1);
542 //-----------------------------------------------------------------------
543 // get(TemporalField)
544 //-----------------------------------------------------------------------
545 @Test
546 public void test_get_TemporalField() {
547 assertEquals(ZoneOffset.UTC.get(OFFSET_SECONDS), 0);
548 assertEquals(ZoneOffset.ofHours(-2).get(OFFSET_SECONDS), -7200);
549 assertEquals(ZoneOffset.ofHoursMinutesSeconds(0, 1, 5).get(OFFSET_SECONDS), 65);
550 }
551
552 @Test
553 public void test_getLong_TemporalField() {
554 assertEquals(ZoneOffset.UTC.getLong(OFFSET_SECONDS), 0);
555 assertEquals(ZoneOffset.ofHours(-2).getLong(OFFSET_SECONDS), -7200);
556 assertEquals(ZoneOffset.ofHoursMinutesSeconds(0, 1, 5).getLong(OFFSET_SECONDS), 65);
557 }
558
559 //-----------------------------------------------------------------------
560 // query(TemporalQuery)
561 //-----------------------------------------------------------------------
562 @DataProvider(name="query")
563 Object[][] data_query() {
564 return new Object[][] {
565 {ZoneOffset.UTC, Queries.chronology(), null},
566 {ZoneOffset.UTC, Queries.zoneId(), null},
567 {ZoneOffset.UTC, Queries.precision(), null},
568 {ZoneOffset.UTC, Queries.zone(), ZoneOffset.UTC},
569 {ZoneOffset.UTC, Queries.offset(), ZoneOffset.UTC},
570 {ZoneOffset.UTC, Queries.localDate(), null},
571 {ZoneOffset.UTC, Queries.localTime(), null},
572 };
573 }
574
575 @Test(dataProvider="query")
576 public <T> void test_query(TemporalAccessor temporal, TemporalQuery<T> query, T expected) {
577 assertEquals(temporal.query(query), expected);
578 }
579
580 @Test(dataProvider="query")
581 public <T> void test_queryFrom(TemporalAccessor temporal, TemporalQuery<T> query, T expected) {
582 assertEquals(query.queryFrom(temporal), expected);
583 }
584
585 @Test(expectedExceptions=NullPointerException.class)
586 public void test_query_null() {
587 ZoneOffset.UTC.query(null);
588 }
589
590 //-----------------------------------------------------------------------
591 // compareTo()
592 //-----------------------------------------------------------------------
593 @Test(groups={"tck"})
594 public void test_compareTo() {
595 ZoneOffset offset1 = ZoneOffset.ofHoursMinutesSeconds(1, 2, 3);
596 ZoneOffset offset2 = ZoneOffset.ofHoursMinutesSeconds(2, 3, 4);
597 assertTrue(offset1.compareTo(offset2) > 0);
598 assertTrue(offset2.compareTo(offset1) < 0);
599 assertTrue(offset1.compareTo(offset1) == 0);
600 assertTrue(offset2.compareTo(offset2) == 0);
601 }
602
603 //-----------------------------------------------------------------------
604 // equals() / hashCode()
605 //-----------------------------------------------------------------------
606 @Test(groups={"tck"})
607 public void test_equals() {
|