/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.core.el.datetime; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.mule.runtime.core.el.context.AbstractELTestCase; import org.junit.Test; public class DateTimeFunctionalTestCase extends AbstractELTestCase { public DateTimeFunctionalTestCase(String mvelOptimizer) { super(mvelOptimizer); } @Test public void iso9601DateTimeRoundTrip() { assertTrue((Boolean) evaluate("time = server.dateTime.withTimeZone('UTC'); time == " + "dateTime(time.toString())")); } @Test public void iso9601DateRoundTrip() { assertTrue((Boolean) evaluate("time = server.dateTime.withTimeZone('UTC').date; time == " + "dateTime(time.toString()).date")); } @Test public void iso9601TimeRoundTrip() { assertTrue((Boolean) evaluate("time = server.dateTime.withTimeZone('UTC').time; time == " + "dateTime(time.toString()).time;")); } @Test public void customFormatDateTimeRoundTrip() { assertTrue((Boolean) evaluate("time = server.dateTime.withTimeZone('UTC'); time == " + "dateTime(time.format('MM/dd/yyZZ-HHmmss.SSS-ZZ'),'MM/dd/yyZZ-HHmmss.SSS-ZZ')")); } @Test public void customFormatDateRoundTrip() { assertTrue((Boolean) evaluate("time = server.dateTime.withTimeZone('UTC').date; time == dateTime(time.format('MM/dd/yy:zz'),'MM/dd/yy:zz').date;")); } @Test public void customFormatTimeRoundTrip() { assertTrue((Boolean) evaluate("time = server.dateTime.withTimeZone('UTC').time; time == " + "dateTime(time.format('HHmmss.SSS-ZZ'),'HHmmss.SSS-ZZ').time")); } @Test public void dateRoundTrip() { assertTrue((Boolean) evaluate("time = server.dateTime; time == dateTime(time.toDate())")); } @Test public void calendarRoundTrip() { assertTrue((Boolean) evaluate("time = server.dateTime; time == dateTime(time.toCalendar())")); } @Test public void xmlCalendarRoundTrip() { assertTrue((Boolean) evaluate("time = server.dateTime.withTimeZone('UTC'); time == dateTime(time.toXMLCalendar())")); } @Test public void chainedManipulation() { assertTrue((Boolean) evaluate("time = server.dateTime; time == time.plusDays(365).plusYears(-1).plusHours(24)." + "plusDays(-2).plusMinutes(60).plusHours(-1)")); } @Test public void parsedTimeIsBeforeServerDateTime() { assertTrue((Boolean) evaluate("server.dateTime.isBefore(dateTime('2100-01-01'))")); } @Test public void parsedTimeIsAfterServerDateTime() { assertTrue((Boolean) evaluate("server.dateTime.isAfter(dateTime('1900-01-01'))")); } @Test public void addDaysAndCompareAfter() { assertTrue((Boolean) evaluate("server.dateTime.plusDays(1).isAfter(server.dateTime)")); } @Test public void substractDaysAndCompareBefore() { assertTrue((Boolean) evaluate("server.dateTime.plusDays(-1).isBefore(server.dateTime)")); } @Test public void iso8601ToSimpleDateFromat() { assertEquals("1/1/1900", evaluate("dateTime('1900-01-01').format('d/M/yyyy')")); } @Test public void simpleDateFromatToIso8601DateTime() { assertEquals("1900-01-01T00:00:00Z", evaluate("dateTime('1/1/1900','d/M/yyyy').toString()")); } @Test public void simpleDateFromatToIso8601Date() { assertEquals("1900-01-01Z", evaluate("dateTime('1/1/1900','d/M/yyyy').withTimeZone('GMT').date.toString()")); } @Test public void simpleDateFromatToIso8601Time() { assertEquals("00:00:00Z", evaluate("dateTime('1/1/1900','d/M/yyyy').withTimeZone('GMT').time.toString()")); } @Test public void updateIso8601TimeZone() { assertEquals("1900-01-01T09:00:00-08:00", evaluate("dateTime('1900-01-01T09:00:00Z').withTimeZone('GMT-08:00').toString()")); } @Test public void changeIso8601TimeZone() { assertEquals("1900-01-01T01:00:00-08:00", evaluate("dateTime('1900-01-01T09:00:00Z').changeTimeZone('GMT-08:00').toString()")); } @Test public void addDays8601String() { assertEquals("1900-01-03T00:00:00Z", evaluate("dateTime('1900-01-01T00:00:00Z').plusDays(2).toString()")); } @Test public void compareYearIsoAndSimpleDateFormatStrings() { assertTrue((Boolean) evaluate("dateTime('1900-01-01').year==dateTime('1/1/1900','d/M/yyyy').year")); } @Test public void isoStringEquals() { assertTrue((Boolean) evaluate("dateTime('1900-01-01') == dateTime('1900-01-01')")); } @Test public void isoAndSimpleDateFormatEquals() { assertTrue((Boolean) evaluate("dateTime('1900-01-01Z') == dateTime('1/1/1900','d/M/yyyy')")); } @Test public void equalsDate() { assertTrue((Boolean) evaluate("dateTime('1900-01-01') == dateTime('1900-01-01T23:11:34').date")); } @Test public void equalsDate2() { assertTrue((Boolean) evaluate("dateTime('1900-01-01T11:01:11').date == dateTime('1900-01-01T23:11:34').date")); } @Test public void equalsTime() { assertEquals(evaluate("dateTime('23:11:34Z')"), evaluate("dateTime('23:11:34Z').time")); } @Test public void equalsTime2() { assertEquals(evaluate("dateTime('23:11:34Z').time"), evaluate("dateTime('1970-01-01T23:11:34Z').time")); } @Test public void dateToString() { assertEquals("2100-12-12Z", evaluate("dateTime('2100-12-12T23:11:34Z').date.format()")); } @Test public void timeToString() { assertEquals("23:11:34Z", evaluate("dateTime('2100-12-12T23:11:34Z').time.format()")); } }