/** Ċ Ġ* Ġ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 . Nested Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . lang . IllegalArgumentException Ċ Ċ class ĠInteger Query Test Ġ{ ĊĠĠĠ Ġdata Ġclass ĠTest Query ( override Ġval Ġvalue : ĠList < Int >) Ġ: ĠInteger Query Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġname Ġ= Ġ" test " ĊĊĠĠĠĠĠĠĠ Ġconstructor ( value : ĠInt ) Ġ: Ġthis ( listOf ( value )) ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass ĠValidation Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` Should Ġnot Ġthrow Ġwhen Ġsupply ing Ġa Ġsingle Ġvalue `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Not Throw Any Ġ{ ĠTest Query ( 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` Should Ġnot Ġthrow Ġwhen Ġsupply ing Ġmultiple Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Not Throw Any Ġ{ ĠTest Query ( listOf ( 1 , Ġ 2 )) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` Should Ġthrow Ġwhen Ġvalue Ġlist Ġis Ġempty `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexception Ġ= Ġshould Throw < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Query ( emptyList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexception . message ĠshouldBe Ġ" The Ġsupplied Ġvalue Ġlist Ġshould Ġat Ġleast Ġhave Ġone Ġitem " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass ĠAs QueryParameter Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` Should Ġproperly Ġconvert Ġthe Ġquery Ġto Ġa ĠQuery Parameter Ġfor Ġa Ġsingle Ġvalue `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Query ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as QueryParameter () ĠshouldBe ĠQuery Parameter ( name Ġ= Ġ" test ", Ġvalue Ġ= Ġ" 1 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` Should Ġproperly Ġconvert Ġthe Ġquery Ġto Ġa ĠQuery Parameter Ġfor Ġmultiple Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Query ( listOf ( 1 , Ġ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as QueryParameter () ĠshouldBe ĠQuery Parameter ( name Ġ= Ġ" test ", Ġvalue Ġ= Ġ" 1 , 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠInteger Query Derived Classes Test Ġ{ ĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass ĠValidation Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` Derived Ġclasses Ġcall Ġthe Ġinterface Ġvalidation Ġimplementation `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < IllegalArgumentException > Ġ{ ĠSequence Number Query ( emptyList ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass ĠAs QueryParameter Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` Derived Ġclasses Ġcall Ġthe Ġinterface Ġmethod Ġimplementation `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSequence Number Query ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as QueryParameter () ĠshouldBe ĠQuery Parameter ( name Ġ= Ġ" sequence Number ", Ġvalue Ġ= Ġ" 1 0 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ