@@ -287,4 +287,25 @@ class IntervalUtilsSuite extends SparkFunSuite {
287
287
val i9 = new CalendarInterval (0 , 0 , - 3000 * MICROS_PER_HOUR )
288
288
assert(IntervalUtils .toSqlStandardString(i9) === " -3000:00:00" )
289
289
}
290
+
291
+ test(" to iso 8601 string" ) {
292
+ val i1 = new CalendarInterval (0 , 0 , 0 )
293
+ assert(IntervalUtils .toIso8601String(i1) === " PT0S" )
294
+ val i2 = new CalendarInterval (34 , 0 , 0 )
295
+ assert(IntervalUtils .toIso8601String(i2) === " P2Y10M" )
296
+ val i3 = new CalendarInterval (- 34 , 0 , 0 )
297
+ assert(IntervalUtils .toIso8601String(i3) === " P-2Y-10M" )
298
+ val i4 = new CalendarInterval (0 , 31 , 0 )
299
+ assert(IntervalUtils .toIso8601String(i4) === " P31D" )
300
+ val i5 = new CalendarInterval (0 , - 31 , 0 )
301
+ assert(IntervalUtils .toIso8601String(i5) === " P-31D" )
302
+ val i6 = new CalendarInterval (0 , 0 , 3 * MICROS_PER_HOUR + 13 * MICROS_PER_MINUTE + 123 )
303
+ assert(IntervalUtils .toIso8601String(i6) === " PT3H13M0.000123S" )
304
+ val i7 = new CalendarInterval (0 , 0 , - 3 * MICROS_PER_HOUR - 13 * MICROS_PER_MINUTE - 123 )
305
+ assert(IntervalUtils .toIso8601String(i7) === " PT-3H-13M-0.000123S" )
306
+ val i8 = new CalendarInterval (- 34 , 31 , 3 * MICROS_PER_HOUR + 13 * MICROS_PER_MINUTE + 123 )
307
+ assert(IntervalUtils .toIso8601String(i8) === " P-2Y-10M31DT3H13M0.000123S" )
308
+ val i9 = new CalendarInterval (0 , 0 , - 3000 * MICROS_PER_HOUR )
309
+ assert(IntervalUtils .toIso8601String(i9) === " PT-3000H" )
310
+ }
290
311
}
0 commit comments