| 1 | import time |
| 2 | |
| 3 | fn test_relative() { |
| 4 | // past |
| 5 | mut date := time.now() |
| 6 | assert date.relative() == 'now' |
| 7 | date = date.add_seconds(-61) |
| 8 | assert date.relative() == '1 minute ago' |
| 9 | assert date.relative_short() == '1m ago' |
| 10 | date = date.add_seconds(-120) |
| 11 | assert date.relative() == '3 minutes ago' |
| 12 | assert date.relative_short() == '3m ago' |
| 13 | date = date.add_seconds(-1 * time.seconds_per_hour) |
| 14 | assert date.relative() == '1 hour ago' |
| 15 | assert date.relative_short() == '1h ago' |
| 16 | date = date.add_seconds(-5 * time.seconds_per_hour) |
| 17 | assert date.relative() == '6 hours ago' |
| 18 | assert date.relative_short() == '6h ago' |
| 19 | date = date.add_seconds(-1 * time.seconds_per_day) |
| 20 | assert date.relative() == '1 day ago' |
| 21 | assert date.relative_short() == '1d ago' |
| 22 | date = date.add_seconds(-4 * time.seconds_per_day) |
| 23 | assert date.relative() == '5 days ago' |
| 24 | assert date.relative_short() == '5d ago' |
| 25 | date = time.now().add_seconds(-75 * time.seconds_per_day) |
| 26 | assert date.relative() == 'last ${date.custom_format('MMM')} ${date.custom_format('D')}' |
| 27 | assert date.relative_short() == '75d ago' |
| 28 | date = time.now().add_seconds(-400 * time.seconds_per_day) |
| 29 | assert date.relative() == '1 year ago' |
| 30 | assert date.relative_short() == '1y ago' |
| 31 | |
| 32 | // future |
| 33 | date = time.now() |
| 34 | date = date.add_seconds(61) |
| 35 | assert date.relative() == 'in 1 minute' |
| 36 | assert date.relative_short() == 'in 1m' |
| 37 | date = date.add_seconds(120) |
| 38 | assert date.relative() == 'in 3 minutes' |
| 39 | assert date.relative_short() == 'in 3m' |
| 40 | date = date.add_seconds(1 * time.seconds_per_hour) |
| 41 | assert date.relative() == 'in 1 hour' |
| 42 | assert date.relative_short() == 'in 1h' |
| 43 | date = date.add_seconds(5 * time.seconds_per_hour) |
| 44 | assert date.relative() == 'in 6 hours' |
| 45 | assert date.relative_short() == 'in 6h' |
| 46 | date = date.add_seconds(time.seconds_per_day) |
| 47 | assert date.relative() == 'in 1 day' |
| 48 | assert date.relative_short() == 'in 1d' |
| 49 | date = date.add_seconds(4 * time.seconds_per_day) |
| 50 | assert date.relative() == 'in 5 days' |
| 51 | assert date.relative_short() == 'in 5d' |
| 52 | date = time.now().add_seconds(75 * time.seconds_per_day) |
| 53 | assert date.relative() == 'on ${date.custom_format('MMM')} ${date.custom_format('D')}' |
| 54 | assert date.relative_short() == 'in 75d' |
| 55 | date = time.now().add_seconds(400 * time.seconds_per_day) |
| 56 | assert date.relative() == 'in 1 year' |
| 57 | assert date.relative_short() == 'in 1y' |
| 58 | } |
| 59 | |