@Test public void shouldEncodeArrays() { assertEncoding( "D1.0|2.0|3.0|", new int[]{1, 2, 3} ); assertEncoding( "Ztrue|false|", new boolean[]{true, false} ); assertEncoding( "LYWxp|YXJl|eW91|b2s=|", new String[]{"ali", "are", "you", "ok"} ); assertEncoding( "", new String[]{} ); assertEncoding( "P1:4326:1.234;2.567|1:4326:2.345;5.678|2:9157:3.0;4.0;5.0|", new Point[]{Values.pointValue( CoordinateReferenceSystem.WGS84, 1.234, 2.567 ), Values.pointValue( CoordinateReferenceSystem.WGS84, 2.345, 5.678 ), Values.pointValue( CoordinateReferenceSystem.Cartesian_3D, 3, 4, 5 )} ); assertEncoding( "T1991-03-05|1992-04-06|", new LocalDate[]{DateValue.date( 1991, 3, 5 ).asObjectCopy(), DateValue.date( 1992, 4, 6 ).asObjectCopy()} ); assertEncoding( "T12:45:13.000008676|05:04:50.000000076|", new LocalTime[]{LocalTimeValue.localTime( 12, 45, 13, 8676 ).asObjectCopy(), LocalTimeValue.localTime( 5, 4, 50, 76 ).asObjectCopy()} ); assertEncoding( "T1991-03-05T12:45:13.000008676|1992-04-06T05:04:50.000000076|", new LocalDateTime[]{LocalDateTimeValue.localDateTime( 1991, 3, 5, 12, 45, 13, 8676 ).asObjectCopy(), LocalDateTimeValue.localDateTime( 1992, 4, 6, 5, 4, 50, 76 ).asObjectCopy()} ); assertEncoding( "T02:45:13.000008676Z|01:05:00.0000003+01:00|05:04:50.000000076+05:00|", new OffsetTime[]{TimeValue.time( 2, 45, 13, 8676, UTC ).asObjectCopy(), TimeValue.time( OffsetTime.ofInstant( Instant.ofEpochSecond( 300, 300 ), ZoneId.of( "Europe/Stockholm" ) ) ).asObjectCopy(), TimeValue.time( 5, 4, 50, 76, "+05:00" ).asObjectCopy()} ); assertEncoding( "T1991-03-05T02:45:13.000008676Z|1991-03-05T02:45:13.000008676+01:00[Europe/Stockholm]|1992-04-06T05:04:50.000000076+05:00|", new ZonedDateTime[]{DateTimeValue.datetime( 1991, 3, 5, 2, 45, 13, 8676, UTC ).asObjectCopy(), DateTimeValue.datetime( 1991, 3, 5, 2, 45, 13, 8676, ZoneId.of( "Europe/Stockholm" ) ).asObjectCopy(), DateTimeValue.datetime( 1992, 4, 6, 5, 4, 50, 76, "+05:00" ).asObjectCopy()} ); assertEncoding( "AP165Y11M3DT5.000000012S|P166Y4DT6.000000005S|", new TemporalAmount[]{DurationValue.duration( 1991, 3, 5, 12 ).asObjectCopy(), DurationValue.duration( 1992, 4, 6, 5 ).asObjectCopy()} ); }