@@ -1902,6 +1902,251 @@ program ESMF_AlarmTest
1902
1902
call ESMF_Test(((rc.eq. ESMF_SUCCESS) .and. correct), &
1903
1903
name, failMsg, result, ESMF_SRCLINE)
1904
1904
1905
+
1906
+
1907
+ ! ----------------------------------------------------------------------------
1908
+
1909
+ ! EX_UTest
1910
+ write (failMsg, * ) " Returned ESMF_FAILURE"
1911
+ write (name, * ) " Not sticky Alarm with ringInterval and stopTime with repeating clock test."
1912
+
1913
+ ! Init correct
1914
+ correct= .true.
1915
+ rc= ESMF_SUCCESS
1916
+
1917
+ ! Simple test of repeating within one hour
1918
+
1919
+ ! Set start time
1920
+ call ESMF_TimeSet(startTime, yy= 2024 , mm= 3 , dd= 14 , h= 5 , m= 0 , s= 0 , &
1921
+ calendar= gregorianCalendar, rc= localrc)
1922
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
1923
+
1924
+ ! Set timeStep to one minute
1925
+ call ESMF_TimeIntervalSet(timeStep, m= 14 , rc= localrc)
1926
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
1927
+
1928
+ ! Set repeat duration to one hour
1929
+ call ESMF_TimeIntervalSet(repeatDuration, h= 1 , rc= localrc)
1930
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
1931
+
1932
+ ! Create Clock
1933
+ repeatClock = ESMF_ClockCreate(timeStep, startTime, &
1934
+ repeatDuration= repeatDuration, rc= localrc)
1935
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
1936
+
1937
+ ! Set ringTime
1938
+ call ESMF_TimeSet(ringTime, yy= 2024 , mm= 3 , dd= 14 , h= 5 , m= 11 , s= 0 , &
1939
+ calendar= gregorianCalendar, rc= localrc)
1940
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
1941
+
1942
+ ! Set stopTime
1943
+ call ESMF_TimeSet(stopTime, yy= 2024 , mm= 3 , dd= 14 , h= 5 , m= 50 , s= 0 , &
1944
+ calendar= gregorianCalendar, rc= localrc)
1945
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
1946
+
1947
+ ! Set alarm Interval
1948
+ call ESMF_TimeIntervalSet(ringInterval, m= 20 , rc= localrc)
1949
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
1950
+
1951
+ ! Create ringTime Alarm
1952
+ alarm = ESMF_AlarmCreate(clock= repeatClock, ringTime= ringTime, &
1953
+ ringInterval= ringInterval, stopTime= stopTime, sticky= .false. , rc= localrc)
1954
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
1955
+
1956
+ ! Advance clock to 5:14
1957
+ call ESMF_ClockAdvance(repeatClock, rc= localrc)
1958
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
1959
+
1960
+ ! Make sure ringing
1961
+ if (.not. ESMF_AlarmIsRinging(alarm)) correct= .false.
1962
+
1963
+ ! DEBUG OUTPUT
1964
+ ! write(*,*) "5:14 Is ringing=",ESMF_AlarmIsRinging(alarm,rc=localrc)
1965
+
1966
+ ! Advance clock to 5:28
1967
+ call ESMF_ClockAdvance(repeatClock, rc= localrc)
1968
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
1969
+
1970
+ ! Make sure not ringing
1971
+ if (ESMF_AlarmIsRinging(alarm)) correct= .false.
1972
+
1973
+ ! DEBUG OUTPUT
1974
+ ! write(*,*) "5:28 Is ringing=",ESMF_AlarmIsRinging(alarm,rc=localrc)
1975
+
1976
+ ! Advance clock to 5:42
1977
+ call ESMF_ClockAdvance(repeatClock, rc= localrc)
1978
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
1979
+
1980
+ ! Make sure is ringing
1981
+ if (.not. ESMF_AlarmIsRinging(alarm)) correct= .false.
1982
+
1983
+ ! DEBUG OUTPUT
1984
+ ! write(*,*) "5:42 Is ringing=",ESMF_AlarmIsRinging(alarm,rc=localrc)
1985
+
1986
+ ! Advance clock to 5:56 (PAST stopTime)
1987
+ call ESMF_ClockAdvance(repeatClock, rc= localrc)
1988
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
1989
+
1990
+ ! Make sure is NOT ringing
1991
+ if (ESMF_AlarmIsRinging(alarm)) correct= .false.
1992
+
1993
+ ! DEBUG OUTPUT
1994
+ ! write(*,*) "5:56 Is ringing=",ESMF_AlarmIsRinging(alarm,rc=localrc)
1995
+
1996
+ ! Advance clock to 5:10 (PAST stopTime)
1997
+ call ESMF_ClockAdvance(repeatClock, rc= localrc)
1998
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
1999
+
2000
+ ! Make sure is not ringing
2001
+ if (ESMF_AlarmIsRinging(alarm)) correct= .false.
2002
+
2003
+ ! DEBUG OUTPUT
2004
+ ! write(*,*) "5:10 Is ringing=",ESMF_AlarmIsRinging(alarm,rc=localrc)
2005
+
2006
+ ! Advance clock to 5:24 (passing ringTime again...)
2007
+ call ESMF_ClockAdvance(repeatClock, rc= localrc)
2008
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2009
+
2010
+ ! Make sure is ringing
2011
+ if (.not. ESMF_AlarmIsRinging(alarm)) correct= .false.
2012
+
2013
+ ! DEBUG OUTPUT
2014
+ ! write(*,*) "5:24 Is ringing=",ESMF_AlarmIsRinging(alarm,rc=localrc)
2015
+
2016
+ ! Free Alarm
2017
+ call ESMF_AlarmDestroy(alarm, rc= localrc)
2018
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2019
+
2020
+ ! Free Clock
2021
+ call ESMF_ClockDestroy(repeatClock, rc= localrc)
2022
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2023
+
2024
+ call ESMF_Test(((rc.eq. ESMF_SUCCESS) .and. correct), &
2025
+ name, failMsg, result, ESMF_SRCLINE)
2026
+
2027
+
2028
+ ! ----------------------------------------------------------------------------
2029
+
2030
+ ! EX_UTest
2031
+ write (failMsg, * ) " Returned ESMF_FAILURE"
2032
+ write (name, * ) " Not sticky Alarm with ringInterval and wrapped stopTime with repeating clock test."
2033
+
2034
+ ! Init correct
2035
+ correct= .true.
2036
+ rc= ESMF_SUCCESS
2037
+
2038
+ ! Simple test of repeating within one hour
2039
+
2040
+ ! Set start time
2041
+ call ESMF_TimeSet(startTime, yy= 2024 , mm= 3 , dd= 14 , h= 5 , m= 0 , s= 0 , &
2042
+ calendar= gregorianCalendar, rc= localrc)
2043
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2044
+
2045
+ ! Set timeStep to one minute
2046
+ call ESMF_TimeIntervalSet(timeStep, m= 14 , rc= localrc)
2047
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2048
+
2049
+ ! Set repeat duration to one hour
2050
+ call ESMF_TimeIntervalSet(repeatDuration, h= 1 , rc= localrc)
2051
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2052
+
2053
+ ! Create Clock
2054
+ repeatClock = ESMF_ClockCreate(timeStep, startTime, &
2055
+ repeatDuration= repeatDuration, rc= localrc)
2056
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2057
+
2058
+ ! Set ringTime
2059
+ call ESMF_TimeSet(ringTime, yy= 2024 , mm= 3 , dd= 14 , h= 5 , m= 31 , s= 0 , &
2060
+ calendar= gregorianCalendar, rc= localrc)
2061
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2062
+
2063
+ ! Set stopTime
2064
+ call ESMF_TimeSet(stopTime, yy= 2024 , mm= 3 , dd= 14 , h= 5 , m= 10 , s= 0 , &
2065
+ calendar= gregorianCalendar, rc= localrc)
2066
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2067
+
2068
+ ! Set alarm Interval
2069
+ call ESMF_TimeIntervalSet(ringInterval, m= 20 , rc= localrc)
2070
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2071
+
2072
+ ! Create ringTime Alarm
2073
+ alarm = ESMF_AlarmCreate(clock= repeatClock, ringTime= ringTime, &
2074
+ ringInterval= ringInterval, stopTime= stopTime, sticky= .false. , rc= localrc)
2075
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2076
+
2077
+ ! Advance clock to 5:14
2078
+ call ESMF_ClockAdvance(repeatClock, rc= localrc)
2079
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2080
+
2081
+ ! Make sure NOT ringing (it's not in 5:31 - 5:10)
2082
+ if (ESMF_AlarmIsRinging(alarm)) correct= .false.
2083
+
2084
+ ! DEBUG OUTPUT
2085
+ ! write(*,*) "5:14 Is ringing=",ESMF_AlarmIsRinging(alarm,rc=localrc)
2086
+
2087
+ ! Advance clock to 5:28
2088
+ call ESMF_ClockAdvance(repeatClock, rc= localrc)
2089
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2090
+
2091
+ ! Make sure NOT ringing (it's not in 5:31 - 5:10)
2092
+ if (ESMF_AlarmIsRinging(alarm)) correct= .false.
2093
+
2094
+ ! DEBUG OUTPUT
2095
+ ! write(*,*) "5:28 Is ringing=",ESMF_AlarmIsRinging(alarm,rc=localrc)
2096
+
2097
+ ! Advance clock to 5:42
2098
+ call ESMF_ClockAdvance(repeatClock, rc= localrc)
2099
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2100
+
2101
+ ! Make sure is ringing
2102
+ if (.not. ESMF_AlarmIsRinging(alarm)) correct= .false.
2103
+
2104
+ ! DEBUG OUTPUT
2105
+ ! write(*,*) "5:42 Is ringing=",ESMF_AlarmIsRinging(alarm,rc=localrc)
2106
+
2107
+ ! Advance clock to 5:56
2108
+ call ESMF_ClockAdvance(repeatClock, rc= localrc)
2109
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2110
+
2111
+ ! Make sure is ringing
2112
+ if (.not. ESMF_AlarmIsRinging(alarm)) correct= .false.
2113
+
2114
+ ! DEBUG OUTPUT
2115
+ ! write(*,*) "5:56 Is ringing=",ESMF_AlarmIsRinging(alarm,rc=localrc)
2116
+
2117
+ ! Advance clock to 5:10
2118
+ call ESMF_ClockAdvance(repeatClock, rc= localrc)
2119
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2120
+
2121
+ ! Make sure is not ringing
2122
+ if (ESMF_AlarmIsRinging(alarm)) correct= .false.
2123
+
2124
+ ! DEBUG OUTPUT
2125
+ ! write(*,*) "5:10 Is ringing=",ESMF_AlarmIsRinging(alarm,rc=localrc)
2126
+
2127
+ ! Advance clock to 5:24
2128
+ call ESMF_ClockAdvance(repeatClock, rc= localrc)
2129
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2130
+
2131
+ ! Make sure NOT ringing (it's not in 5:31 - 5:10)
2132
+ if (ESMF_AlarmIsRinging(alarm)) correct= .false.
2133
+
2134
+ ! DEBUG OUTPUT
2135
+ ! write(*,*) "5:24 Is ringing=",ESMF_AlarmIsRinging(alarm,rc=localrc)
2136
+
2137
+ ! Free Alarm
2138
+ call ESMF_AlarmDestroy(alarm, rc= localrc)
2139
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2140
+
2141
+ ! Free Clock
2142
+ call ESMF_ClockDestroy(repeatClock, rc= localrc)
2143
+ if (localrc .ne. ESMF_SUCCESS) rc= ESMF_FAILURE
2144
+
2145
+ call ESMF_Test(((rc.eq. ESMF_SUCCESS) .and. correct), &
2146
+ name, failMsg, result, ESMF_SRCLINE)
2147
+
2148
+
2149
+
1905
2150
! ----------------------------------------------------------------------------
1906
2151
1907
2152
! EX_UTest
0 commit comments