lines = ['BEGIN:VCALENDAR', 'VERSION:2.0', 'PRODID:-//QuickRouter//Synthetic calendar sample//ZH']
for index, event in enumerate(output['events']):
    lines += ['BEGIN:VEVENT', f'UID:demo-{index}@example.invalid', 'SUMMARY:' + event['title']]
    if event['all_day']:
        lines += ['DTSTART;VALUE=DATE:' + event['start'].replace('-', ''), 'DTEND;VALUE=DATE:' + event['end'].replace('-', '')]
        check('全天事件结束日采用排他次日', datetime.fromisoformat(event['end']) - datetime.fromisoformat(event['start']) == timedelta(days=1))
    else:
        from zoneinfo import ZoneInfo
        start, end = datetime.fromisoformat(event['start']), datetime.fromisoformat(event['end'])
        check('讨论时间保持14点至15点', (start.hour, end.hour) == (14, 15))
        lines += ['DTSTART;TZID=Asia/Shanghai:' + start.strftime('%Y%m%dT%H%M%S'), 'DTEND;TZID=Asia/Shanghai:' + end.strftime('%Y%m%dT%H%M%S')]
    lines += ['END:VEVENT']
lines += ['END:VCALENDAR']
(folder / 'events.ics').write_bytes(('\r\n'.join(lines) + '\r\n').encode())
check('ICS实际导出两条事件', (folder / 'events.ics').read_text().count('BEGIN:VEVENT') == 2)
