/** Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 - 2 0 2 1 , ĠKon ink lij ke ĠPhil ips ĠN . V ., Ġhttps :// www . phil ips . com Ċ Ġ* ĠSPDX - License - Identifier : ĠMIT Ċ Ġ*/ Ċ package Ġcom . phil ips . h sdp . apis . td r . domain . sdk . query Ċ Ċ import Ġio . kot est . assertions . throw ables . should Not Throw Any Ċ import Ġio . kot est . assertions . throw ables . should Throw Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġorg . junit . jupiter . api . Dynamic Test Ċ import Ġorg . junit . jupiter . api . Nested Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Factory Ċ Ċ class ĠTimestamp Query Test Ġ{ ĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass ĠValidation Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Test Factory ĊĠĠĠĠĠĠĠ Ġfun Ġ` Valid Ġtimestamp Ġqueries Ġusing ĠISO 8 6 0 1 ĠUTC Ġtimestamp Ġand Ġoptionally Ġa Ġprefix `() Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 7 - 0 6 T 1 2 : 1 3 : 1 4 . 0 2 3 Z " Ġto Ġ" out Ġprefix ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 7 - 0 6 T 1 2 : 1 3 : 1 4 . 0 2 3 Z " Ġto Ġ" out Ġprefix Ġwith Ġmilliseconds ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" eq 2 0 2 1 - 0 7 - 0 6 T 1 2 : 1 3 : 1 4 Z " Ġto Ġ" Ġeq Ġprefix ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ne 2 0 2 1 - 0 7 - 0 6 T 1 2 : 1 3 : 1 4 Z " Ġto Ġ" Ġne Ġprefix ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" lt 2 0 2 1 - 0 7 - 0 6 T 1 2 : 1 3 : 1 4 Z " Ġto Ġ" Ġlt Ġprefix ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" le 2 0 2 1 - 0 7 - 0 6 T 1 2 : 1 3 : 1 4 Z " Ġto Ġ" Ġle Ġprefix ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" gt 2 0 2 1 - 0 7 - 0 6 T 1 2 : 1 3 : 1 4 Z " Ġto Ġ" Ġgt Ġprefix ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ge 2 0 2 1 - 0 7 - 0 6 T 1 2 : 1 3 : 1 4 Z " Ġto Ġ" Ġge Ġprefix ", ĊĠĠĠĠĠĠĠ Ġ). map Ġ{ Ġ( input , Ġscenario ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDynamic Test . dynamic Test (" Should Ġnot Ġthrow Ġwhen Ġsupply ing Ġa Ġtimestamp Ġwith $ scenario ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Not Throw Any Ġ{ ĠTimestamp Query ( input ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test Factory ĊĠĠĠĠĠĠĠ Ġfun Ġ` Should Ġthrow Ġwhen Ġsupply ing Ġa Ġtimestamp Ġwith Ġspace Ġbetween Ġdate Ġand Ġtime `() Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 7 - 0 6 Ġ 1 2 : 1 3 : 1 4 . 0 0 0 Z " Ġto Ġ" a Ġspace Ġbetween Ġdate Ġand Ġtime ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 7 - 0 6 T 1 2 : 1 3 : 1 4 . 0 0 0 " Ġto Ġ" no ĠZ Ġafter Ġthe Ġtime ", ĊĠĠĠĠĠĠĠ Ġ). map Ġ{ Ġ( input , Ġscenario ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDynamic Test . dynamic Test (" Should Ġnot Ġthrow Ġwhen Ġsupply ing Ġa Ġtimestamp Ġwith Ġ$ scenario ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexception Ġ= Ġshould Throw < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTimestamp Query ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception . message ĠshouldBe Ġ" Timestamp Ġnot Ġaccording Ġto ĠISO 8 6 0 1 ĠISO Ġformat Ġwith Ġoptional Ġoperator Ġprefix " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass ĠAs QueryParameter Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` Should Ġproperly Ġconvert Ġthe Ġquery Ġto Ġa ĠQuery Parameter Ġfor Ġa Ġsingle Ġvalue `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimestamp Query (" 2 0 2 1 - 0 7 - 0 6 T 1 2 : 1 3 : 1 4 Z ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as QueryParameter () ĠshouldBe ĠQuery Parameter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" timestamp ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" 2 0 2 1 - 0 7 - 0 6 T 1 2 : 1 3 : 1 4 Z " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` Should Ġproperly Ġconvert Ġthe Ġquery Ġto Ġa ĠQuery Parameter Ġfor Ġmultiple Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimestamp Query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 7 - 0 6 T 1 2 : 1 3 : 1 4 Z ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 7 - 0 7 T 1 2 : 1 3 : 1 4 . 0 0 0 Z " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). as QueryParameter () ĠshouldBe ĠQuery Parameter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" timestamp ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" 2 0 2 1 - 0 7 - 0 6 T 1 2 : 1 3 : 1 4 Z , 2 0 2 1 - 0 7 - 0 7 T 1 2 : 1 3 : 1 4 . 0 0 0 Z " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ