@@ -33,6 +33,56 @@ class UtcOffsetTest {
33
33
val offsetSecondsRange = - 18 * 60 * 60 .. + 18 * 60 * 60
34
34
}
35
35
36
+
37
+ @Test
38
+ fun construction () {
39
+ for (totalSeconds in offsetSecondsRange) {
40
+ val hours = totalSeconds / (60 * 60 )
41
+ val totalMinutes = totalSeconds / 60
42
+ val minutes = totalMinutes % 60
43
+ val seconds = totalSeconds % 60
44
+ val offset = UtcOffset (hours, minutes, seconds)
45
+ val offsetSeconds = UtcOffset (seconds = totalSeconds)
46
+ val offsetMinutes = UtcOffset (minutes = totalMinutes, seconds = seconds)
47
+ assertEquals(totalSeconds, offset.totalSeconds)
48
+ assertEquals(offset, offsetMinutes)
49
+ assertEquals(offset, offsetSeconds)
50
+ }
51
+ }
52
+
53
+ @Test
54
+ fun constructionErrors () {
55
+ // total range
56
+ assertIllegalArgument { UtcOffset (hours = - 19 ) }
57
+ assertIllegalArgument { UtcOffset (hours = + 19 ) }
58
+ assertIllegalArgument { UtcOffset (hours = - 18 , minutes = - 1 ) }
59
+ assertIllegalArgument { UtcOffset (hours = - 18 , seconds = - 1 ) }
60
+ assertIllegalArgument { UtcOffset (hours = + 18 , seconds = + 1 ) }
61
+ assertIllegalArgument { UtcOffset (hours = + 18 , seconds = + 1 ) }
62
+ assertIllegalArgument { UtcOffset (seconds = offsetSecondsRange.first - 1 ) }
63
+ assertIllegalArgument { UtcOffset (seconds = offsetSecondsRange.last + 1 ) }
64
+ // component ranges
65
+ assertIllegalArgument { UtcOffset (hours = 0 , minutes = 60 ) }
66
+ assertIllegalArgument { UtcOffset (hours = 0 , seconds = - 60 ) }
67
+ assertIllegalArgument { UtcOffset (minutes = 90 , seconds = 90 ) }
68
+ assertIllegalArgument { UtcOffset (minutes = 0 , seconds = 90 ) }
69
+ // component signs
70
+ assertIllegalArgument { UtcOffset (hours = + 1 , minutes = - 1 ) }
71
+ assertIllegalArgument { UtcOffset (hours = + 1 , seconds = - 1 ) }
72
+ assertIllegalArgument { UtcOffset (hours = - 1 , minutes = + 1 ) }
73
+ assertIllegalArgument { UtcOffset (hours = - 1 , seconds = + 1 ) }
74
+ assertIllegalArgument { UtcOffset (minutes = + 1 , seconds = - 1 ) }
75
+ assertIllegalArgument { UtcOffset (minutes = - 1 , seconds = + 1 ) }
76
+ }
77
+
78
+ @Test
79
+ fun utcOffsetToString () {
80
+ assertEquals(" +01:00" , UtcOffset (hours = 1 , minutes = 0 , seconds = 0 ).toString())
81
+ assertEquals(" +01:02:03" , UtcOffset (hours = 1 , minutes = 2 , seconds = 3 ).toString())
82
+ assertEquals(" -01:00:30" , UtcOffset (hours = - 1 , minutes = 0 , seconds = - 30 ).toString())
83
+ assertEquals(" Z" , UtcOffset .ZERO .toString())
84
+ }
85
+
36
86
@Test
37
87
fun invalidUtcOffsetStrings () {
38
88
for (v in invalidUtcOffsetStrings) {
@@ -112,7 +162,7 @@ class UtcOffsetTest {
112
162
113
163
@Test
114
164
fun asTimeZone () {
115
- val offset = UtcOffset .parse( " +01:20:30 " )
165
+ val offset = UtcOffset (hours = 1 , minutes = 20 , seconds = 30 )
116
166
val timeZone = offset.asTimeZone()
117
167
assertIs<FixedOffsetTimeZone >(timeZone)
118
168
assertEquals(offset, timeZone.offset)
0 commit comments