You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

677 lines
13 KiB

1 year ago
# simple interval
test case: "min"
in:
str: '1'
out:
return: 'SUCCEED'
---
test case: "max"
in:
str: '86400'
out:
return: 'SUCCEED'
---
test case: "more than allowed"
in:
str: '86401'
out:
return: 'FAIL'
---
test case: "min seconds"
in:
str: '1s'
out:
return: 'SUCCEED'
---
test case: "max seconds"
in:
str: '86400s'
out:
return: 'SUCCEED'
---
test case: "more than allowed seconds"
in:
str: '86401s'
out:
return: 'FAIL'
---
test case: "min minutes"
in:
str: '1m'
out:
return: 'SUCCEED'
---
test case: "max minutes"
in:
str: '1440m'
out:
return: 'SUCCEED'
---
test case: "more than allowed minutes"
in:
str: '1441m'
out:
return: 'FAIL'
---
test case: "min hours"
in:
str: '1h'
out:
return: 'SUCCEED'
---
test case: "max hours"
in:
str: '24h'
out:
return: 'SUCCEED'
---
test case: "more than allowed hours"
in:
str: '25h'
out:
return: 'FAIL'
---
test case: "min/max days"
in:
str: '1d'
out:
return: 'SUCCEED'
---
test case: "more than allowed days"
in:
str: '2d'
out:
return: 'FAIL'
---
test case: "weeks not allowed"
in:
str: '1w'
out:
return: 'FAIL'
---
test case: "zero alone are not allowed"
in:
str: '0'
out:
return: 'FAIL'
---
test case: "zero seconds alone are not allowed"
in:
str: '0s'
out:
return: 'FAIL'
---
test case: "simple interval with improper delimiter not allowed"
in:
str: '1/'
out:
return: 'FAIL'
---
test case: "invalid update interval"
in:
str: 'x'
out:
return: 'FAIL'
---
test case: "simple interval with only delimiter is not allowed"
in:
str: '1;'
out:
return: 'FAIL'
---
test case: "simple interval with double delimiter is not allowed"
in:
str: '1;;'
out:
return: 'FAIL'
---
# macros in simple interval
test case: "macro is allowed as simple interval"
in:
str: '{$MACRO}'
out:
return: 'SUCCEED'
---
test case: "suffixes are not allowed with macro"
in:
str: '${MACRO}s'
out:
return: 'FAIL'
---
test case: "macro with unexpected delimiter is not allowed"
in:
str: '{$MACRO}/'
out:
return: 'FAIL'
---
test case: "macro with unexpected delimiter is not allowed"
in:
str: '/{$MACRO}'
out:
return: 'FAIL'
---
test case: "macro as units is not allowed"
in:
str: '1{$MACRO}'
out:
return: 'FAIL'
---
test case: "only user macro is allowed"
in:
str: '{MACRO}'
out:
return: 'FAIL'
---
test case: "several macros not allowed"
in:
str: '{$MACRO}{$MACRO}'
out:
return: 'FAIL'
---
test case: "simple interval with only delimiter is not allowed"
in:
str: '{$MACRO};'
out:
return: 'FAIL'
---
test case: "simple interval macro with double delimiter is not allowed"
in:
str: '{$MACRO};;'
out:
return: 'FAIL'
---
# simple interval + flexible
test case: "one flexible interval is allowed"
in:
str: '1s;2s/1-6,00:00-23:00'
out:
return: 'SUCCEED'
---
test case: "more than one flexible intervals are allowed"
in:
str: '1s;2s/1-6,00:00-23:00;0/1-6,00:00-23:00'
out:
return: 'SUCCEED'
---
# simple interval + flexible and one is invalid
test case: "invalid simple interval"
in:
str: 'a;2s/1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "invalid flexible interval"
in:
str: '1;s/1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "invalid flexible"
in:
str: '1;1/c'
out:
return: 'FAIL'
---
test case: "flexible interval double semicolon"
in:
str: '1;;0/1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "flexible interval double delimiter"
in:
str: '1;0//1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "flexible interval wrong delimiter"
in:
str: '1;0x1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "ends with unexpected semicolon"
in:
str: '1s;2s/1-6,00:00-23:00;'
out:
return: 'FAIL'
---
test case: "flexible update interval is missing"
in:
str: '1s;1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "flexible period is missing"
in:
str: '1s;2s'
out:
return: 'FAIL'
---
test case: "flexible period is missing but there is delimiter"
in:
str: '1s;2s/'
out:
return: 'FAIL'
---
# simple interval + flexible with and macro
test case: "macro in simple interval"
in:
str: '{$MACRO};2s/1-6,00:00-23:00'
out:
return: 'SUCCEED'
---
test case: "macro in flexible interval"
in:
str: '{$MACRO};{$MACRO}/1-6,00:00-23:00'
out:
return: 'SUCCEED'
---
test case: "macro in flexible"
in:
str: '{$MACRO};{$MACRO}/{$MACRO}'
out:
return: 'SUCCEED'
---
test case: "macro flexible update interval only"
in:
str: '1;{$MACRO}/1-6,00:00-23:00'
out:
return: 'SUCCEED'
---
test case: "macro flexible only"
in:
str: '1;1/{$MACRO}'
out:
return: 'SUCCEED'
---
test case: "more than one flexible intervals are allowed"
in:
str: '1s;{$MACRO}/{$MACRO};{$MACRO}/{$MACRO}'
out:
return: 'SUCCEED'
---
# simple interval + flexible and one is invalid + macro
test case: "invalid simple interval even if all other is macro"
in:
str: 'a;{$MACRO}/{$MACRO}'
out:
return: 'FAIL'
---
test case: "invalid flexible interval even if other are macros"
in:
str: '{$MACRO};s/{$MACRO}'
out:
return: 'FAIL'
---
test case: "invalid flexible with all other macro"
in:
str: '{$MACRO};{$MACRO}/c'
out:
return: 'FAIL'
---
test case: "suffixes are not allowed in flexible update interval after macro"
in:
str: '1s;{$MACRO}s/1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "macro must be whole value in flexible, not just part"
in:
str: '1s;1s/{$MACRO}-23:00'
out:
return: 'FAIL'
---
test case: "macro must be whole value in flexible, not just part in the end"
in:
str: '1s;1s/1-6,00:00-{$MACRO}'
out:
return: 'FAIL'
---
# simple interval + flexible and one is invalid but with macros
test case: "invalid simple interval"
in:
str: '{$MACRO}a;2s/1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "invalid flexible interval"
in:
str: '1;{$MACRO}s/{$MACRO}'
out:
return: 'FAIL'
---
test case: "invalid flexible"
in:
str: '1;1/z{$MACRO}'
out:
return: 'FAIL'
---
test case: "flexible interval double delimiter"
in:
str: '1;{$MACRO}//1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "flexible interval wrong delimiter"
in:
str: '1;{$MACRO}x1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "flexible interval double semicolon"
in:
str: '{$MACRO};;0/1-6,00:00-23:00'
out:
return: 'FAIL'
---
# macro does not affect other field validation
test case: "invalid in update interval"
in:
str: 'a;{$MACRO}/{$MACRO}'
out:
return: 'FAIL'
---
test case: "invalid in flexible update interval"
in:
str: '{$MACRO};s/{$MACRO}'
out:
return: 'FAIL'
---
test case: "invalid in flexible interval"
in:
str: '{$MACRO};{$MACRO}/z'
out:
return: 'FAIL'
---
# context macro
test case: "context macro is correctly handled"
in:
str: '1s;{$MACRO:";"}/{$MACRO};{$MACRO:"/"}/{$MACRO:";"}'
out:
return: 'SUCCEED'
---
test case: "context macro + real values"
in:
str: '{$MACRO:";"};{$MACRO:";"}/1-6,00:00-23:00;{$MACRO:"/"}/1-6,00:00-23:00;1/{$MACRO:";"}'
out:
return: 'SUCCEED'
---
test case: "context macro + last macro is broken"
in:
str: '1s;{$MACRO:";"}/{$MACRO};{$MACRO:"/"}/{$MACRO:";"'
out:
return: 'FAIL'
---
test case: "context macro + invalid flexible"
in:
str: '1s;{$MACRO:";"}/b;{$MACRO:"/"}/{$MACRO:";"}'
out:
return: 'FAIL'
---
# simple interval + flexible and one is 0
test case: "simple interval can be 0 in case flexible is non zero"
in:
str: '0;2s/1-6,00:00-23:00'
out:
return: 'SUCCEED'
---
test case: "simple interval can be 0 in case flexible intervals are non zero"
in:
str: '0;2s/1-6,00:00-23:00;1/1-6,00:00-23:00'
out:
return: 'SUCCEED'
---
test case: "flexible interval can be 0 in case simple interval is not 0"
in:
str: '1;0/1-6,00:00-23:00'
out:
return: 'SUCCEED'
---
test case: "simple interval can be 0 in case flexible intervals are non zero"
in:
str: '1;0/1-6,00:00-23:00;0/1-6,00:00-23:00'
out:
return: 'SUCCEED'
---
# simple interval + flexible and both are 0
test case: "simple interval cannot be 0 in case flexible update interval is zero"
in:
str: '0;0/1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "simple interval cannot be 0 in case one of flexible intervals is zero"
in:
str: '0;2s/1-6,00:00-23:00;0/1-6,00:00-23:00'
out:
return: 'FAIL'
---
# simple interval + flexible with 0 and macro
test case: "flexible interval can be 0 if simple interval is macro"
in:
str: '{$MACRO};0/1-6,00:00-23:00'
out:
return: 'SUCCEED'
---
test case: "simple interval can be 0 if flexible interval is macro"
in:
str: '0;{$MACRO}/1-6,00:00-23:00'
out:
return: 'SUCCEED'
---
test case: "simple interval can be 0 if flexible update interval is non zero or macro"
in:
str: '0;2s/1-6,00:00-23:00;{$MACRO}/1-6,00:00-23:00'
out:
return: 'SUCCEED'
---
test case: "simple interval cannot be 0 if one of flexible intervals is macro while other is 0"
in:
str: '0;0/1-6,00:00-23:00;{$MACRO}/1-6,00:00-23:00'
out:
return: 'FAIL'
---
# upper limit of interval
test case: "within limits"
in:
str: '86400;2147483647/1-6,00:00-23:00'
out:
return: 'SUCCEED'
---
test case: "simple interval is too high"
in:
str: '86401;1/1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "flexible interval is too high"
in:
str: '1;9223372036854775807/1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "flexible interval overflow"
in:
str: '1;2147483648/1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "simple interval too high but flexible is macro"
in:
str: '86401;{$MACRO}/1-6,00:00-23:00'
out:
return: 'FAIL'
---
test case: "flexible interval is too high but simple is macro"
in:
str: '{$MACRO};9223372036854775807/1-6,00:00-23:00'
out:
return: 'FAIL'
---
# scheduling
test case: "update interval + scheduling check"
in:
str: '1;wd1-5h9-18'
out:
return: 'SUCCEED'
---
test case: "0 update interval + scheduling check"
in:
str: '0;wd1-5h9-18'
out:
return: 'SUCCEED'
---
test case: "scheduling check with slash"
in:
str: '0;h9m/30;h10'
out:
return: 'SUCCEED'
---
test case: "scheduling check with flexible check"
in:
str: '0;h9m/30;h10;1m/1-6,00:00-23:00;h9m10-40/1;1/1-7,12:00-12:01'
out:
return: 'SUCCEED'
---
# scheduling with invalid
test case: "update interval is invalid + scheduling check"
in:
str: 'a;wd1-5h9-18'
out:
return: 'FAIL'
---
test case: "invalid scheduling check"
in:
str: '1;x'
out:
return: 'FAIL'
---
test case: "invalid scheduling check"
in:
str: '1;x'
out:
return: 'FAIL'
---
test case: "scheduling double semicolon"
in:
str: '1;;0/wd1-5h9-18'
out:
return: 'FAIL'
---
test case: "scheduling ends with unexpected semicolon"
in:
str: '1;wd1-5h9-18;'
out:
return: 'FAIL'
---
test case: "update interval is missing"
in:
str: 'wd1-5h9-18'
out:
return: 'FAIL'
---
test case: "delimiter between scheduling macros"
in:
str: '1;wd1-5h9-18/wd1-5h9-18'
out:
return: 'FAIL'
---
# scheduling with macros
test case: "scheduling check as macro"
in:
str: '0;{$MACRO}'
out:
return: 'SUCCEED'
---
test case: "scheduling check macro with macro update interval"
in:
str: '{$MACRO};{$MACRO};{$MACRO}'
out:
return: 'SUCCEED'
---
test case: "simple update interval as macro"
in:
str: '{$MACRO};h9m/30'
out:
return: 'SUCCEED'
---
test case: "simple update interval as macro and one of scheduling"
in:
str: '{$MACRO};h9m/30;{$MACRO}'
out:
return: 'SUCCEED'
---
test case: "macro in update interval does not skip validation of scheduling"
in:
str: '{$MACRO};r'
out:
return: 'FAIL'
---
test case: "macro in one of scheduling does not skip validation of scheduling"
in:
str: '1;{$MACRO};w9m/30'
out:
return: 'FAIL'
---
test case: "macro in one of flexible does not skip validation of scheduling"
in:
str: '1;{$MACRO}/{$MACRO};w9m/30'
out:
return: 'FAIL'
---
test case: "macro in one of scheduling does not skip validation of flexible period"
in:
str: '1;{$MACRO};{$MACRO}/b'
out:
return: 'FAIL'
---
test case: "macro in one of scheduling does not skip validation of flexible interval"
in:
str: '1;{$MACRO};b/{$MACRO}'
out:
return: 'FAIL'
---
test case: "delimiter between scheduling macros must be present"
in:
str: '{$MACRO};{$MACRO}{$MACRO}'
out:
return: 'FAIL'
---
test case: "delimiter between scheduling macros must be present"
in:
str: '{$MACRO};{$MACRO}{$MACRO}'
out:
return: 'FAIL'
---
test case: "scheduling higher than upper limit"
in:
str: '86401;h9m/30'
out:
return: 'FAIL'
---
test case: "scheduling in limit"
in:
str: '86400;h9m/30'
out:
return: 'SUCCEED'
---
test case: "scheduling context macro"
in:
str: '{$MACRO:";"};{$MACRO:";"};{$MACRO:"/"};{$MACRO:";"};{$MACRO:"/"};{$MACRO:"/"};{$MACRO:";"};{$MACRO:";"}'
out:
return: 'SUCCEED'
---
test case: "scheduling + flexible context macro"
in:
str: '{$MACRO:";"};{$MACRO:";"};{$MACRO:"/"};{$MACRO:";"};{$MACRO:"/"};{$MACRO:"/"};{$MACRO:";"};{$MACRO:";"};{$MACRO:";"}/1-6,00:00-23:00;{$MACRO:"/"}/1-6,00:00-23:00;1/{$MACRO:";"};{$MACRO:";"}'
out:
return: 'SUCCEED'
---
test case: "empty delay"
in:
str: ''
out:
return: 'FAIL'
...