/*
* ModeShape (http://www.modeshape.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.modeshape.jcr.value.basic;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.modeshape.common.text.StringMatcher.startsWith;
import java.time.LocalDateTime;
import org.junit.Test;
/**
* Unit test for {@link ModeShapeDateTime}
*
* @author Randall Hauch
* @author Horia Chiorean (hchiorea@redhat.com)
*/
public class ModeShapeDateTimeTest {
@Test
public void shouldConstructWithIso8601FormattedStringWithoutZone() {
String iso8601instance = "2008-05-10T13:22:04.678";
ModeShapeDateTime instant = new ModeShapeDateTime(iso8601instance, "UTC");
assertThat(instant.getString(), startsWith(iso8601instance));
LocalDateTime localDateTime = instant.toLocalDateTime();
assertThat(localDateTime.getYear(), is(2008));
assertThat(localDateTime.getMonthValue(), is(5));
assertThat(localDateTime.getDayOfMonth(), is(10));
assertThat(localDateTime.getDayOfWeek().getValue(), is(6));
assertThat(localDateTime.getHour(), is(13));
assertThat(localDateTime.getMinute(), is(22));
assertThat(localDateTime.getSecond(), is(04));
assertThat(instant.getMillisOfSecond(), is(678));
assertThat(instant.getTimeZoneId(), is("UTC"));
assertThat(instant.getTimeZoneOffsetHours(), is(0));
}
@Test
public void shouldConstructWithIso8601FormattedStringWithoutTime() {
ModeShapeDateTime instant = new ModeShapeDateTime("2008-05-10");
LocalDateTime localDateTime = instant.toLocalDateTime();
assertThat(localDateTime.getYear(), is(2008));
assertThat(localDateTime.getMonthValue(), is(5));
assertThat(localDateTime.getDayOfMonth(), is(10));
assertThat(localDateTime.getDayOfWeek().getValue(), is(6));
assertThat(localDateTime.getHour(), is(0));
assertThat(localDateTime.getMinute(), is(0));
assertThat(localDateTime.getSecond(), is(0));
assertThat(instant.getMillisOfSecond(), is(0));
assertThat(instant.getTimeZoneId(), is("UTC"));
assertThat(instant.getTimeZoneOffsetHours(), is(0));
}
@Test
public void shouldConstructWithIso8601FormattedString() {
String iso8601instance = "2008-05-10T13:22:04.678-04:00";
ModeShapeDateTime instant = new ModeShapeDateTime(iso8601instance);
instant = instant.toTimeZone("UTC");
assertThat(instant.getString(), is("2008-05-10T17:22:04.678Z"));
LocalDateTime localDateTime = instant.toLocalDateTime();
assertThat(localDateTime.getYear(), is(2008));
assertThat(localDateTime.getMonthValue(), is(5));
assertThat(localDateTime.getDayOfMonth(), is(10));
assertThat(localDateTime.getDayOfWeek().getValue(), is(6));
assertThat(localDateTime.getHour(), is(17));
assertThat(localDateTime.getMinute(), is(22));
assertThat(localDateTime.getSecond(), is(04));
assertThat(instant.getMillisOfSecond(), is(678));
assertThat(instant.getTimeZoneId(), is("UTC"));
assertThat(instant.getTimeZoneOffsetHours(), is(0));
}
}