---
test case: Invalid period ''
in:
  param: :now/h
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid period 'h'
in:
  param: h:now/h
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid period '1'
in:
  param: 1:now/h
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid period '1H'
in:
  param: 1H:now/h
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid period '0h'
in:
  param: 0h:now/h
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid period '12345678901234567890h'
in:
  param: 12345678901234567890h:now/h
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Valid period '1h'
in:
  param: 1h:now/h
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  start: 2020-08-31 23:00:00.000000000 +03:00
  end:   2020-08-31 23:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Invalid period shift '/h'
in:
  param: 1h:/h
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid period shift 'now-1'
in:
  param: 1h:now-1
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid period shift 'now/h - 1'
in:
  param: 1h:now/h - 1
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid period shift 'now/h-1'
in:
  param: 1h:now/h-1
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid period shift 'now/h - 1h'
in:
  param: 1h:now/h - 1h
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid period shift 'now/m-1m'
in:
  param: 1h:now/m-1m
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Valid parameters '1h,now/h-1h'
in:
  param: 1h:now/h-1h
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  start: 2020-08-31 22:00:00.000000000 +03:00
  end:   2020-08-31 22:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Valid parameters '1h,now/d'
in:
  param: 1h:now/d
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  start: 2020-08-31 23:00:00.000000000 +03:00
  end:   2020-08-31 23:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Valid parameters '1h,now/h' from 2020-09-01 10:00:00.000000000 +03:00
in:
  param: 1h:now/h
  timezone: :Europe/Riga
  time: 2020-09-01 10:00:00.000000000 +03:00
out:
  start: 2020-09-01 09:00:00.000000000 +03:00
  end:   2020-09-01 09:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Valid parameters '1h,now/d' from 2020-09-01 10:00:00.000000000 +03:00
in:
  param: 1h:now/d
  timezone: :Europe/Riga
  time: 2020-09-01 10:00:00.000000000 +03:00
out:
  start: 2020-08-31 23:00:00.000000000 +03:00
  end:   2020-08-31 23:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Valid parameters '1h,now/h-1d' from 2020-09-01 10:00:00.000000000 +03:00
in:
  param: 1h:now/h-1d
  timezone: :Europe/Riga
  time: 2020-09-01 10:00:00.000000000 +03:00
out:
  start: 2020-08-31 09:00:00.000000000 +03:00
  end:   2020-08-31 09:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Valid parameters '1d,now/w-6d' from 2020-09-01 10:00:00.000000000 +03:00
in:
  param: 1d:now/w-6d
  timezone: :Europe/Riga
  time: 2020-09-01 10:00:00.000000000 +03:00
out:
  start: 2020-08-24 00:00:00.000000000 +03:00
  end:   2020-08-24 23:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Valid parameters '1d,now/M-1M+6d/w+1d' from 2020-09-18 10:00:00.000000000 +03:00
in:
  param: 1d:now/M-1M+6d/w+1d
  timezone: :Europe/Riga
  time: 2020-09-18 10:00:00.000000000 +03:00
out:
  start: 2020-08-03 00:00:00.000000000 +03:00
  end:   2020-08-03 23:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Valid parameters '1w,now/M' from 2020-09-18 10:00:00.000000000 +03:00
in:
  param: 1w:now/M
  timezone: :Europe/Riga
  time: 2020-09-18 10:00:00.000000000 +03:00
out:
  start: 2020-08-25 00:00:00.000000000 +03:00
  end:   2020-08-31 23:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Valid parameters '1M,now/M' from 2020-09-18 10:00:00.000000000 +03:00
in:
  param: 1M:now/M
  timezone: :Europe/Riga
  time: 2020-09-18 10:00:00.000000000 +03:00
out:
  start: 2020-08-01 00:00:00.000000000 +03:00
  end:   2020-08-31 23:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Valid parameters '1M,now/M-1M' from 2020-09-18 10:00:00.000000000 +03:00
in:
  param: 1M:now/M-1M
  timezone: :Europe/Riga
  time: 2020-09-18 10:00:00.000000000 +03:00
out:
  start: 2020-07-01 00:00:00.000000000 +03:00
  end:   2020-07-31 23:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Valid parameters '1M,now/M-2M' from 2020-09-18 10:00:00.000000000 +03:00
in:
  param: 1M:now/M-2M
  timezone: :Europe/Riga
  time: 2020-09-18 10:00:00.000000000 +03:00
out:
  start: 2020-06-01 00:00:00.000000000 +03:00
  end:   2020-06-30 23:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Valid parameters '1d,now/y' from 2020-09-18 10:00:00.000000000 +03:00
in:
  param: 1d:now/y
  timezone: :Europe/Riga
  time: 2020-09-18 10:00:00.000000000 +03:00
out:
  start: 2019-12-31 00:00:00.000000000 +02:00
  end:   2019-12-31 23:00:00.000000000 +02:00
  return: SUCCEED
---
test case: Valid parameters '1h,now-1d' from 2020-09-01 10:00:00.000000000 +03:00
in:
  param: 1h:now-1d
  timezone: :Europe/Riga
  time: 2020-09-01 10:00:00.000000000 +03:00
out:
  start: 2020-08-31 09:00:00.000000000 +03:00
  end:   2020-08-31 09:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Valid parameters '3h,now-1d/h' from 2020-09-01 10:30:00.000000000 +03:00
in:
  param: 3h:now-1d/h
  timezone: :Europe/Riga
  time: 2020-09-01 10:30:00.000000000 +03:00
out:
  start: 2020-08-31 07:00:00.000000000 +03:00
  end:   2020-08-31 09:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Valid parameters '3h,now+1d-3d/w' from 2020-09-01 10:30:00.000000000 +03:00
in:
  param: 3h:now+1d-3d/w
  timezone: :Europe/Riga
  time: 2020-09-01 10:30:00.000000000 +03:00
out:
  start: 2020-08-23 21:00:00.000000000 +03:00
  end:   2020-08-23 23:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Invalid parameters '1M,now/h' from 2020-09-18 10:00:00.000000000 +03:00
in:
  param: 1M:now/h
  timezone: :Europe/Riga
  time: 2020-09-18 10:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid parameters '1M,now/d' from 2020-09-18 10:00:00.000000000 +03:00
in:
  param: 1M:now/d
  timezone: :Europe/Riga
  time: 2020-09-18 10:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid parameters '1M,now/w' from 2020-09-18 10:00:00.000000000 +03:00
in:
  param: 1M:now/w
  timezone: :Europe/Riga
  time: 2020-09-18 10:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid parameters '1M,now/M-1h' from 2020-09-18 10:00:00.000000000 +03:00
in:
  param: 1M:now/M-1h
  timezone: :Europe/Riga
  time: 2020-09-18 10:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid parameters '1M,now/M-1d' from 2020-09-18 10:00:00.000000000 +03:00
in:
  param: 1M:now/M-1d
  timezone: :Europe/Riga
  time: 2020-09-18 10:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Valid period '1y'
in:
  param: 1y:now/y
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  start: 2019-01-01 00:00:00.000000000 +02:00
  end:   2019-12-31 23:00:00.000000000 +02:00
  return: SUCCEED
---
test case: Valid period '12M'
in:
  param: 12M:now/y
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  start: 2019-01-01 00:00:00.000000000 +02:00
  end:   2019-12-31 23:00:00.000000000 +02:00
  return: SUCCEED
---
test case: Valid period '366d'
in:
  param: 366d:now/y
  timezone: :Europe/Riga
  time: 2021-09-01 00:00:00.000000000 +03:00
out:
  start: 2020-01-01 00:00:00.000000000 +02:00
  end:   2020-12-31 23:00:00.000000000 +02:00
  return: SUCCEED
---
test case: Valid period '8784h'
in:
  param: 8784h:now/y
  timezone: :Europe/Riga
  time: 2021-09-01 00:00:00.000000000 +03:00
out:
  start: 2020-01-01 00:00:00.000000000 +02:00
  end:   2020-12-31 23:00:00.000000000 +02:00
  return: SUCCEED
---
test case: Invalid period '2y'
in:
  param: 2y:now/y
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid period '13M'
in:
  param: 13M:now/y
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid period '367d'
in:
  param: 367d:now/y
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid period '8785h'
in:
  param: 8785h:now/y
  timezone: :Europe/Riga
  time: 2021-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Invalid shift '26y'
in:
  param: 1h:now/y-26y
  timezone: :Europe/Riga
  time: 2021-09-01 00:00:00.000000000 +03:00
out:
  return: FAIL
---
test case: Valid shift '25y'
in:
  param: 1h:now/y-25y
  timezone: :Europe/Riga
  time: 2021-09-01 00:00:00.000000000 +03:00
out:
  start: 1995-12-31 23:00:00.000000000 +02:00
  end:   1995-12-31 23:00:00.000000000 +02:00
  return: SUCCEED
---
test case: Valid parameters '1h:now/M+6d/w+1h' from 2020-09-23 00:59:46.000000000 +03:00
in:
  param: 1h:now/M+6d/w+1h
  timezone: :Europe/Riga
  time: 2020-09-23 00:59:46.000000000 +03:00
out:
  start: 2020-09-07 00:00:00.000000000 +03:00
  end:   2020-09-07 00:00:00.000000000 +03:00
  return: SUCCEED
---
test case: Valid shift '0h'
in:
  param: 1h:now-0h
  timezone: :Europe/Riga
  time: 2020-09-01 00:00:00.000000000 +03:00
out:
  start: 2020-08-31 23:00:00.000000000 +03:00
  end: 2020-08-31 23:00:00.000000000 +03:00
  return: SUCCEED
...