blob: 894452ea0a515c4c3c6092292fe739fc067f0d42 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
/***************************************************************************************************
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
**************************************************************************************************/
package at.bitfire.ical4android
import net.fortuna.ical4j.data.CalendarBuilder
import net.fortuna.ical4j.model.Component
import net.fortuna.ical4j.model.component.VEvent
import org.apache.commons.io.IOUtils
import org.junit.Assert.assertEquals
import org.junit.Test
import java.io.InputStreamReader
import java.io.StringReader
class ICalPreprocessorTest {
@Test
fun testFixInvalidUtcOffset() {
val invalid = "BEGIN:VEVENT" +
"SUMMARY:Test" +
"DTSTART;TZID=Test:19970714T133000" +
"END:VEVENT" +
"BEGIN:VTIMEZONE\n" +
"TZID:Test\n" +
"BEGIN:DAYLIGHT\n" +
"DTSTART:19670430T020000\n" +
"TZOFFSETFROM:-5730\n" +
"TZOFFSETTO:+1920\n" +
"TZNAME:EDT\n" +
"END:DAYLIGHT\n" +
"BEGIN:STANDARD\n" +
"DTSTART:19671029T020000\n" +
"TZOFFSETFROM:-0400\n" +
"TZOFFSETTO:-0500\n" +
"TZNAME:EST" +
"END:STANDARD\n" +
"END:VTIMEZONE"
val valid = "BEGIN:VEVENT" +
"SUMMARY:Test" +
"DTSTART;TZID=Test:19970714T133000" +
"END:VEVENT" +
"BEGIN:VTIMEZONE\n" +
"TZID:Test\n" +
"BEGIN:DAYLIGHT\n" +
"DTSTART:19670430T020000\n" +
"TZOFFSETFROM:-005730\n" +
"TZOFFSETTO:+001920\n" +
"TZNAME:EDT\n" +
"END:DAYLIGHT\n" +
"BEGIN:STANDARD\n" +
"DTSTART:19671029T020000\n" +
"TZOFFSETFROM:-0400\n" +
"TZOFFSETTO:-0500\n" +
"TZNAME:EST" +
"END:STANDARD\n" +
"END:VTIMEZONE"
ICalPreprocessor.fixInvalidUtcOffset(StringReader(invalid)).let { result ->
assertEquals(valid, IOUtils.toString(result))
}
ICalPreprocessor.fixInvalidUtcOffset(StringReader(valid)).let { result ->
assertEquals(valid, IOUtils.toString(result))
}
}
@Test
fun testMsTimeZones() {
javaClass.classLoader!!.getResourceAsStream("events/outlook1.ics").use { stream ->
val reader = InputStreamReader(stream, Charsets.UTF_8)
val calendar = CalendarBuilder().build(reader)
val vEvent = calendar.getComponent(Component.VEVENT) as VEvent
assertEquals("W. Europe Standard Time", vEvent.startDate.timeZone.id)
ICalPreprocessor.preProcess(calendar)
assertEquals("Europe/Vienna", vEvent.startDate.timeZone.id)
}
}
}
|