program ESMF_TimeIntervalUTest
!------------------------------------------------------------------------------
!
#include "ESMF.h"
!==============================================================================
!BOP
! !PROGRAM: ESMF_TimeIntervalTest - Test Time Interval initialization and time-stepping
!
! !DESCRIPTION:
!
! The code in this file drives F90 Time Interval unit tests.
! The companion file ESMF\_TimeInterval.F90 contains the definitions for the
! TimeInterval methods.
!
!EOP
!-----------------------------------------------------------------------------
! !USES:
use ESMF_TestMod ! test methods
use ESMF
implicit none
!------------------------------------------------------------------------------
! The following line turns the CVS identifier string into a printable variable.
character(*), parameter :: version = &
'$Id$'
!------------------------------------------------------------------------------
! cumulative result: count failures; no failures equals "all pass"
integer :: result = 0
! individual test result code
integer :: rc, H, M, S, MM, DD, YY
! individual test name
character(ESMF_MAXSTR) :: name
! individual test failure message
character(ESMF_MAXSTR) :: failMsg
! instantiate timestep, start and stop times
type(ESMF_TimeInterval) :: timeStep
type(ESMF_Time) :: startTime
type(ESMF_Calendar) :: gregorianCalendar, julianCalendar, &
julianDayCalendar, &
noLeapCalendar, day360Calendar
#ifdef ESMF_TESTEXHAUSTIVE
! individual test result code
integer :: D, sD, sN, ans, secs, hours, years, ns, &
months, days
logical :: bool
! to retrieve time in string format
character(ESMF_MAXSTR) :: timeString
! instantiate timestep, start and stop times
type(ESMF_Time) :: time1, time2
type(ESMF_TimeInterval) :: timeStep2, timeStep3
integer(ESMF_KIND_I8) :: sD_i8
real(ESMF_KIND_R8) :: ns_out_r8, sec_in_r8, days_r8, ratio, us_in_r8, &
min_in_r8, hr_out_r8, ns_in_r8, us_out_r8, &
ms_out_r8, ms_in_r8, min_out_r8, hr_in_r8, &
sec_out_r8
integer(ESMF_KIND_I8) :: days2
type(ESMF_TimeInterval) :: timeInterval1, timeInterval2, timeInterval3, &
timeInterval4, timeInterval5, timeInterval6
type(ESMF_TimeInterval) :: diffTime, absoluteTime
#endif
!-------------------------------------------------------------------------------
! The unit tests are divided into Sanity and Exhaustive. The Sanity tests are
! always run. When the environment variable, EXHAUSTIVE, is set to ON then
! the EXHAUSTIVE and sanity tests both run. If the EXHAUSTIVE variable is set
! to OFF, then only the sanity unit tests.
! Special strings (Non-exhaustive and exhaustive) have been
! added to allow a script to count the number and types of unit tests.
!-------------------------------------------------------------------------------
! initialize ESMF framework
call ESMF_TestStart(ESMF_SRCLINE, rc=rc)
if (rc /= ESMF_SUCCESS) call ESMF_Finalize(endflag=ESMF_END_ABORT)
! ----------------------------------------------------------------------------
! Calendar Interval tests
! ----------------------------------------------------------------------------
! initialize calendars
gregorianCalendar = ESMF_CalendarCreate(ESMF_CALKIND_GREGORIAN, &
name="Gregorian", rc=rc)
julianCalendar = ESMF_CalendarCreate(ESMF_CALKIND_JULIAN, &
name="Julian", rc=rc)
noLeapCalendar = ESMF_CalendarCreate(ESMF_CALKIND_NOLEAP, &
name="No Leap", rc=rc)
day360Calendar = ESMF_CalendarCreate(ESMF_CALKIND_360DAY, &
name="360 Day", rc=rc)
julianDayCalendar = ESMF_CalendarCreate(ESMF_CALKIND_JULIANDAY, &
name="Julian Day", rc=rc)
! ----------------------------------------------------------------------------
! Gregorian Leap year 2004 tests
! ----------------------------------------------------------------------------
!NEX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/29/2004 by mm=1 Test"
write(failMsg, *) " Did not return 2/29/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=29, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
#ifdef ESMF_TESTEXHAUSTIVE
! ----------------------------------------------------------------------------
!EX_UTest
! Testing TimeInterval Validation
write(name, *) "Time Interval Validate Test"
write(failMsg, *) " Did not return ESMF_SUCCESS"
call ESMF_TimeIntervalValidate(timeStep, rc=rc)
call ESMF_Test(( rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalAssignment(=)(timeinterval, timeinterval)
write(name, *) "Assign one timeinterval to another test"
write(failMsg, *) " Did not return timeStep2=timeStep, yy=3, mm=5, d=30, h=7, m=8, s=18 or ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=3, mm=5, d=30, h=7, m=8, s=18, rc=rc)
timeStep2 = timeStep ! exercise default F90 TimeInterval = assignment
call ESMF_TimeIntervalGet(timeStep2, yy=YY, mm=MM, d=D, &
h=H, m=M, s=S, rc=rc)
call ESMF_Test((timeStep2.eq.timeStep .and. &
YY.eq.3.and.MM.eq.5.and.D.eq.30.and. &
H.eq.7.and.M.eq.8.and.S.eq.18.and. &
rc.eq.ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!call ESMF_TimeIntervalPrint(timeStep2, rc=rc)
!call ESMF_TimeIntervalPrint(timeStep, rc=rc)
!print *, "timeStep2.eq.timeStep = ", timeStep2.eq.timeStep
!print *, "rc=", rc
!print *, " yy,mm,d,h,m,s = ", YY, ",", MM, ",", D, ",", H, ",", M, ",", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/29/2004 by mm= -1 Test"
write(failMsg, *) " Did not return 12/29/2003 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=29, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=-1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==12 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "Gregorian Calendar Interval decrement 3/31/2004 by mm=1 Test"
write(failMsg, *) " Did not return 2/29/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=3, dd=31, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "Gregorian Calendar Interval decrement 1/31/2004 by mm= -1 Test"
write(failMsg, *) " Did not return 2/29/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=31, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=-1, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, MM, "/", DD, "/", YY, " ", H, ":", M, ":", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/30/2004 by mm=1 Test"
write(failMsg, *) " Did not return 2/29/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=30, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/31/2004 by mm=1 Test"
write(failMsg, *) " Did not return 2/29/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=31, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/31/2004 by (mm=1, d=1) Test"
write(failMsg, *) " Did not return 3/1/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=31, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, d=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==3 .and. DD==1 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/31/2004 by mm=2 Test"
write(failMsg, *) " Did not return 3/31/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=31, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=2, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==3 .and. DD==31 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/31/2004 by mm=3 Test"
write(failMsg, *) " Did not return 4/30/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=31, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=3, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==4 .and. DD==30 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/31/2004 by mm=49 Test"
write(failMsg, *) " Did not return 2/29/2008 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=31, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=49, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2008 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "Gregorian Calendar Interval decrement 1/31/2004 by mm=49 Test"
write(failMsg, *) " Did not return 12/31/1999 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=31, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=49, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1999 .and. MM==12 .and. DD==31 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, MM, "/", DD, "/", YY, " ", H, ":", M, ":", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 2/28/2004 by d=2 Test"
write(failMsg, *) " Did not return 3/1/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=2, dd=28, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=2, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==3 .and. DD==1 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 2/29/2004 by yy=1 Test"
write(failMsg, *) " Did not return 2/28/2005 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=2, dd=29, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2005 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 12/1/2004 by (yy=2, mm=24, d=90) Test"
write(failMsg, *) " Did not return 3/1/2009 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=12, dd=1, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=2, mm=24, d=90, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2009 .and. MM==3 .and. DD==1 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(-)(timestep)
write(failMsg, *) "Should be yy=-2, mm=-24, d=-90 and ESMF_SUCCESS"
write(name, *) "Negate Time Step Test 1"
timeStep = -timeStep ! exercise TimeInterval - operator
call ESMF_TimeIntervalGet(timeStep, yy=years, mm=months, d=days, rc=rc)
call ESMF_Test((years.eq.-2.and.months.eq.-24.and.days.eq.-90.and. &
rc.eq.ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, " yy,mm,d = ", years, ",", months, ",", days
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 12/1/2004 by (yy= -2, mm=24, d= -90) Test"
write(failMsg, *) " Did not return 9/2/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=12, dd=1, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=-2, mm=24, d=-90, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==9 .and. DD==2 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(-)(timestep)
write(failMsg, *) "Should be yy=2, mm=-24, d=90 and ESMF_SUCCESS"
write(name, *) "Negate Time Step Test 2"
timeStep = -timeStep ! exercise TimeInterval - operator
call ESMF_TimeIntervalGet(timeStep, yy=years, mm=months, d=days, rc=rc)
call ESMF_Test((years.eq.2.and.months.eq.-24.and.days.eq.90.and. &
rc.eq.ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, " yy,mm,d = ", years, ",", months, ",", days
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "Gregorian Calendar Interval decrement 3/1/2004 by (yy=2, mm=24, d=90, h=13, m=62, s=68) Test"
write(failMsg, *) " Did not return 12/1/1999 22:14:50 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=3, dd=1, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=2, mm=24, d=90, h=13, m=62, s=68, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1999 .and. MM==12 .and. DD==1 .and. &
H==22 .and. M==14 .and. S==50 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(-)(timestep)
write(failMsg, *) "Should be yy=-2, mm=-24, d=-90, h=-14, m=-3, s=-8 and ESMF_SUCCESS"
write(name, *) "Negate Time Step Test 3"
timeStep = -timeStep ! exercise TimeInterval - operator
call ESMF_TimeIntervalGet(timeStep, yy=YY, mm=MM, d=D, &
h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY.eq.-2.and.MM.eq.-24.and.D.eq.-90.and. &
H.eq.-14.and.M.eq.-3.and.S.eq.-8.and. &
rc.eq.ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, " yy,mm,d,h,m,s = ", YY, ",", MM, ",", D, ",", H, ",", M, ",", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "Gregorian Calendar Interval decrement 3/1/2004 by (yy=2, mm=-24, d=90, h=-13, m=62, s=-68) Test"
write(failMsg, *) " Did not return 12/3/2003 00:17:06 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=3, dd=1, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=2, mm=-24, d=90, h=-13, m=62, s=-68, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==12 .and. DD==3 .and. &
H==0 .and. M==17 .and. S==6 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, MM, "/", DD, "/", YY, " ", H, ":", M, ":", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(-)(timestep)
write(failMsg, *) "Should be yy=-2, mm=24, d=-90, h=11, m=59, s=8 and ESMF_SUCCESS"
write(name, *) "Negate Time Step Test 4"
timeStep = -timeStep ! exercise TimeInterval - operator
call ESMF_TimeIntervalGet(timeStep, yy=YY, mm=MM, d=D, &
h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY.eq.-2.and.MM.eq.24.and.D.eq.-90.and. &
H.eq.11.and.M.eq.59.and.S.eq.8.and. &
rc.eq.ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, " yy,mm,d,h,m,s = ", YY, ",", MM, ",", D, ",", H, ",", M, ",", S
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval conversion (1 year to days) Test"
write(failMsg, *) " Did not return 366 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=1, rc=rc)
call ESMF_TimeIntervalGet(timeStep, d=days, startTimeIn=startTime, rc=rc)
call ESMF_Test((days==366.and.rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "days = ", days
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval conversion (2 years to months) Test"
write(failMsg, *) " Did not return 24 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=2, rc=rc)
call ESMF_TimeIntervalGet(timeStep, mm=months, &
calendarIn=gregorianCalendar, rc=rc)
call ESMF_Test((months==24.and.rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "months = ", months
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval conversion (months to years) Test"
write(failMsg, *) " Did not return 3 years and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, mm=36, rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, &
calendarIn=gregorianCalendar, rc=rc)
call ESMF_Test((years==3.and.rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "years = ", years
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval conversion (2 months to days) Test"
write(failMsg, *) " Did not return 60 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=2, dd=1, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=2, rc=rc)
call ESMF_TimeIntervalGet(timeStep, d=days, startTimeIn=startTime, rc=rc)
call ESMF_Test((days==60.and.rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "days = ", days
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval conversion (days to months) Test"
write(failMsg, *) " Did not return 2 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=1, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=60, rc=rc)
call ESMF_TimeIntervalGet(timeStep, mm=months, startTimeIn=startTime, &
timeString=timeString, rc=rc)
call ESMF_Test((months==2 .and. timeString=="P0Y0M60DT0H0M0S" .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "months = ", months
!print *, "timeStep = ", timeString
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval conversion (730 days to years and days) Test"
write(failMsg, *) " Did not return years=1, days=364 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=3, dd=31, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=730, rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, d=days, &
startTimeIn=startTime, rc=rc)
call ESMF_Test((years==1 .and. days==364 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "years, days = ", years, days
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval conversion (731 days to years and days) Test"
write(failMsg, *) " Did not return years=2, days=0 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2002, mm=3, dd=31, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=731, rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, d=days, &
startTimeIn=startTime, rc=rc)
call ESMF_Test((years==2 .and. days==0 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "years, days = ", years, days
! ----------------------------------------------------------------------------
! Gregorian Non-leap year 2003 tests
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/29/2003 by mm=1 Test"
write(failMsg, *) " Did not return 2/28/2003 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=1, dd=29, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/30/2003 by mm=1 Test"
write(failMsg, *) " Did not return 2/28/2003 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=1, dd=30, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/31/2003 by mm=1 Test"
write(failMsg, *) " Did not return 2/28/2003 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=1, dd=31, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/31/2003 by (mm=1, d=1) Test"
write(failMsg, *) " Did not return 3/1/2003 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=1, dd=31, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, d=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==3 .and. DD==1 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/31/2003 by mm=2 Test"
write(failMsg, *) " Did not return 3/31/2003 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=1, dd=31, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=2, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==3 .and. DD==31 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/31/2003 by mm=3 Test"
write(failMsg, *) " Did not return 4/30/2003 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=1, dd=31, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=3, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==4 .and. DD==30 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 1/31/2003 by mm=49 Test"
write(failMsg, *) " Did not return 2/28/2007 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=1, dd=31, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=49, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2007 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 2/28/2003 by d=2 Test"
write(failMsg, *) " Did not return 3/2/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=2, dd=28, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=2, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==3 .and. DD==2 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 2/28/2003 by yy=1 Test"
write(failMsg, *) " Did not return 2/28/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=2, dd=28, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 12/1/2003 by (yy=2, mm=24, d=90) Test"
write(failMsg, *) " Did not return 2/29/2008 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=12, dd=1, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=2, mm=24, d=90, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2008 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval conversion (1 year to days) Test"
write(failMsg, *) " Did not return 365 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=1, rc=rc)
call ESMF_TimeIntervalGet(timeStep, d=days, startTimeIn=startTime, rc=rc)
call ESMF_Test((days==365.and.rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "days = ", days
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval conversion (2 years to months) Test"
write(failMsg, *) " Did not return 24 months or ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=2, calendar=gregorianCalendar, &
rc=rc)
call ESMF_TimeIntervalGet(timeStep, mm=months, rc=rc)
call ESMF_Test((months==24 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "months = ", months
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval conversion (months to years) Test"
write(failMsg, *) " Did not return 4 years or ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, mm=48, calendar=gregorianCalendar, &
rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, rc=rc)
call ESMF_Test((years==4 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "years = ", years
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval conversion (2 months to days) Test"
write(failMsg, *) " Did not return 59 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=2, dd=1, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=2, rc=rc)
call ESMF_TimeIntervalGet(timeStep, d=days, startTimeIn=startTime, rc=rc)
call ESMF_Test((days==59.and.rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "days = ", days
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval conversion (days to months) Test"
write(failMsg, *) " Did not return 2 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=2, dd=1, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=59, rc=rc)
call ESMF_TimeIntervalGet(timeStep, mm=months, startTimeIn=startTime, &
rc=rc)
call ESMF_Test((months==2.and.rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "months = ", months
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval conversion (730 days to years and days) Test"
write(failMsg, *) " Did not return years=2, days=0 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2005, mm=3, dd=31, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=730, rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, d=days, &
startTimeIn=startTime, rc=rc)
call ESMF_Test((years==2 .and. days==0 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "years, days = ", years, days
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval conversion (731 days to years and days) Test"
write(failMsg, *) " Did not return years=2, days=1 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2001, mm=1, dd=31, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=731, rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, d=days, &
startTimeIn=startTime, rc=rc)
call ESMF_Test((years==2 .and. days==1 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "years, days = ", years, days
! ----------------------------------------------------------------------------
! General Gregorian Calendar tests
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Gregorian Calendar Interval increment 12/31/2004 by d=1 Test"
write(failMsg, *) " Did not return 1/1/2005 12:17:58 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=12, dd=31, h=12, m=17, s=58, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2005 .and. MM==1 .and. DD==1 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, MM, "/", DD, "/", YY, " ", H, ":", M, ":", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(==)(timestep, timestep)
write(name, *) "Gregorian Calendar Interval == test"
write(failMsg, *) " Did not return true"
call ESMF_TimeIntervalSet(timeStep, yy=3, mm=4, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, yy=2, mm=16, &
calendar=gregorianCalendar, rc=rc)
call ESMF_Test((timeStep == timeStep2), name, failMsg, result, &
ESMF_SRCLINE)
! ^-- exercise TimeInterval == operator
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval Abs test"
write(failMsg, *) " Did not return mm=32, d=10 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=-3, mm=4, d=-10, &
calendar=gregorianCalendar, rc=rc)
timeStep2 = ESMF_TimeIntervalAbsValue(timeStep)
call ESMF_TimeIntervalGet(timeStep2, mm=months, d=days, rc=rc)
call ESMF_Test((months==32 .and. days==10 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "months, days, rc = ", months, days, rc
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Gregorian Calendar Interval Negative Abs test"
write(failMsg, *) " Did not return mm=-32, d=-10 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=3, mm=-4, d=10, &
calendar=gregorianCalendar, rc=rc)
timeStep2 = ESMF_TimeIntervalNegAbsValue(timeStep)
call ESMF_TimeIntervalGet(timeStep2, mm=months, d=days, rc=rc)
call ESMF_Test((months==-32 .and. days==-10 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "months, days, rc = ", months, days, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalFunction(MOD)(timestep, timestep)
write(name, *) "Gregorian Calendar Interval Modulus test 1"
write(failMsg, *) " Did not return mm=10 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=3, mm=4, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, yy=2, mm=6, &
calendar=gregorianCalendar, rc=rc)
timeStep3 = MOD(timeStep, timeStep2) ! exercise TimeInterval MOD operator
call ESMF_TimeIntervalGet(timeStep3, mm=months, rc=rc)
call ESMF_Test((months==10 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "months, rc = ", months, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalFunction(MOD)(timestep, timestep)
write(name, *) "Gregorian Calendar Interval Modulus test 2"
write(failMsg, *) " Did not return yy=2 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=5, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, yy=3, &
calendar=gregorianCalendar, rc=rc)
timeStep3 = MOD(timeStep, timeStep2) ! exercise TimeInterval MOD operator
call ESMF_TimeIntervalGet(timeStep3, yy=years, rc=rc)
call ESMF_Test((years==2 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "years, rc = ", years, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalFunction(MOD)(timestep, timestep)
write(name, *) "Gregorian Calendar Interval Modulus test 3"
write(failMsg, *) " Did not return d=7 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, d=15, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, d=8, &
calendar=gregorianCalendar, rc=rc)
timeStep3 = MOD(timeStep, timeStep2) ! exercise TimeInterval MOD operator
call ESMF_TimeIntervalGet(timeStep3, d=days, rc=rc)
call ESMF_Test((days==7 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "days, rc = ", days, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/)(timestep, timestep)
write(name, *) "Gregorian Calendar Interval ratio test 1"
write(failMsg, *) " Did not return 0.5 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, d=5, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, d=10, &
calendar=gregorianCalendar, rc=rc)
ratio = timeStep / timeStep2 ! exercise TimeInterval / operator
call ESMF_Test((abs(ratio-.5) < 1d-15 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "ratio, rc = ", ratio, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/)(timestep, timestep)
write(name, *) "Gregorian Calendar Interval ratio test 2"
write(failMsg, *) " Did not return 0.25 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=3, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, yy=12, &
calendar=gregorianCalendar, rc=rc)
ratio = timeStep / timeStep2 ! exercise TimeInterval / operator
call ESMF_Test((abs(ratio-.25) < 1d-15 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "ratio, rc = ", ratio, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/)(timestep, timestep)
write(name, *) "Gregorian Calendar Interval ratio test 3"
write(failMsg, *) " Did not return 0.75 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, mm=6, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, mm=8, &
calendar=gregorianCalendar, rc=rc)
ratio = timeStep / timeStep2 ! exercise TimeInterval / operator
call ESMF_Test((abs(ratio-.75) < 1d-15 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "ratio, rc = ", ratio, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/)(timestep, timestep)
write(name, *) "Gregorian Calendar Interval ratio test 4"
write(failMsg, *) " Did not return 1.5 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=3, &
calendar=gregorianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, mm=24, &
calendar=gregorianCalendar, rc=rc)
ratio = timeStep / timeStep2 ! exercise TimeInterval / operator
call ESMF_Test((abs(ratio-1.5) < 1d-14 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "ratio, rc = ", ratio, rc
! ----------------------------------------------------------------------------
! TimeintervalGet(*_r8) floating point tests
! ----------------------------------------------------------------------------
!EX_UTest
! Suggested by Erik Kluzek/CCSM in Support Request #1518335
! Testing ESMF_TimeOperator(-)(time, time)
write(name, *) "Get floating point days"
write(failMsg, *) " Did not return 722502.253518553"
! 1978 2/22 time 06:05:04.003002001 Z
call ESMF_TimeSet(time1, yy=1978, mm=2, dd=22, h=6, m=5, s=4, &
ms=3, us=2, ns=1, &
calendar=gregorianCalendar, rc=rc)
! 0000 1/01 time 00:00:00 Z
call ESMF_TimeSet(time2, yy=0, mm=1, dd=1, &
calendar=gregorianCalendar, rc=rc)
diffTime = time1 - time2 ! exercise Time - operator
call ESMF_TimeIntervalGet(diffTime, d_r8=days_r8, rc=rc)
!call ESMF_TimeIntervalPrint(diffTime, rc=rc)
call ESMF_Test((abs(days_r8 - 722502.253518553d0) < 1d-9 .and. &
rc.eq.ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "Diff time in floating point days = ", days_r8, " rc = ", rc
! ----------------------------------------------------------------------------
! The following tests the double-to-rational fraction conversion and back
! ----------------------------------------------------------------------------
! days_r8
! ----------------------------------------------------------------------------
!EX_UTest
! Suggested by Chris Hill in Support Requests #1660968, 1660970
write(name, *) "Set/Get floating point days"
write(failMsg, *) " Did not return 1.5"
call ESMF_TimeIntervalSet(timeInterval1, d_r8=1.5d0, &
calendar=gregorianCalendar, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, d_r8=days_r8 )
call ESMF_Test(days_r8.eq.1.5d0 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' days_r8 = ', days_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set hours, minutes, seconds/get floating point days"
write(failMsg, *) " Did not return 0.2272337962962963"
call ESMF_TimeIntervalSet(timeInterval1, h=5, m=27, s=13, &
calendar=gregorianCalendar, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, d_r8=days_r8 )
call ESMF_Test(abs(days_r8 - 0.2272337962962963d0) < 1d-15 .and. &
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' days_r8 = ', days_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set floating point days, get hours, minutes, seconds"
write(failMsg, *) " Did not return h=5, m=27, s=13"
call ESMF_TimeIntervalSet(timeInterval1, d_r8=0.22723379629629629629d0, &
calendar=gregorianCalendar, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, h=H, m=M,s=S, rc=rc)
call ESMF_Test(H.eq.5.and.M.eq.27.and.S.eq.13 .and. &
! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' H, M, S = ', H, ":", M, ":", S
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set floating point and integer days, get hours, minutes, seconds"
write(failMsg, *) " Did not return h=29, m=27, s=13"
call ESMF_TimeIntervalSet(timeInterval1, d=1, &
d_r8=0.22723379629629629629d0, &
calendar=gregorianCalendar, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, h=H, m=M,s=S, rc=rc)
call ESMF_Test(H.eq.29.and.M.eq.27.and.S.eq.13 .and. &
! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' H, M, S = ', H, ":", M, ":", S
! ----------------------------------------------------------------------------
! seconds_r8
! ----------------------------------------------------------------------------
!EX_UTest
! Suggested by Chris Hill in Support Requests #1660968, 1660970
write(name, *) "Set/Get floating point seconds, 1.5"
write(failMsg, *) " Did not return 1.5"
call ESMF_TimeIntervalSet(timeInterval1, s_r8=1.5d0, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(sec_out_r8.eq.1.5d0 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, 0.125 (1/8)"
write(failMsg, *) " Did not return 0.125"
call ESMF_TimeIntervalSet(timeInterval1, s_r8=0.125d0, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(sec_out_r8.eq.0.125d0 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, 0.5625 (9/16)"
write(failMsg, *) " Did not return 0.5625"
sec_in_r8 = 9.0d0/16.0d0
call ESMF_TimeIntervalSet(timeInterval1, s_r8=sec_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(sec_out_r8.eq.0.5625d0 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, 0.7142857142857143 (5/7)"
write(failMsg, *) " Did not return 0.7142857142857143"
sec_in_r8 = 5.0d0/7.0d0
call ESMF_TimeIntervalSet(timeInterval1, s_r8=sec_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(sec_out_r8.eq.0.7142857142857143d0 .and. &
! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, 0.66666666666666667 (2/3)"
write(failMsg, *) " Did not return 0.66666666666666667"
sec_in_r8 = 2.0d0/3.0d0
call ESMF_TimeIntervalSet(timeInterval1, s_r8=sec_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(sec_out_r8.eq.0.66666666666666667d0 .and. &
! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, 0.66666666666666667 (2/3)"
write(failMsg, *) " Did not return 0.66666666666666667"
sec_in_r8 = 0.66666666666666667d0
call ESMF_TimeIntervalSet(timeInterval1, s_r8=sec_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(sec_out_r8.eq.0.66666666666666667d0 .and. &
! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, 0.1111111111111111 (1/9)"
write(failMsg, *) " Did not return 0.1111111111111111"
sec_in_r8 = 0.1111111111111111d0
call ESMF_TimeIntervalSet(timeInterval1, s_r8=sec_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(sec_out_r8.eq.0.1111111111111111d0 .and. &
! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, 0.001 (1 ms)"
write(failMsg, *) " Did not return 0.001"
call ESMF_TimeIntervalSet(timeInterval1, s_r8=0.001d0, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(sec_out_r8.eq.0.001d0 .and. &
! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, 0.000001 (1 us)"
write(failMsg, *) " Did not return 0.000001"
call ESMF_TimeIntervalSet(timeInterval1, s_r8=0.000001d0, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(sec_out_r8.eq.0.000001d0 .and. &
! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, 0.000000001 (1 ns)"
write(failMsg, *) " Did not return 0.000000001"
call ESMF_TimeIntervalSet(timeInterval1, s_r8=0.000000001d0, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(sec_out_r8.eq.0.000000001d0 .and. &
! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, 1.0d-9"
write(failMsg, *) " Did not return 1.0d-9"
!TODO: 1.0d-17 smallest when fraction n/d becomes ESMF_I8
sec_in_r8 = 1.0d-9
call ESMF_TimeIntervalSet(timeInterval1, s_r8=sec_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(sec_out_r8.eq.sec_in_r8 .and. &
! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, 6.0"
write(failMsg, *) " Did not return 6.0"
sec_in_r8 = 6.0d0
call ESMF_TimeIntervalSet(timeInterval1, s_r8=sec_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(sec_out_r8.eq.6.0d0 .and. &
! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, pi, constant"
write(failMsg, *) " Did not return 3.141592653589793"
sec_in_r8 = 3.141592653589793d0
call ESMF_TimeIntervalSet(timeInterval1, s_r8=sec_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(abs(sec_out_r8 - sec_in_r8) < 1d-15 .and. &
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_in_r8 = ', sec_in_r8
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, pi, computed"
write(failMsg, *) " Did not return -3.141592653589793"
sec_in_r8 = -acos(-1.0d0)
call ESMF_TimeIntervalSet(timeInterval1, s_r8=sec_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(abs(sec_out_r8 - sec_in_r8) < 1d-15 .and. &
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_in_r8 = ', sec_in_r8
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, -e, constant"
write(failMsg, *) " Did not return -2.718281828459045"
sec_in_r8 = -2.718281828459045d0
call ESMF_TimeIntervalSet(timeInterval1, s_r8=sec_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(abs(sec_out_r8 - sec_in_r8) < 1d-15 .and. &
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_in_r8 = ', sec_in_r8
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, e, computed"
write(failMsg, *) " Did not return 2.718281828459045"
sec_in_r8 = exp(1.0d0)
call ESMF_TimeIntervalSet(timeInterval1, s_r8=sec_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(abs(sec_out_r8 - sec_in_r8) < 1d-15 .and. &
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_in_r8 = ', sec_in_r8
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, golden ratio"
write(failMsg, *) " Did not return 1.618033988749895"
sec_in_r8 = (1.0d0 + sqrt(5.0d0))/2.0d0
call ESMF_TimeIntervalSet(timeInterval1, s_r8=sec_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(abs(sec_out_r8 - sec_in_r8) < 1d-15 .and. &
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_in_r8 = ', sec_in_r8
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, square root of 2"
write(failMsg, *) " Did not return 1.414213562373095"
sec_in_r8 = sqrt(2.0d0)
call ESMF_TimeIntervalSet(timeInterval1, s_r8=sec_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(abs(sec_out_r8 - sec_in_r8) < 1d-15 .and. &
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_in_r8 = ', sec_in_r8
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point seconds, negative square root of 3"
write(failMsg, *) " Did not return -1.732050807568877"
sec_in_r8 = -sqrt(3.0d0)
call ESMF_TimeIntervalSet(timeInterval1, s_r8=sec_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s_r8=sec_out_r8 )
call ESMF_Test(abs(sec_out_r8 - sec_in_r8) < 1d-15 .and. &
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' sec_in_r8 = ', sec_in_r8
!print *, ' sec_out_r8 = ', sec_out_r8
! ----------------------------------------------------------------------------
! hours_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point hours, 1.25"
write(failMsg, *) " Did not return 1.25"
call ESMF_TimeIntervalSet(timeInterval1, h_r8=1.25d0, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, h_r8=hr_out_r8 )
call ESMF_Test(hr_out_r8.eq.1.25d0 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' hr_out_r8 = ', hr_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point hours, 2 1/3"
write(failMsg, *) " Did not return 2.3333333333333333"
hr_in_r8 = 2.3333333333333333d0
call ESMF_TimeIntervalSet(timeInterval1, h_r8=hr_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, h_r8=hr_out_r8 )
call ESMF_Test(hr_out_r8.eq.hr_in_r8 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' hr_in_r8 = ', hr_in_r8
!print *, ' hr_out_r8 = ', hr_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point hours, 1/60"
write(failMsg, *) " Did not return 0.016666666666666667"
hr_in_r8 = 1.0d0/60.0d0
call ESMF_TimeIntervalSet(timeInterval1, h_r8=hr_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, h_r8=hr_out_r8 )
call ESMF_Test(hr_out_r8.eq.hr_in_r8 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' hr_in_r8 = ', hr_in_r8
!print *, ' hr_out_r8 = ', hr_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point hours, 2/7"
write(failMsg, *) " Did not return 0.2857142857142857"
hr_in_r8 = 2.0d0/7.0d0
call ESMF_TimeIntervalSet(timeInterval1, h_r8=hr_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, h_r8=hr_out_r8 )
call ESMF_Test(hr_out_r8.eq.hr_in_r8 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' hr_in_r8 = ', hr_in_r8
!print *, ' hr_out_r8 = ', hr_out_r8
!print *, ' hr_out_r8 - hr_in_r8 = ', hr_out_r8 - hr_in_r8
!print *, ' rc = ', rc
! ----------------------------------------------------------------------------
! minutes_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point minutes, 1/5"
write(failMsg, *) " Did not return 0.2"
call ESMF_TimeIntervalSet(timeInterval1, m_r8=0.2d0, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, m_r8=min_out_r8 )
call ESMF_Test(min_out_r8.eq.0.2d0 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' min_out_r8 = ', min_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point minutes, 3 1/10"
write(failMsg, *) " Did not return 3.1"
call ESMF_TimeIntervalSet(timeInterval1, m_r8=3.1d0, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, m_r8=min_out_r8 )
call ESMF_Test(min_out_r8.eq.3.1d0 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' min_out_r8 = ', min_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point minutes, 1/6"
write(failMsg, *) " Did not return 0.1666666666666666"
min_in_r8 = 1.0d0 / 6.0d0
call ESMF_TimeIntervalSet(timeInterval1, m_r8=min_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, m_r8=min_out_r8 )
call ESMF_Test(min_out_r8.eq.min_in_r8 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' min_in_r8 = ', min_in_r8
!print *, ' min_out_r8 = ', min_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point minutes, 7/9"
write(failMsg, *) " Did not return 0.77777777777777778"
min_in_r8 = 7.0d0 / 9.0d0
call ESMF_TimeIntervalSet(timeInterval1, m_r8=min_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, m_r8=min_out_r8 )
call ESMF_Test(min_out_r8.eq.min_in_r8 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' min_in_r8 = ', min_in_r8
!print *, ' min_out_r8 = ', min_out_r8
! ----------------------------------------------------------------------------
! milliseconds_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point milliseconds, 3.75"
write(failMsg, *) " Did not return 3.75"
call ESMF_TimeIntervalSet(timeInterval1, ms_r8=3.75d0, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, ms_r8=ms_out_r8 )
call ESMF_Test(ms_out_r8.eq.3.75d0 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' ms_out_r8 = ', ms_out_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point milliseconds, -8 21/23"
write(failMsg, *) " Did not return -8.9130434782608696"
ms_in_r8 = -8.0d0 - 21.0d0 / 23.0d0
!print *, ' ms_in_r8 = ', ms_in_r8
call ESMF_TimeIntervalSet(timeInterval1, ms_r8=ms_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, ms_r8=ms_out_r8 )
call ESMF_Test(ms_out_r8.eq.ms_in_r8 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' ms_in_r8 = ', ms_in_r8
!print *, ' ms_out_r8 = ', ms_out_r8
! ----------------------------------------------------------------------------
! microseconds_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point microseconds, 7 1/3"
write(failMsg, *) " Did not return 7.333333333333333"
us_in_r8 = 7.0d0 + 1.0d0 / 3.0d0
call ESMF_TimeIntervalSet(timeInterval1, us_r8=us_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, us_r8=us_out_r8 )
call ESMF_Test(us_out_r8.eq.us_in_r8 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' us_in_r8 = ', us_in_r8
!print *, ' us_out_r8 = ', us_out_r8
! ----------------------------------------------------------------------------
! nanoseconds_r8
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set/Get floating point nanoseconds, 9 4/11"
write(failMsg, *) " Did not return 9.363636363636363"
ns_in_r8 = 9.0d0 + 4.0d0 / 11.0d0
call ESMF_TimeIntervalSet(timeInterval1, ns_r8=ns_in_r8, rc=rc)
!call ESMF_TimeIntervalPrint(timeInterval1, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, ns_r8=ns_out_r8 )
call ESMF_Test(ns_out_r8.eq.ns_in_r8 .and. & ! bitwise identical!
rc.eq.ESMF_SUCCESS, name, failMsg, result, ESMF_SRCLINE)
!print *, ' ns_in_r8 = ', ns_in_r8
!print *, ' ns_out_r8 = ', ns_out_r8
! ----------------------------------------------------------------------------
! Julian Leap year 1900 tests
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/29/1900 by mm=1 Test"
write(failMsg, *) " Did not return 2/29/1900 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=1, dd=29, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1900 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing TimeInterval Validation
write(name, *) "Time Interval Validate Test"
write(failMsg, *) " Did not return ESMF_SUCCESS"
call ESMF_TimeIntervalValidate(timeStep, rc=rc)
call ESMF_Test(( rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/29/1900 by mm= -1 Test"
write(failMsg, *) " Did not return 12/29/1899 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=1, dd=29, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=-1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1899 .and. MM==12 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "Julian Calendar Interval decrement 3/31/1900 by mm=1 Test"
write(failMsg, *) " Did not return 2/29/1900 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=3, dd=31, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1900 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "Julian Calendar Interval decrement 1/31/1900 by mm= -1 Test"
write(failMsg, *) " Did not return 2/29/1900 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=1, dd=31, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=-1, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1900 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, MM, "/", DD, "/", YY, " ", H, ":", M, ":", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/30/1900 by mm=1 Test"
write(failMsg, *) " Did not return 2/29/1900 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=1, dd=30, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1900 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/31/1900 by mm=1 Test"
write(failMsg, *) " Did not return 2/29/1900 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=1, dd=31, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1900 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/31/1900 by (mm=1, d=1) Test"
write(failMsg, *) " Did not return 3/1/1900 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=1, dd=31, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, d=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1900 .and. MM==3 .and. DD==1 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/31/1900 by mm=2 Test"
write(failMsg, *) " Did not return 3/31/1900 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=1, dd=31, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=2, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1900 .and. MM==3 .and. DD==31 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/31/1900 by mm=3 Test"
write(failMsg, *) " Did not return 4/30/1900 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=1, dd=31, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=3, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1900 .and. MM==4 .and. DD==30 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/31/1900 by mm=49 Test"
write(failMsg, *) " Did not return 2/29/1904 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=1, dd=31, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=49, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1904 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "Julian Calendar Interval decrement 1/31/1900 by mm=49 Test"
write(failMsg, *) " Did not return 12/31/1895 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=1, dd=31, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=49, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1895 .and. MM==12 .and. DD==31 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, MM, "/", DD, "/", YY, " ", H, ":", M, ":", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 2/28/1900 by d=2 Test"
write(failMsg, *) " Did not return 3/1/1900 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=2, dd=28, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=2, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1900 .and. MM==3 .and. DD==1 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 2/29/1900 by yy=1 Test"
write(failMsg, *) " Did not return 2/28/1901 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=2, dd=29, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1901 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 12/1/1900 by (yy=2, mm=24, d=90) Test"
write(failMsg, *) " Did not return 3/1/1905 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=12, dd=1, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=2, mm=24, d=90, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1905 .and. MM==3 .and. DD==1 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 12/1/1900 by (yy= -2, mm=24, d= -90) Test"
write(failMsg, *) " Did not return 9/2/1900 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=12, dd=1, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=-2, mm=24, d=-90, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1900 .and. MM==9 .and. DD==2 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "Julian Calendar Interval decrement 3/1/1900 by (yy=2, mm=24, d=90, h=13, m=62, s=68) Test"
write(failMsg, *) " Did not return 12/1/1895 22:14:50 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=3, dd=1, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=2, mm=24, d=90, h=13, m=62, s=68, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1895 .and. MM==12 .and. DD==1 .and. &
H==22 .and. M==14 .and. S==50 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "Julian Calendar Interval decrement 3/1/1900 by (yy=2, mm=-24, d=90, h=-13, m=62, s=-68) Test"
write(failMsg, *) " Did not return 12/3/1899 00:17:06 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=3, dd=1, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=2, mm=-24, d=90, h=-13, m=62, s=-68, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1899 .and. MM==12 .and. DD==3 .and. &
H==0 .and. M==17 .and. S==6 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, MM, "/", DD, "/", YY, " ", H, ":", M, ":", S
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval conversion (1 year to days) Test"
write(failMsg, *) " Did not return 366 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=1, rc=rc)
call ESMF_TimeIntervalGet(timeStep, d=days, startTimeIn=startTime, rc=rc)
call ESMF_Test((days==366.and.rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "days = ", days
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval conversion (2 years to months) Test"
write(failMsg, *) " Did not return 24 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=2, rc=rc)
call ESMF_TimeIntervalGet(timeStep, mm=months, &
calendarIn=julianCalendar, rc=rc)
call ESMF_Test((months==24.and.rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "months = ", months
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval conversion (months to years) Test"
write(failMsg, *) " Did not return 3 years and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, mm=36, rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, &
calendarIn=julianCalendar, rc=rc)
call ESMF_Test((years==3.and.rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "years = ", years
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval conversion (2 months to days) Test"
write(failMsg, *) " Did not return 60 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=2, dd=1, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=2, rc=rc)
call ESMF_TimeIntervalGet(timeStep, d=days, startTimeIn=startTime, rc=rc)
call ESMF_Test((days==60.and.rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "days = ", days
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval conversion (days to months) Test"
write(failMsg, *) " Did not return 2 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=1, dd=1, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=60, rc=rc)
call ESMF_TimeIntervalGet(timeStep, mm=months, startTimeIn=startTime, &
timeString=timeString, rc=rc)
call ESMF_Test((months==2 .and. timeString=="P0Y0M60DT0H0M0S" .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "months = ", months
!print *, "timeStep = ", timeString
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval conversion (730 days to years and days) Test"
write(failMsg, *) " Did not return years=1, days=364 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1899, mm=3, dd=31, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=730, rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, d=days, &
startTimeIn=startTime, rc=rc)
call ESMF_Test((years==1 .and. days==364 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "years, days = ", years, days
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval conversion (731 days to years and days) Test"
write(failMsg, *) " Did not return years=2, days=0 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2002, mm=3, dd=31, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=731, rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, d=days, &
startTimeIn=startTime, rc=rc)
call ESMF_Test((years==2 .and. days==0 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "years, days = ", years, days
! ----------------------------------------------------------------------------
! Julian Non-leap year 2003 tests
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/29/2003 by mm=1 Test"
write(failMsg, *) " Did not return 2/28/2003 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=1, dd=29, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/30/2003 by mm=1 Test"
write(failMsg, *) " Did not return 2/28/2003 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=1, dd=30, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/31/2003 by mm=1 Test"
write(failMsg, *) " Did not return 2/28/2003 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=1, dd=31, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/31/2003 by (mm=1, d=1) Test"
write(failMsg, *) " Did not return 3/1/2003 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=1, dd=31, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, d=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==3 .and. DD==1 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/31/2003 by mm=2 Test"
write(failMsg, *) " Did not return 3/31/2003 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=1, dd=31, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=2, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==3 .and. DD==31 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/31/2003 by mm=3 Test"
write(failMsg, *) " Did not return 4/30/2003 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=1, dd=31, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=3, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==4 .and. DD==30 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 1/31/2003 by mm=49 Test"
write(failMsg, *) " Did not return 2/28/2007 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=1, dd=31, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=49, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2007 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 2/28/2003 by d=2 Test"
write(failMsg, *) " Did not return 3/2/2003 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=2, dd=28, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=2, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2003 .and. MM==3 .and. DD==2 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 2/28/2003 by yy=1 Test"
write(failMsg, *) " Did not return 2/28/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=2, dd=28, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 12/1/2003 by (yy=2, mm=24, d=90) Test"
write(failMsg, *) " Did not return 2/29/2008 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=12, dd=1, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=2, mm=24, d=90, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2008 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval conversion (1 year to days) Test"
write(failMsg, *) " Did not return 365 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=1, rc=rc)
call ESMF_TimeIntervalGet(timeStep, d=days, startTimeIn=startTime, rc=rc)
call ESMF_Test((days==365.and.rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "days = ", days
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval conversion (2 years to months) Test"
write(failMsg, *) " Did not return 24 months or ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=2, calendar=julianCalendar, &
rc=rc)
call ESMF_TimeIntervalGet(timeStep, mm=months, rc=rc)
call ESMF_Test((months==24 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "months = ", months
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval conversion (months to years) Test"
write(failMsg, *) " Did not return 4 years or ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, mm=48, calendar=julianCalendar, &
rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, rc=rc)
call ESMF_Test((years==4 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "years = ", years
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval conversion (2 months to days) Test"
write(failMsg, *) " Did not return 59 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=2, dd=1, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=2, rc=rc)
call ESMF_TimeIntervalGet(timeStep, d=days, startTimeIn=startTime, rc=rc)
call ESMF_Test((days==59.and.rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "days = ", days
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval conversion (days to months) Test"
write(failMsg, *) " Did not return 2 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2003, mm=2, dd=1, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=59, rc=rc)
call ESMF_TimeIntervalGet(timeStep, mm=months, startTimeIn=startTime, &
rc=rc)
call ESMF_Test((months==2.and.rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "months = ", months
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval conversion (730 days to years and days) Test"
write(failMsg, *) " Did not return years=2, days=0 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2005, mm=3, dd=31, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=730, rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, d=days, &
startTimeIn=startTime, rc=rc)
call ESMF_Test((years==2 .and. days==0 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "years, days = ", years, days
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval conversion (731 days to years and days) Test"
write(failMsg, *) " Did not return years=2, days=1 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2001, mm=1, dd=31, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=731, rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, d=days, &
startTimeIn=startTime, rc=rc)
call ESMF_Test((years==2 .and. days==1 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "years, days = ", years, days
! ----------------------------------------------------------------------------
! General Julian Calendar tests
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Calendar Interval increment 12/31/1900 by d=1 Test"
write(failMsg, *) " Did not return 1/1/1901 12:17:58 and ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1900, mm=12, dd=31, h=12, m=17, s=58, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1901 .and. MM==1 .and. DD==1 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, MM, "/", DD, "/", YY, " ", H, ":", M, ":", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(==)(timestep, timestep)
write(name, *) "Julian Calendar Interval == test"
write(failMsg, *) " Did not return true"
call ESMF_TimeIntervalSet(timeStep, yy=3, mm=4, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, yy=2, mm=16, &
calendar=julianCalendar, rc=rc)
call ESMF_Test((timeStep == timeStep2), name, failMsg, result, &
ESMF_SRCLINE)
! ^-- exercise TimeInterval == operator
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval Abs test"
write(failMsg, *) " Did not return mm=32, d=10 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=-3, mm=4, d=-10, &
calendar=julianCalendar, rc=rc)
timeStep2 = ESMF_TimeIntervalAbsValue(timeStep)
call ESMF_TimeIntervalGet(timeStep2, mm=months, d=days, rc=rc)
call ESMF_Test((months==32 .and. days==10 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "months, days, rc = ", months, days, rc
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Calendar Interval Negative Abs test"
write(failMsg, *) " Did not return mm=-32, d=-10 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=3, mm=-4, d=10, &
calendar=julianCalendar, rc=rc)
timeStep2 = ESMF_TimeIntervalNegAbsValue(timeStep)
call ESMF_TimeIntervalGet(timeStep2, mm=months, d=days, rc=rc)
call ESMF_Test((months==-32 .and. days==-10 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "months, days, rc = ", months, days, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalFunction(MOD)(timestep, timestep)
write(name, *) "Julian Calendar Interval Modulus test 1"
write(failMsg, *) " Did not return mm=10 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=3, mm=4, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, yy=2, mm=6, &
calendar=julianCalendar, rc=rc)
timeStep3 = MOD(timeStep, timeStep2) ! exercise TimeInterval MOD operator
call ESMF_TimeIntervalGet(timeStep3, mm=months, rc=rc)
call ESMF_Test((months==10 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "months, rc = ", months, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalFunction(MOD)(timestep, timestep)
write(name, *) "Julian Calendar Interval Modulus test 2"
write(failMsg, *) " Did not return yy=2 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=5, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, yy=3, &
calendar=julianCalendar, rc=rc)
timeStep3 = MOD(timeStep, timeStep2) ! exercise TimeInterval MOD operator
call ESMF_TimeIntervalGet(timeStep3, yy=years, rc=rc)
call ESMF_Test((years==2 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "years, rc = ", years, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalFunction(MOD)(timestep, timestep)
write(name, *) "Julian Calendar Interval Modulus test 3"
write(failMsg, *) " Did not return d=7 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, d=15, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, d=8, &
calendar=julianCalendar, rc=rc)
timeStep3 = MOD(timeStep, timeStep2) ! exercise TimeInterval MOD operator
call ESMF_TimeIntervalGet(timeStep3, d=days, rc=rc)
call ESMF_Test((days==7 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "days, rc = ", days, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/)(timestep, timestep)
write(name, *) "Julian Calendar Interval ratio test 1"
write(failMsg, *) " Did not return 0.5 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, d=5, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, d=10, &
calendar=julianCalendar, rc=rc)
ratio = timeStep / timeStep2 ! exercise TimeInterval / operator
call ESMF_Test((abs(ratio-.5) < 1d-15 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "ratio, rc = ", ratio, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/)(timestep, timestep)
write(name, *) "Julian Calendar Interval ratio test 2"
write(failMsg, *) " Did not return 0.25 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=3, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, yy=12, &
calendar=julianCalendar, rc=rc)
ratio = timeStep / timeStep2 ! exercise TimeInterval / operator
call ESMF_Test((abs(ratio-.25) < 1d-15 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "ratio, rc = ", ratio, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/)(timestep, timestep)
write(name, *) "Julian Calendar Interval ratio test 3"
write(failMsg, *) " Did not return 0.75 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, mm=6, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, mm=8, &
calendar=julianCalendar, rc=rc)
ratio = timeStep / timeStep2 ! exercise TimeInterval / operator
call ESMF_Test((abs(ratio-.75) < 1d-15 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "ratio, rc = ", ratio, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/)(timestep, timestep)
write(name, *) "Julian Calendar Interval ratio test 4"
write(failMsg, *) " Did not return 1.5 and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=3, &
calendar=julianCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, mm=24, &
calendar=julianCalendar, rc=rc)
ratio = timeStep / timeStep2 ! exercise TimeInterval / operator
call ESMF_Test((abs(ratio-1.5) < 1d-15 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "ratio, rc = ", ratio, rc
! ----------------------------------------------------------------------------
! No Leap calendar 2004 tests
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "No Leap Calendar Interval increment 1/29/2004 by mm=1 Test"
write(failMsg, *) " Did not return 2/28/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=29, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "No Leap Calendar Interval increment 3/31/2004 by mm= -1 Test"
write(failMsg, *) " Did not return 2/28/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=3, dd=31, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=-1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, MM, "/", DD, "/", YY, " ", H, ":", M, ":", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "No Leap Calendar Interval decrement 3/31/2004 by mm=1 Test"
write(failMsg, *) " Did not return 2/28/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=3, dd=31, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "No Leap Calendar Interval decrement 1/31/2004 by mm= -1 Test"
write(failMsg, *) " Did not return 2/28/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=31, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=-1, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, MM, "/", DD, "/", YY, " ", H, ":", M, ":", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "No Leap Calendar Interval increment 1/30/2004 by mm=1 Test"
write(failMsg, *) " Did not return 2/28/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=30, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "No Leap Calendar Interval increment 1/31/2004 by mm=1 Test"
write(failMsg, *) " Did not return 2/28/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=31, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "No Leap Calendar Interval increment 1/31/2004 by (mm=1, d=1) Test"
write(failMsg, *) " Did not return 3/1/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=31, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, d=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==3 .and. DD==1 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "No Leap Calendar Interval increment 1/31/2004 by mm=2 Test"
write(failMsg, *) " Did not return 3/31/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=31, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=2, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==3 .and. DD==31 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "No Leap Calendar Interval increment 1/31/2004 by mm=3 Test"
write(failMsg, *) " Did not return 4/30/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=31, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=3, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==4 .and. DD==30 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "No Leap Calendar Interval increment 1/31/2004 by mm=49 Test"
write(failMsg, *) " Did not return 2/28/2008 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=31, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=49, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2008 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
! Testing the - operator
! resultTime = ESMF_TimeOperator(-)(time, timestep)
write(name, *) "No Leap Calendar Interval decrement 1/31/2004 by mm=49 Test"
write(failMsg, *) " Did not return 12/31/1999 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=31, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=49, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1999 .and. MM==12 .and. DD==31 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "No Leap Calendar Interval increment 2/28/2004 by d=2 Test"
write(failMsg, *) " Did not return 3/2/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=2, dd=28, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=2, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==3 .and. DD==2 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "No Leap Calendar Interval increment 2/28/2004 by yy=1 Test"
write(failMsg, *) " Did not return 2/28/2005 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=2, dd=28, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2005 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "No Leap Calendar Interval increment 12/1/2004 by (yy=2, mm=24, d=90) Test"
write(failMsg, *) " Did not return 3/1/2009 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=12, dd=1, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=2, mm=24, d=90, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2009 .and. MM==3 .and. DD==1 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "No Leap Calendar Interval decrement 3/1/2004 by (yy=2, mm=24, d=90, h=13, m=62, s=68) Test"
write(failMsg, *) " Did not return 11/30/1999 22:14:50 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=3, dd=1, h=12, m=17, s=58, &
calendar=noLeapCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=2, mm=24, d=90, h=13, m=62, s=68, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1999 .and. MM==11 .and. DD==30 .and. &
H==22 .and. M==14 .and. S==50 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "No Leap Calendar Interval conversion (1 year to days) Test"
write(failMsg, *) " Did not return 365 days or ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=1, rc=rc)
call ESMF_TimeIntervalGet(timeStep, d=days, &
calendarIn=noLeapCalendar, rc=rc)
call ESMF_Test((days==365 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "days = ", days
! ----------------------------------------------------------------------------
! 360 Day calendar 2004 tests
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "360 Day Calendar Interval increment 1/29/2004 by mm=1 Test"
write(failMsg, *) " Did not return 2/29/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=29, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "360 Day Calendar Interval increment 3/30/2004 by mm= -1 Test"
write(failMsg, *) " Did not return 2/30/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=3, dd=30, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=-1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==30 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "360 Day Calendar Interval decrement 3/30/2004 by mm=1 Test"
write(failMsg, *) " Did not return 2/30/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=3, dd=30, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==30 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "360 Day Calendar Interval decrement 1/30/2004 by mm= -1 Test"
write(failMsg, *) " Did not return 2/30/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=30, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=-1, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==30 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "360 Day Calendar Interval increment 1/30/2004 by mm=1 Test"
write(failMsg, *) " Did not return 2/30/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=30, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==30 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "360 Day Calendar Interval increment 1/30/2004 by (mm=1, d=1) Test"
write(failMsg, *) " Did not return 3/1/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=30, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=1, d=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==3 .and. DD==1 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "360 Day Calendar Interval increment 1/30/2004 by mm=2 Test"
write(failMsg, *) " Did not return 3/30/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=30, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=2, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==3 .and. DD==30 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "360 Day Calendar Interval increment 1/30/2004 by mm=3 Test"
write(failMsg, *) " Did not return 4/30/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=30, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=3, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==4 .and. DD==30 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "360 Day Calendar Interval increment 1/30/2004 by mm=49 Test"
write(failMsg, *) " Did not return 2/30/2008 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=30, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=49, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2008 .and. MM==2 .and. DD==30 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "360 Day Calendar Interval decrement 1/30/2004 by mm=49 Test"
write(failMsg, *) " Did not return 12/30/1999 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=1, dd=30, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, mm=49, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1999 .and. MM==12 .and. DD==30 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "360 Day Calendar Interval increment 2/28/2004 by d=2 Test"
write(failMsg, *) " Did not return 2/30/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=2, dd=28, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=2, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==30 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "360 Day Calendar Interval increment 3/1/2004 by d=-2 Test"
write(failMsg, *) " Did not return 2/29/2004 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=3, dd=1, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=-2, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2004 .and. MM==2 .and. DD==29 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
! From Brian Eaton/CCSM in #2992547
write(name, *) "360 Day Calendar Interval increment 1/1/1850 by d_r8=-1.0d0 Test"
write(failMsg, *) " Did not return 12/30/1849 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1850, mm=1, dd=1, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d_r8=-1.0d0, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, rc=rc)
call ESMF_Test((YY==1849 .and. MM==12 .and. DD==30 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "YY=", YY, " MM=", MM, " DD=", DD
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "360 Day Calendar Interval increment 1/1/1850 by d_r8=-1.25d0 Test"
write(failMsg, *) " Did not return 12/29/1849 18:00:00 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=1850, mm=1, dd=1, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d_r8=-1.25d0, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1849 .and. MM==12 .and. DD==29 .and. &
H==18 .and. M==0 .and. S==0 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "YY=", YY, " MM=", MM, " DD=", DD, " H=", H, " M=", M, " S=", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "360 Day Calendar Interval increment 3/1/2010 by d_r8=-1.1d0 Test"
write(failMsg, *) " Did not return 2/29/2010 21:36:00 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2010, mm=3, dd=1, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d_r8=-1.1d0, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2010 .and. MM==2 .and. DD==29 .and. &
H==21 .and. M==36 .and. S==0 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "YY=", YY, " MM=", MM, " DD=", DD, " H=", H, " M=", M, " S=", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "360 Day Calendar Interval increment 2/28/2010 by d_r8=(1.0+1.0/3.0) Test"
write(failMsg, *) " Did not return 2/29/2010 08:00:00 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2010, mm=2, dd=28, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d_r8=(1.0d0+1.0d0/3.0d0), rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2010 .and. MM==2 .and. DD==29 .and. &
H==8 .and. M==0 .and. S==0 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "YY=", YY, " MM=", MM, " DD=", DD, " H=", H, " M=", M, " S=", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "360 Day Calendar Interval increment 2/28/2004 by yy=1 Test"
write(failMsg, *) " Did not return 2/28/2005 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=2, dd=28, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=1, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2005 .and. MM==2 .and. DD==28 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "360 Day Calendar Interval increment 12/1/2004 by (yy=2, mm=24, d=90) Test"
write(failMsg, *) " Did not return 3/1/2009 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=12, dd=1, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=2, mm=24, d=90, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==2009 .and. MM==3 .and. DD==1 .and. &
H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing the - operator
! resultTime = ESMF_TimeOperator(-)(time, timestep)
write(name, *) "360 Day Calendar Interval decrement 3/1/2004 by (yy=2, mm=24, d=90, h=13, m=62, s=68) Test"
write(failMsg, *) " Did not return 11/30/1999 22:14:50 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, yy=2004, mm=3, dd=1, h=12, m=17, s=58, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, yy=2, mm=24, d=90, h=13, m=62, s=68, rc=rc)
startTime = startTime - timeStep
call ESMF_TimeGet(startTime, yy=YY, mm=MM, dd=DD, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1999 .and. MM==11 .and. DD==30 .and. &
H==22 .and. M==14 .and. S==50 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, MM, "/", DD, "/", YY, " ", H, ":", M, ":", S
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "360 Day Calendar Interval conversion (1 year to days) Test"
write(failMsg, *) " Did not return 360 days or ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=1, rc=rc)
call ESMF_TimeIntervalGet(timeStep, d=days, &
calendarIn=day360Calendar, rc=rc)
call ESMF_Test((days==360 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "days = ", days
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(==)(timestep, timestep)
write(name, *) "360-Day Calendar Interval == test"
write(failMsg, *) " Did not return true"
call ESMF_TimeIntervalSet(timeStep, yy=3, mm=4, d=730, &
calendar=day360Calendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, yy=4, mm=16, d=10, &
calendar=day360Calendar, rc=rc)
call ESMF_Test((timeStep == timeStep2), name, failMsg, result, &
ESMF_SRCLINE)
! ^-- exercise TimeInterval == operator
! ----------------------------------------------------------------------------
! Julian Day calendar interval tests
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Day Calendar Interval increment d=1200 by d=34 Test"
write(failMsg, *) " Did not return d=1234 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, d=1200, h=12, m=17, s=58, &
calendar=julianDayCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=34, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, d=days, h=H, m=M, s=S, rc=rc)
call ESMF_Test((days==1234 .and. H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "Julian Day Calendar Interval decrement d=4350 by d=29 Test"
write(failMsg, *) " Did not return d=4321 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, d=4350, h=12, m=17, s=58, &
calendar=julianDayCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=29, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, d=days, h=H, m=M, s=S, rc=rc)
call ESMF_Test((days==4321 .and. H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(+)(time, timestep)
write(name, *) "Julian Day Calendar Interval increment d=4350 by d=-29 Test"
write(failMsg, *) " Did not return d=4350 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, d=4350, h=12, m=17, s=58, &
calendar=julianDayCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=-29, rc=rc)
startTime = startTime + timeStep ! exercise Time + operator
call ESMF_TimeGet(startTime, d=days, h=H, m=M, s=S, rc=rc)
call ESMF_Test((days==4321 .and. H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeOperator(-)(time, timestep)
write(name, *) "Julian Day Calendar Interval decrement d=1200 by d=-34 Test"
write(failMsg, *) " Did not return d=1234 12:17:58 or ESMF_SUCCESS"
call ESMF_TimeSet(startTime, d=1200, h=12, m=17, s=58, &
calendar=julianDayCalendar, rc=rc)
call ESMF_TimeIntervalSet(timeStep, d=-34, rc=rc)
startTime = startTime - timeStep ! exercise Time - operator
call ESMF_TimeGet(startTime, d=days, h=H, m=M, s=S, rc=rc)
call ESMF_Test((days==1234 .and. H==12 .and. M==17 .and. S==58 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "days = ", days, " ", H, ":", M, ":", S
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Day Calendar Interval conversion (days to hours) Test"
write(failMsg, *) " Did not return 96 hours or ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, d=4, rc=rc)
call ESMF_TimeIntervalGet(timeStep, h=hours, &
calendarIn=julianDayCalendar, rc=rc)
call ESMF_Test((hours==96 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "hours = ", hours
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Julian Day Calendar Interval conversion (minutes to days) Test"
write(failMsg, *) " Did not return 2 days or ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, m=2880, rc=rc)
call ESMF_TimeIntervalGet(timeStep, d=days, &
calendarIn=julianDayCalendar, rc=rc)
call ESMF_Test((days==2 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "days = ", days
! ----------------------------------------------------------------------------
! Calendar Interval tests where days=86400 seconds
! ----------------------------------------------------------------------------
! ----------------------------------------------------------------------------
! can test with any of these types
call ESMF_CalendarSetDefault(ESMF_CALKIND_JULIANDAY, rc=rc)
!call ESMF_CalendarSetDefault(ESMF_CALKIND_GREGORIAN, rc=rc)
!call ESMF_CalendarSetDefault(ESMF_CALKIND_NOLEAP, rc=rc)
!call ESMF_CalendarSetDefault(ESMF_CALKIND_360DAY, rc=rc)
!EX_UTest
write(name, *) "Day Calendar Time Interval conversion with s=172800 (2 days) Test"
write(failMsg, *) "Days should = 2 and return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, s=172800, rc=rc)
call ESMF_TimeIntervalGet(timeStep, d=days, s=secs, rc=rc)
call ESMF_Test((days==2 .and. secs==0 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Day Calendar Time Interval conversion with d=1, s=172860 (3 days, 1 minute) Test"
write(failMsg, *) "Days should = 3, secs = 60 and return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, d=1, s=172860, rc=rc)
call ESMF_TimeIntervalGet(timeStep, d=days, s=secs, rc=rc)
call ESMF_Test((days==3 .and. secs==60 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Day Calendar Time Interval conversion with d=1, h=48, m=2880, s=86401 (6 days, 1 second) Test"
write(failMsg, *) "Days should = 6, secs = 1 and return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, d=1, h=48, m=2880, s=86401, rc=rc)
call ESMF_TimeIntervalGet(timeStep, d=days, s=secs, rc=rc)
call ESMF_Test((days==6 .and. secs==1 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Day Calendar Time Interval conversion with d=6, m=1, s=1 Test"
write(failMsg, *) "Hours should = 144, secs = 61 and return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, d=6, m=1, s=1, rc=rc)
call ESMF_TimeIntervalGet(timeStep, h=H, s=secs, rc=rc)
call ESMF_Test((H==144 .and. secs==61 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, " hours = ", H
!print *, " secs = ", secs
! ----------------------------------------------------------------------------
call ESMF_CalendarSetDefault(ESMF_CALKIND_NOCALENDAR, rc=rc)
!EX_UTest
write(name, *) "No Calendar Time Interval conversion with yy=2, mm=30, d=720 Test"
write(failMsg, *) "yy, mm, d should = 2,30,720 and return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, yy=2, mm=30, d=720, rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, mm=months, d=days, rc=rc)
call ESMF_Test((years==2 .and. months==30 .and. days==720 &
.and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, " years, months, days = ", years, months, days
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "No Calendar Time Interval conversion with yy=2, mm=30, d=720 Test"
write(failMsg, *) "should return ESMF_FAILURE."
call ESMF_TimeIntervalSet(timeStep, yy=2, mm=30, d=720, rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, d=days, rc=rc)
call ESMF_Test((rc==ESMC_RC_ARG_BAD), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "No Calendar Time Interval conversion with yy=1, mm=48 Test"
write(failMsg, *) "yy, mm should = 1,48 and return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, yy=1, mm=48, rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, mm=months, rc=rc)
call ESMF_Test((years==1 .and. months==48 .and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, " years, months = ", years, months
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "No Calendar Time Interval conversion with yy=1, mm=48 Test"
write(failMsg, *) "should return ESMF_FAILURE."
call ESMF_TimeIntervalSet(timeStep, yy=1, mm=48, rc=rc)
call ESMF_TimeIntervalGet(timeStep, yy=years, rc=rc)
call ESMF_Test((rc==ESMC_RC_ARG_BAD), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(+)(timestep, timestep)
write(name, *) "No Calendar sum of 2 Time intervals Test 1"
write(failMsg, *) " Did not return (yy=5, mm=-19, d=120, h=-4, m=-50, s=-50) or ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=3, mm=5, d=30, h=7, m=8, s=18, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, yy=2, mm=-24, d=90, h=-13, m=62, s=-68, rc=rc)
timeStep3 = timeStep + timeStep2 ! exercise TimeInterval + operator
call ESMF_TimeIntervalGet(timeStep3, yy=YY, mm=MM, d=D, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==5 .and. MM==-19 .and. D==120 .and. &
H==-4 .and. M==-50 .and. S==-50 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "yy=", YY, "mm=", MM, "d=", D, "h=", H, "m=", M, "s=", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(-)(timestep, timestep)
write(name, *) "No Calendar difference of 2 Time intervals Test 1"
write(failMsg, *) " Did not return (yy=1, mm=29, d=-60, h=-4, m=-50, s=-50) or ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=3, mm=5, d=30, h=7, m=8, s=18, rc=rc)
call ESMF_TimeIntervalSet(timeStep2, yy=2, mm=-24, d=90, h=-13, m=62, s=-68, rc=rc)
timeStep3 = timeStep - timeStep2 ! exercise TimeInterval - operator
call ESMF_TimeIntervalGet(timeStep3, yy=YY, mm=MM, d=D, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==1 .and. MM==29 .and. D==-60 .and. &
H==19 .and. M==7 .and. S==26 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "yy=", YY, "mm=", MM, "d=", D, "h=", H, "m=", M, "s=", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(*)(timestep, integer)
write(name, *) "No Calendar multiplication of a Time interval Test 1"
write(failMsg, *) " Did not return (yy=9, mm=-15, d=90, h=20, m=37, s=15) or ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=3, mm=-5, d=30, h=7, m=-8, s=25, rc=rc)
timeStep2 = timeStep * 3 ! exercise TimeInterval x operator
call ESMF_TimeIntervalGet(timeStep2, yy=YY, mm=MM, d=D, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==9 .and. MM==-15 .and. D==90 .and. &
H==20 .and. M==37 .and. S==15 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "yy=", YY, "mm=", MM, "d=", D, "h=", H, "m=", M, "s=", S
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(*)(integer, timestep)
write(name, *) "No Calendar multiplication of a Time interval Test 2"
write(failMsg, *) " Did not return (yy=9, mm=-15, d=90, h=20, m=37, s=15) or ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeStep, yy=3, mm=-5, d=30, h=7, m=-8, s=25, rc=rc)
timeStep2 = 3 * timeStep ! exercise TimeInterval x operator
call ESMF_TimeIntervalGet(timeStep2, yy=YY, mm=MM, d=D, h=H, m=M, s=S, rc=rc)
call ESMF_Test((YY==9 .and. MM==-15 .and. D==90 .and. &
H==20 .and. M==37 .and. S==15 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "yy=", YY, "mm=", MM, "d=", D, "h=", H, "m=", M, "s=", S
call ESMF_CalendarDestroy(julianDayCalendar)
call ESMF_CalendarDestroy(day360Calendar)
call ESMF_CalendarDestroy(noLeapCalendar)
call ESMF_CalendarDestroy(julianCalendar)
call ESMF_CalendarDestroy(gregorianCalendar)
! ----------------------------------------------------------------------------
! End Calendar Interval tests
! ----------------------------------------------------------------------------
! initialize clock time intervals and instants
!EX_UTest
! Test Setting Time Step
write(failMsg, *) " Did not return ESMF_SUCCESS"
write(name, *) "Set Time Interval Initialization Test"
call ESMF_TimeIntervalSet(timeStep, h=1, rc=rc)
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Test getting the timestep
write(name, *) "Get Time Interval Test"
call ESMF_TimeIntervalGet(timeStep, h=H, rc=rc)
write(failMsg, *) " Did not return ESMF_SUCCESS and/or timeStep not correct value"
call ESMF_Test((rc.eq.ESMF_SUCCESS).and.(H.eq.1), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Test getting the timestep
write(name, *) "Get Time Interval Test"
call ESMF_TimeIntervalGet(timeStep, s=secs, rc=rc)
write(failMsg, *) " Did not return ESMF_SUCCESS and/or timeStep not correct value"
call ESMF_Test((rc.eq.ESMF_SUCCESS).and.(secs.eq.3600), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, d=70000, rc=rc)
write(name, *) "Time Step initialization with days = 70000 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
absoluteTime=ESMF_TimeIntervalAbsValue(timeStep)
!call ESMF_TimeIntervalPrint(absoluteTime, rc=rc)
write(name, *) "Print Absolute Time Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Days should = 70000."
write(name, *) "Get Time Step in days Test"
call ESMF_TimeIntervalGet(timeStep, d=days, rc=rc)
call ESMF_Test((days.eq.70000), &
name, failMsg, result, ESMF_SRCLINE)
!print *, " Days = ", days
! ----------------------------------------------------------------------------
call ESMF_CalendarSetDefault(ESMF_CALKIND_GREGORIAN, rc=rc)
!call ESMF_CalendarSetDefault(ESMF_CALKIND_JULIANDAY, rc=rc)
!call ESMF_CalendarSetDefault(ESMF_CALKIND_NOLEAP, rc=rc)
!call ESMF_CalendarSetDefault(ESMF_CALKIND_360DAY, rc=rc)
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, d=1, rc=rc)
write(name, *) "Time Step initialization with d = 1 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Seconds should = 86400"
write(name, *) "Get Time Step in seconds Test 1"
call ESMF_TimeIntervalGet(timeStep, s=secs, rc=rc)
call ESMF_Test((secs.eq.86400), name, failMsg, result, ESMF_SRCLINE)
!print *, " Seconds = ", secs
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(-)(timestep)
write(failMsg, *) "Seconds should = -86400 and ESMF_SUCCESS"
write(name, *) "Negate Time Step Test 5"
timeStep = -timeStep ! exercise TimeInterval - operator
call ESMF_TimeIntervalGet(timeStep, s=secs, rc=rc)
call ESMF_Test((secs.eq.-86400.and.rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, " Seconds = ", secs
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(-)(timestep)
write(failMsg, *) "Hours should = 24 and ESMF_SUCCESS"
write(name, *) "Negate Time Step Test 6"
timeStep = -timeStep ! exercise TimeInterval - operator
call ESMF_TimeIntervalGet(timeStep, h=hours, rc=rc)
call ESMF_Test((hours.eq.24.and.rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, " Hours = ", hours
! ----------------------------------------------------------------------------
call ESMF_CalendarSetDefault(ESMF_CALKIND_NOCALENDAR, rc=rc)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, h=65, rc=rc)
write(name, *) "Time Step initialization with hr = 65 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Seconds should = 234000."
write(name, *) "Get Time Step in seconds Test 2"
call ESMF_TimeIntervalGet(timeStep, s=secs, rc=rc)
call ESMF_Test((secs.eq.234000), &
name, failMsg, result, ESMF_SRCLINE)
!print *, " Seconds = ", secs
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should not return ESMF_SUCCESS."
call ESMF_TimeIntervalGet(timeStep2, s=secs, rc=rc)
write(name, *) "Time Step Get of no calendar Time Interval Test"
call ESMF_Test((rc.eq.ESMC_RC_ARG_BAD), &
name, failMsg, result, ESMF_SRCLINE)
!print *, " Seconds = ", secs
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, d=100000000, rc=rc)
write(name, *) "Time Step initialization with days = 100000000 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
absoluteTime=ESMF_TimeIntervalAbsValue(timeStep)
!call ESMF_TimeIntervalPrint(absoluteTime, rc=rc)
write(name, *) "Print Absolute Time Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Days should = 100000000."
write(name, *) "Get Time Step in days Test"
call ESMF_TimeIntervalGet(timeStep, d=days, rc=rc)
call ESMF_Test((days.eq.100000000), &
name, failMsg, result, ESMF_SRCLINE)
!print *, " Days = ", days
! ----------------------------------------------------------------------------
!EX_UTest
days2=70000
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, d_i8=days2, rc=rc)
write(name, *) "Time Step initialization with days = 70000 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Days should = 70000."
write(name, *) "Get Time Step in days Test"
call ESMF_TimeIntervalGet(timeStep, d_i8=days2, rc=rc)
call ESMF_Test((days2.eq.70000), &
name, failMsg, result, ESMF_SRCLINE)
!print *, " Days = ", days2
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
absoluteTime=ESMF_TimeIntervalAbsValue(timeStep)
!call ESMF_TimeIntervalPrint(absoluteTime, rc=rc)
write(name, *) "Print Absolute Time Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
absoluteTime=ESMF_TimeIntervalNegAbsValue(timeStep)
!call ESMF_TimeIntervalPrint(absoluteTime, rc=rc)
write(name, *) "Print Neg. Absolute Time Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, d=100, rc=rc)
write(name, *) "Time Step initialization with days = 100 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep2, d=50, rc=rc)
write(name, *) "Time Step initialization with days = 50 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/)(timestep, timestep)
write(failMsg, *) "The answer should be 2."
ans = timeStep / timeStep2 ! exercise TimeInterval / operator
write(name, *) "Time Step division Test"
call ESMF_Test((ans.eq.2), &
name, failMsg, result, ESMF_SRCLINE)
!print *, " 100 / 50 = ", ans
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/=)(timestep, timestep)
write(failMsg, *) "The time steps are not equal."
write(name, *) "TimeInterval NE operator Test"
call ESMF_Test((timeStep.ne.timeStep2), &
name, failMsg, result, ESMF_SRCLINE)
! ^-- exercise TimeInterval /= operator
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep2, s=1, rc=rc)
write(name, *) "Time Step initialization with seconds = 1 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, s=0, rc=rc)
write(name, *) "Time Step initialization with seconds = 0 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/=)(timestep, timestep)
write(failMsg, *) "The time steps are not equal."
write(name, *) "TimeInterval NE operator Test"
call ESMF_Test((timeStep.ne.timeStep2), &
name, failMsg, result, ESMF_SRCLINE)
! ^-- exercise TimeInterval /= operator
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
absoluteTime=ESMF_TimeIntervalAbsValue(timeStep)
!call ESMF_TimeIntervalPrint(absoluteTime, rc=rc)
write(name, *) "Print Absolute Time Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
absoluteTime=ESMF_TimeIntervalAbsValue(timeStep2)
!call ESMF_TimeIntervalPrint(absoluteTime, rc=rc)
write(name, *) "Print Absolute Time Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, s=-1, rc=rc)
write(name, *) "Time Step initialization with seconds = -1 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
absoluteTime=ESMF_TimeIntervalAbsValue(timeStep)
!call ESMF_TimeIntervalPrint(absoluteTime, rc=rc)
write(name, *) "Print Absolute Time Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
absoluteTime=ESMF_TimeIntervalNegAbsValue(timeStep)
!call ESMF_TimeIntervalPrint(absoluteTime, rc=rc)
write(name, *) "Print Neg. Absolute Time Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/=)(timestep, timestep)
write(failMsg, *) "The time steps are not equal."
write(name, *) "TimeInterval NE operator Test"
call ESMF_Test((timeStep.ne.timeStep2), &
name, failMsg, result, ESMF_SRCLINE)
! ^-- exercise TimeInterval /= operator
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep2, s=-1, rc=rc)
write(name, *) "Time Step initialization with seconds = -1 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(==)(timestep, timestep)
write(failMsg, *) "The time steps are equal."
write(name, *) "TimeInterval EQ operator Test"
call ESMF_Test((timeStep.eq.timeStep2), &
name, failMsg, result, ESMF_SRCLINE)
! ^-- exercise TimeInterval == operator
!call ESMF_TimeIntervalPrint(timeStep2, rc=rc)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep2, rc=rc)
write(name, *) "Time Step initialization with nothing set Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!call ESMF_TimeIntervalPrint(timeStep2, rc=rc)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/=)(timestep, timestep)
write(failMsg, *) "The time steps are equal."
write(name, *) "TimeInterval NE operator Test"
call ESMF_Test((timeStep.ne.timeStep2), &
name, failMsg, result, ESMF_SRCLINE)
! ^-- exercise TimeInterval /= operator
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep2, s=-1, rc=rc)
write(name, *) "Time Step initialization with seconds = -1 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(*)(timestep, integer)
write(failMsg, *) "The time steps is not correct."
write(name, *) "TimeInterval * operator Test"
timeStep = timeStep2 * 86400 ! exercise TimeInterval x operator
call ESMF_TimeIntervalGet(timeStep, s=secs, rc=rc)
call ESMF_Test((secs.eq.-86400), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "secs =", secs
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep2, s=-1, rc=rc)
write(name, *) "Time Step initialization with seconds = -1 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, s=1, rc=rc)
write(name, *) "Time Step initialization with seconds = 1 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep, s=1, rc=rc)
write(name, *) "Time Step initialization with seconds = 1 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(failMsg, *) "Should return ESMF_SUCCESS."
call ESMF_TimeIntervalSet(timeStep3, s=1, rc=rc)
write(name, *) "Time Step initialization with seconds = 1 Test"
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(<=)(timestep, timestep)
write(failMsg, *) "The result is not correct."
write(name, *) "TimeInterval <= operator Test"
bool = timeStep2 <= timeStep ! exercise TimeInterval <= operator
call ESMF_Test((bool), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(<=)(timestep, timestep)
write(failMsg, *) "The result is not correct."
write(name, *) "TimeInterval <= operator Test"
bool = timeStep <= timeStep3 ! exercise TimeInterval <= operator
call ESMF_Test((bool), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(<=)(timestep, timestep)
write(failMsg, *) "The result is not correct."
write(name, *) "TimeInterval <= operator Test"
bool = timeStep <= timeStep2 ! exercise TimeInterval <= operator
!print *
call ESMF_Test((.not.bool), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(<)(timestep, timestep)
write(failMsg, *) "The result is not correct."
write(name, *) "TimeInterval < operator Test"
bool = timeStep2 < timeStep ! exercise TimeInterval < operator
call ESMF_Test((bool), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(<)(timestep, timestep)
write(failMsg, *) "The result is not correct."
write(name, *) "TimeInterval < operator Test"
bool = timeStep3 < timeStep ! exercise TimeInterval < operator
call ESMF_Test((.not.bool), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(<)(timestep, timestep)
write(failMsg, *) "The result is not correct."
write(name, *) "TimeInterval < operator Test"
bool = timeStep < timeStep2 ! exercise TimeInterval < operator
call ESMF_Test((.not.bool), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(>=)(timestep, timestep)
write(failMsg, *) "The result is not correct."
write(name, *) "TimeInterval >= operator Test"
bool = timeStep2 >= timeStep ! exercise TimeInterval >= operator
call ESMF_Test((.not.bool), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(>=)(timestep, timestep)
write(failMsg, *) "The result is not correct."
write(name, *) "TimeInterval >= operator Test"
bool = timeStep3 >= timeStep ! exercise TimeInterval >= operator
call ESMF_Test((bool), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(>=)(timestep, timestep)
write(failMsg, *) "The result is not correct."
write(name, *) "TimeInterval >= operator Test"
bool = timeStep >= timeStep2 ! exercise TimeInterval >= operator
call ESMF_Test((bool), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(>)(timestep, timestep)
write(failMsg, *) "The result is not correct."
write(name, *) "TimeInterval > operator Test"
bool = timeStep2 > timeStep ! exercise TimeInterval > operator
call ESMF_Test((.not.bool), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(>)(timestep, timestep)
write(failMsg, *) "The result is not correct."
write(name, *) "TimeInterval > operator Test"
bool = timeStep3 > timeStep ! exercise TimeInterval > operator
call ESMF_Test((.not.bool), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(>)(timestep, timestep)
write(failMsg, *) "The result is not correct."
write(name, *) "TimeInterval > operator Test"
bool = timeStep > timeStep2 ! exercise TimeInterval > operator
call ESMF_Test((bool), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
! Fractional time interval tests
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set millisecond Time Interval Initialization Test"
write(failMsg, *) " Did not return ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval1, ms=5, rc=rc)
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set nanosecond Time Interval Initialization Test"
write(failMsg, *) " Did not return ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval2, ns=70, rc=rc)
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set rational fraction Time Interval Initialization Test 1"
write(failMsg, *) " Did not return ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval4, sN=1, sD=2, rc=rc)
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Set rational fraction Time Interval Initialization Test 2"
write(failMsg, *) " Did not return ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval5, sN=-3, sD=4, rc=rc)
call ESMF_Test((rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(+)(timestep, timestep)
write(name, *) "Sum of two fractional Time Intervals Test 1"
write(failMsg, *) " Did not return 5,000,070 nanoseconds and ESMF_SUCCESS"
timeInterval3 = timeInterval1 + timeInterval2
! ^-- exercise TimeInterval + operator
call ESMF_TimeIntervalGet(timeInterval3, ns=ns, rc=rc)
call ESMF_Test((ns.eq.5000070.and.rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(-)(timestep, timestep)
write(name, *) "Difference of two fractional Time Intervals Test 1"
write(failMsg, *) " Did not return -4,999,930 nanoseconds and ESMF_SUCCESS"
timeInterval3 = timeInterval2 - timeInterval1
! ^-- exercise TimeInterval - operator
call ESMF_TimeIntervalGet(timeInterval3, ns=ns, rc=rc)
call ESMF_Test((ns.eq.-4999930.and.rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(+)(timestep, timestep)
write(name, *) "Incrementing a fractional Time Interval with another Test"
write(failMsg, *) " Did not return 70 nanoseconds and ESMF_SUCCESS"
timeInterval3 = timeInterval3 + timeInterval1
! ^-- exercise TimeInterval + operator
call ESMF_TimeIntervalGet(timeInterval3, ns=ns, rc=rc)
call ESMF_Test((ns.eq.70.and.rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(+)(timestep, timestep)
write(name, *) "Sum of two fractional Time Intervals Test 2"
write(failMsg, *) " Did not return -1/4 seconds and ESMF_SUCCESS"
timeInterval6 = timeInterval4 + timeInterval5
! ^-- exercise TimeInterval + operator
call ESMF_TimeIntervalGet(timeInterval6, sN=sN, sD=sD, rc=rc)
call ESMF_Test((sN.eq.-1.and.sD.eq.4.and.rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(-)(timestep, timestep)
write(name, *) "Difference of two fractional Time Intervals Test 2"
write(failMsg, *) " Did not return 1 1/4 seconds and ESMF_SUCCESS"
timeInterval6 = timeInterval4 - timeInterval5
! ^-- exercise TimeInterval - operator
call ESMF_TimeIntervalGet(timeInterval6, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.1.and.sN.eq.1.and.sD.eq.4.and.rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(==)(timestep, timestep)
write(name, *) "Fractional timeInterval3 == timeInterval2 Test"
write(failMsg, *) " Did not return (timeInterval3 == timeInterval2)"
bool = timeInterval3 == timeInterval2 ! exercise TimeInterval == operator
call ESMF_Test(bool, name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/=)(timestep, timestep)
write(name, *) "Fractional timeInterval1 /= timeInterval2 Test"
write(failMsg, *) " Did not return (timeInterval1 /= timeInterval2)"
bool = timeInterval1 /= timeInterval2 ! exercise TimeInterval /= operator
call ESMF_Test(bool, name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(>)(timestep, timestep)
write(name, *) "Fractional timeInterval1 > timeInterval2 Test"
write(failMsg, *) " Did not return (timeInterval1 > timeInterval2)"
bool = timeInterval1 > timeInterval2 ! exercise TimeInterval > operator
call ESMF_Test(bool, name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(>)(timestep, timestep)
write(name, *) "Fractional timeInterval4 > timeInterval5 Test"
write(failMsg, *) " Did not return (timeInterval4 > timeInterval5)"
bool = timeInterval4 > timeInterval5 ! exercise TimeInterval > operator
call ESMF_Test(bool, name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(<)(timestep, timestep)
write(name, *) "Fractional timeInterval2 < timeInterval1 Test"
write(failMsg, *) " Did not return (timeInterval2 < timeInterval1)"
bool = timeInterval2 < timeInterval1 ! exercise TimeInterval > operator
call ESMF_Test(bool, name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(<)(timestep, timestep)
write(name, *) "Fractional timeInterval1 < timeInterval4 Test"
write(failMsg, *) " Did not return (timeInterval1 < timeInterval4)"
bool = timeInterval1 < timeInterval4 ! exercise TimeInterval < operator
call ESMF_Test(bool, name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(>=)(timestep, timestep)
write(name, *) "Fractional timeInterval1 >= timeInterval2 Test"
write(failMsg, *) " Did not return (timeInterval1 >= timeInterval2)"
bool = timeInterval1 >= timeInterval2 ! exercise TimeInterval >= operator
call ESMF_Test(bool, name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(<=)(timestep, timestep)
write(name, *) "Fractional timeInterval3 <= timeInterval2 Test"
write(failMsg, *) " Did not return (timeInterval3 <= timeInterval2)"
bool = timeInterval3 <= timeInterval2 ! exercise TimeInterval <= operator
call ESMF_Test(bool, name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/)(timestep, integer)
write(name, *) "Divide rational fraction Time Interval by an integer Test 1"
write(failMsg, *) " Did not return 5 11/14 seconds and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval1, s=11, sN=4, sD=7, rc=rc)
timeInterval2 = timeInterval1 / 2 ! exercise TimeInterval / operator
call ESMF_TimeIntervalGet(timeInterval2, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.5.and.sN.eq.11.and.sD.eq.14 &
.and.rc.eq.ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/)(timestep, integer)
write(name, *) "Divide rational fraction Time Interval by an integer Test 2"
write(failMsg, *) " Did not return 2 62/99 seconds and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval1, s=23, sN=7, sD=11, rc=rc)
timeInterval2 = timeInterval1 / 9 ! exercise TimeInterval / operator
call ESMF_TimeIntervalGet(timeInterval2, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.2.and.sN.eq.62.and.sD.eq.99 &
.and.rc.eq.ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/)(timestep, timestep)
write(name, *) "Real ratio of two fractional Time Intervals Test 1"
write(failMsg, *) " Did not return 2.93333333333333 seconds and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval1, s=10, sN=2, sD=3, rc=rc)
call ESMF_TimeIntervalSet(timeInterval2, s=3, sN=7, sD=11, rc=rc)
ratio = timeInterval1 / timeInterval2 ! exercise TimeInterval / operator
call ESMF_Test((abs(ratio-2.93333333333333d0) < 1d-14 .and. &
rc==ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "ratio, rc = ", ratio, rc
! ----------------------------------------------------------------------------
!EX_UTest
! Suggested by John Michalakes/WRF
! Testing ESMF_TimeIntervalOperator(/)(timestep, integer)
write(name, *) "Divide whole number Time Interval by an integer Test 1"
write(failMsg, *) " Did not return 3 1/3 seconds and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval1, s=10, rc=rc)
timeInterval2 = timeInterval1 / 3 ! exercise TimeInterval / operator
call ESMF_TimeIntervalGet(timeInterval2, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.3.and.sN.eq.1.and.sD.eq.3 &
.and.rc.eq.ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalFunction(MOD)(timestep, timestep)
write(name, *) "Modulus of two fractional Time Intervals Test 1"
write(failMsg, *) " Did not return 4/5 seconds and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval1, s=3, sN=1, sD=7, rc=rc)
call ESMF_TimeIntervalSet(timeInterval2, s=0, sN=5, sD=14, rc=rc)
timeInterval3 = MOD(timeInterval1, timeInterval2)
! ^-- exercise TimeInterval MOD operator
call ESMF_TimeIntervalGet(timeInterval3, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.0.and.sN.eq.4.and.sD.eq.5.and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "modulus result 1 = ", S, sN, "/", sD
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalFunction(MOD)(timestep, timestep)
write(name, *) "Modulus of two fractional Time Intervals Test 2"
write(failMsg, *) " Did not return 5/14 seconds and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval1, sN=5, sD=7, rc=rc)
call ESMF_TimeIntervalSet(timeInterval2, s=2, rc=rc)
timeInterval3 = MOD(timeInterval1, timeInterval2)
! ^-- exercise TimeInterval MOD operator
call ESMF_TimeIntervalGet(timeInterval3, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.0.and.sN.eq.5.and.sD.eq.14.and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "modulus result 2 = ", S, sN, "/", sD
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalFunction(MOD)(timestep, timestep)
write(name, *) "Modulus of two fractional Time Intervals Test 3"
write(failMsg, *) " Did not return 1/2 seconds and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval1, s=3, rc=rc)
call ESMF_TimeIntervalSet(timeInterval2, sN=2, sD=5, rc=rc)
timeInterval3 = MOD(timeInterval1, timeInterval2)
! ^-- exercise TimeInterval MOD operator
call ESMF_TimeIntervalGet(timeInterval3, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.0.and.sN.eq.1.and.sD.eq.2.and. rc==ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
!print *, "modulus result 3 = ", S, sN, "/", sD
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(*)(timestep, integer)
write(name, *) "Multiply rational fraction Time Interval by an integer Test 1"
write(failMsg, *) " Did not return 30 2/5 seconds and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval1, s=7, sN=3, sD=5, rc=rc)
timeInterval2 = timeInterval1 * 4 ! exercise TimeInterval x operator
call ESMF_TimeIntervalGet(timeInterval2, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.30.and.sN.eq.2.and.sD.eq.5.and.rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(*)(timestep, integer)
write(name, *) "Multiply rational fraction Time Interval by an integer Test 2"
write(failMsg, *) " Did not return 3/4 seconds and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval1, sN=1, sD=8, rc=rc)
timeInterval2 = timeInterval1 * 6 ! exercise TimeInterval x operator
call ESMF_TimeIntervalGet(timeInterval2, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.0.and.sN.eq.3.and.sD.eq.4.and.rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Suggested by John Michalakes/WRF
! Testing ESMF_TimeIntervalOperator(+)(timestep, timestep)
write(name, *) "Sum of two fractional Time Intervals Test 3"
write(failMsg, *) " Did not return 6 1/21 seconds and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval1, s=3, sN=1, sD=3, rc=rc)
call ESMF_TimeIntervalSet(timeInterval2, s=2, sN=5, sD=7, rc=rc)
timeInterval3 = timeInterval1 + timeInterval2
! ^-- exercise TimeInterval + operator
call ESMF_TimeIntervalGet(timeInterval3, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.6.and.sN.eq.1.and.sD.eq.21.and.rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(-)(timestep)
write(name, *) "Negate Time Interval Test 7"
write(failMsg, *) " Did not return -6 -1/21 seconds and ESMF_SUCCESS"
timeInterval3 = -timeInterval3 ! exercise TimeInterval - operator
call ESMF_TimeIntervalGet(timeInterval3, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.-6.and.sN.eq.-1.and.sD.eq.21.and. &
rc.eq.ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "S sN/sD = ", S, sN, "/", sD
! ----------------------------------------------------------------------------
!EX_UTest
! Suggested by John Michalakes/WRF
! Testing ESMF_TimeIntervalOperator(+)(timestep, timestep)
write(name, *) "Sum of two fractional Time Intervals Test 4"
write(failMsg, *) " Did not return 1/3 second and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval1, sN=1, sD=6, rc=rc)
call ESMF_TimeIntervalSet(timeInterval2, sN=1, sD=6, rc=rc)
timeInterval3 = timeInterval1 + timeInterval2
! ^-- exercise TimeInterval >= operator
call ESMF_TimeIntervalGet(timeInterval3, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.0.and.sN.eq.1.and.sD.eq.3.and.rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Simplification of fractional Time Intervals Test 1"
write(failMsg, *) " Did not return -1/3 second and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval1, s=2, sN=7, sD=-3, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.0.and.sN.eq.-1.and.sD.eq.3.and.rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
write(name, *) "Simplification of fractional Time Intervals Test 2"
write(failMsg, *) " Did not return -1/7 second and ESMF_SUCCESS"
call ESMF_TimeIntervalSet(timeInterval1, s=-3, sN=20, sD=7, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.0.and.sN.eq.-1.and.sD.eq.7.and.rc.eq.ESMF_SUCCESS), &
name, failMsg, result, ESMF_SRCLINE)
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(-)(timestep)
write(name, *) "Negate Time Interval Test 8"
write(failMsg, *) " Did not return 1/7 seconds and ESMF_SUCCESS"
timeInterval1 = -timeInterval1 ! exercise TimeInterval - operator
call ESMF_TimeIntervalGet(timeInterval1, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_Test((S.eq.0.and.sN.eq.1.and.sD.eq.7.and. &
rc.eq.ESMF_SUCCESS), name, failMsg, result, ESMF_SRCLINE)
!print *, "sN/sD = ", sN, "/", sD
! ----------------------------------------------------------------------------
!EX_UTest
! Testing ESMF_TimeIntervalOperator(/)(timestep, integer)
! Should produce error message upon 1st TimeIntervalGet() in ESMF_LogFile
write(name, *) "Upper limit of denominator get Test"
write(failMsg, *) " Did not return 0 1/5000000000 seconds"
call ESMF_TimeIntervalSet(timeInterval1, sN=1, sD=1000000000, rc=rc)
timeInterval1 = timeInterval1 / 5 ! exercise TimeInterval / operator
! I4 sD overflows with I8 value => LogErr msg
call ESMF_TimeIntervalGet(timeInterval1, s=S, sN=sN, sD=sD, rc=rc)
call ESMF_TimeIntervalGet(timeInterval1, s=S, sN=sN, sD_i8=sD_i8, rc=rc)
call ESMF_Test((S.eq.0.and.sN.eq.1.and.sD_i8.eq.5000000000_ESMF_KIND_I8),&
name, failMsg, result, ESMF_SRCLINE)
!print *, "S, sN, sD_i8 = ", S, sN, sD_i8
! ----------------------------------------------------------------------------
! return number of failures to environment; 0 = success (all pass)
! return result ! TODO: no way to do this in F90 ?
#endif
! finalize ESMF framework
call ESMF_TestEnd(ESMF_SRCLINE)
end program ESMF_TimeIntervalUTest