package Ġorg . part i ql . lang . types Ċ Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . assert DoesNot Throw Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Arguments Source Ċ import Ġorg . part i ql . lang . Compiler Pipeline Ċ import Ġorg . part i ql . lang . ION Ċ import Ġorg . part i ql . lang . eval . Evaluation Session Ċ import Ġorg . part i ql . lang . eval . Expr Value Ċ import Ġorg . part i ql . lang . types . Static Type . Companion . BLOB Ċ import Ġorg . part i ql . lang . types . Static Type . Companion . BOOL Ċ import Ġorg . part i ql . lang . types . Static Type . Companion . C LOB Ċ import Ġorg . part i ql . lang . types . Static Type . Companion . DECIMAL Ċ import Ġorg . part i ql . lang . types . Static Type . Companion . FLOAT Ċ import Ġorg . part i ql . lang . types . Static Type . Companion . INT Ċ import Ġorg . part i ql . lang . types . Static Type . Companion . INT 2 Ċ import Ġorg . part i ql . lang . types . Static Type . Companion . INT 4 Ċ import Ġorg . part i ql . lang . types . Static Type . Companion . INT 8 Ċ import Ġorg . part i ql . lang . types . Static Type . Companion . MISSING Ċ import Ġorg . part i ql . lang . types . Static Type . Companion . NULL Ċ import Ġorg . part i ql . lang . types . Static Type . Companion . STRING Ċ import Ġorg . part i ql . lang . types . Static Type . Companion . SYMBOL Ċ import Ġorg . part i ql . lang . types . Static Type . Companion . TIMESTAMP Ċ import Ġorg . part i ql . lang . util . Arguments Provider Base Ċ import Ġjava . math . BigInteger Ċ Ċ /** Ċ Ġ* ĠAt Ġthe Ġmoment , Ġthis Ġtest Ġclass Ġonly Ġcovers Ġ[ Static Type . is Instance ]. Ċ Ġ* Ċ Ġ* ĠThis Ġcould Ġbe Ġexpanded Ġin Ġthe Ġfuture . Ċ Ġ*/ Ċ class ĠStatic Type Tests Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġclass ĠInput Types ( val Ġsql Value : ĠString , Ġval Ġexpected Types : ĠList < Static Type >) ĊĊĠĠĠĠĠĠĠ Ġval ĠSC AL ARS : ĠList < Input Types > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNULL Ġ& ĠMIS SING ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types (" MISSING ", ĠlistOf ( NULL , ĠMIS SING )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types (" NULL ", ĠlistOf ( NULL )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBOOL ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types (" true ", ĠlistOf ( BOOL )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types (" false ", ĠlistOf ( BOOL )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠINT [ n ] ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types (" 1 ", ĠlistOf ( INT , ĠINT 2 , ĠINT 4 , ĠINT 8 )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types ("- 1 ", ĠlistOf ( INT , ĠINT 2 , ĠINT 4 , ĠINT 8 )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types ("${ Short . MIN _ VALUE . to Long () Ġ- Ġ 1 }", ĠlistOf ( INT , ĠINT 4 , ĠINT 8 )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types ("${ Short . MAX _ VALUE . to Long () Ġ+ Ġ 1 }", ĠlistOf ( INT , ĠINT 4 , ĠINT 8 )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types ("${ Int . MIN _ VALUE . to Long () Ġ- Ġ 1 }", ĠlistOf ( INT , ĠINT 8 )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types ("${ Int . MAX _ VALUE . to Long () Ġ+ Ġ 1 }", ĠlistOf ( INT , ĠINT 8 )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types (" `${ BigInteger . valueOf ( Long . MAX _ VALUE ). plus ( BigInteger . ONE ). to Long () }` ", ĠlistOf ( INT , ĠINT 8 )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types (" `${ BigInteger . valueOf ( Long . MIN _ VALUE ). minus ( BigInteger . ONE ). to Long () }` ", ĠlistOf ( INT , ĠINT 8 )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFLOAT ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types (" ` 1 e 4 `", ĠlistOf ( FLOAT )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types (" 1 e 4 ", ĠlistOf ( DECIMAL )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDEC IMAL ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types (" ` as ymbol `", ĠlistOf ( SYMBOL )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTIMESTAMP ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types (" ` 2 0 0 1 T `", ĠlistOf ( TIMESTAMP )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSTRING ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types ("' a Ġstring '", ĠlistOf ( STRING )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠC LOB ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types (" ` {{ Ġ\" Hello , Ġworld ! Ġ\" Ġ}} `", ĠlistOf ( C LOB )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBLOB ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Types (" ` {{ ĠS GV sb G 8 s IH dv cm xk IQ == Ġ}} `", ĠlistOf ( BLOB )) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠTestCase ( ĊĠĠĠĠĠĠĠ Ġval Ġsql Value : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġstatic Type : ĠStatic Type , ĊĠĠĠĠĠĠĠ Ġval Ġexpected Is Instance Result : ĠBoolean ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġeval ( sql : ĠString ): ĠExpr Value Ġ= ĊĠĠĠĠĠĠĠ ĠCompiler Pipeline . standard ( ION ). compile ( sql ). eval ( Evaluation Session . standard ()) ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Arguments Source ( Scalar Is Instance Arguments :: class ) ĊĠĠĠ Ġfun Ġscalar Is Instance Arguments Test ( tc : ĠTestCase ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġexpr Value Ġ= Ġassert DoesNot Throw (" Evalu ating Ġthe Ġvalue Ġunder Ġtest Ġshould Ġnot Ġthrow ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeval ( tc . sql Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtc . expected Is Instance Result , Ġtc . static Type . is Instance ( expr Value ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġresult Ġof ĠStatic Type . is Instance () Ġshould Ġmatch Ġthe Ġexpected Ġvalue Ġfor Ġtype Ġ${ tc . static Type } Ġand Ġ\" ${ tc . sql Value }\ "" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠScalar Is Instance Arguments Ġ: ĠArguments Provider Base () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġthe Ġgiven Ġlist Ġof Ġvalues Ġof Ġeach Ġpossible Ġdata Ġtype , Ġcompute Ġa Ġone Ġtest Ġcase Ġfor Ġeach Ġof Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġpossible Ġdata Ġtypes . ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Parameters (): ĠList < TestCase > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSC AL ARS . flatMap Ġ{ Ġp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatic Type . ALL _ TYPES . map Ġ{ ĠTestCase ( p . sql Value , Ġit , Ġp . expected Types . contains ( it )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Arguments Source ( Sequence Is Instance Arguments :: class ) ĊĠĠĠ Ġfun Ġsequence Is Instance Arguments Test ( tc : ĠTestCase ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġexpr Value Ġ= Ġassert DoesNot Throw (" Evalu ating Ġthe Ġvalue Ġunder Ġtest Ġshould Ġnot Ġthrow ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeval ( tc . sql Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtc . expected Is Instance Result , Ġtc . static Type . is Instance ( expr Value ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġresult Ġof ĠStatic Type . is Instance () Ġshould Ġmatch Ġthe Ġexpected Ġvalue Ġfor Ġtype Ġ${ tc . static Type } Ġand Ġ\" ${ tc . sql Value }\ "" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠSequence Is Instance Arguments Ġ: ĠArguments Provider Base () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Parameters (): ĠList < TestCase > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Type Ġ= ĠList Type () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAn Ġempty Ġlist Ġand Ġan Ġempty Ġs - expression Ġshould Ġbe Ġa Ġlist Ġof Ġs - exp Ġof Ġany Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatic Type . ALL _ TYPES . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ" [] ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= ĠList Type ( it ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatic Type . ALL _ TYPES . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ" SEXP ()", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= ĠS exp Type ( it ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġlist Ġwith Ġa Ġsingle Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSC AL ARS . flatMap Ġ{ Ġp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatic Type . ALL _ TYPES . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ"[ ${ p . sql Value } ]", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= ĠList Type ( it ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġp . expected Types . contains ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġs - exp Ġwith Ġa Ġa Ġsingle Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSC AL ARS . flatMap Ġ{ Ġp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatic Type . ALL _ TYPES . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ" SEXP (${ p . sql Value })", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= ĠS exp Type ( it ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġp . expected Types . contains ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġlist Ġwith Ġa Ġmultiple Ġvalues ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSC AL ARS . flatMap Ġ{ Ġp 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSC AL ARS . flatMap Ġ{ Ġp 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatic Type . ALL _ TYPES . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ"[ ${ p 1 . sql Value }, Ġ${ p 2 . sql Value } ]", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= ĠList Type ( it ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġp 1 . expected Types . contains ( it ) Ġ&& Ġp 2 . expected Types . contains ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġs - exp Ġwith Ġa Ġmultiple Ġvalues ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSC AL ARS . flatMap Ġ{ Ġp 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSC AL ARS . flatMap Ġ{ Ġp 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatic Type . ALL _ TYPES . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ" SEXP (${ p 1 . sql Value }, Ġ${ p 2 . sql Value })", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= ĠS exp Type ( it ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġp 1 . expected Types . contains ( it ) Ġ&& Ġp 2 . expected Types . contains ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). flatten () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Arguments Source ( Struct Is Instance Arguments :: class ) ĊĠĠĠ Ġfun Ġstruct Is Instance Test ( tc : ĠTestCase ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġexpr Value Ġ= Ġassert DoesNot Throw (" Evalu ating Ġthe Ġvalue Ġunder Ġtest Ġshould Ġnot Ġthrow ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeval ( tc . sql Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtc . expected Is Instance Result , Ġtc . static Type . is Instance ( expr Value ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġresult Ġof ĠStatic Type . is Instance () Ġshould Ġmatch Ġthe Ġexpected Ġvalue Ġfor Ġtype Ġ${ tc . static Type } Ġand Ġ\" ${ tc . sql Value }\ "" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠStruct Is Instance Arguments Ġ: ĠArguments Provider Base () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġthe Ġgiven Ġlist Ġof Ġvalues Ġof Ġeach Ġpossible Ġdata Ġtype , Ġcompute Ġa Ġone Ġtest Ġcase Ġfor Ġeach Ġof Ġthe ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Parameters (): ĠList < TestCase > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfor Ġstructs Ġ( have Ġto Ġexclude Ġmissing Ġsince Ġmissing Ġvalues Ġare Ġnot Ġmaterial ized Ġinto Ġstructs ). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSC AL ARS . filter Not Ġ{ Ġit . sql Value Ġ== Ġ" MISSING " Ġ}. flatMap Ġ{ Ġscalar Input 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatic Type . ALL _ TYPES . filter Not Ġ{ Ġit Ġis ĠMissing Type Ġ}. flatMap Ġ{ Ġstatic Type Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclosed Content Struct Type Ġ= ĠStruct Type ( map Of (" foo " Ġto Ġstatic Type ), Ġcontent Closed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġopen Content Struct Type Ġ= ĠStruct Type ( map Of (" foo " Ġto Ġstatic Type ), Ġcontent Closed Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclosed Content With Optional Field Ġ= ĠStruct Type ( map Of (" foo " Ġto ĠAny OfType ( set Of ( MISSING , Ġstatic Type ))), Ġcontent Closed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġclosed Ġcontent Ġwith Ġmatching Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ"{ ' foo ': Ġ${ scalar Input 1 . sql Value } Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= Ġclosed Content Struct Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġscalar Input 1 . expected Types . contains ( static Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġopen Ġcontent Ġwhere Ġall Ġfields Ġmatch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ"{ ' foo ': Ġ${ scalar Input 1 . sql Value }, Ġ' open Content ': Ġ' is Allowed ' Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= Ġopen Content Struct Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġscalar Input 1 . expected Types . contains ( static Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġclosed Ġcontent Ġwith Ġmissing Ġrequired Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ"{ Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= Ġclosed Content Struct Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġclosed Ġcontent Ġwith Ġnon - matching Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ"{ ' bar ': Ġ${ scalar Input 1 . sql Value } Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= Ġclosed Content Struct Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġclosed Ġcontent Ġwith Ġoptional Ġfield Ġthat Ġis Ġpresent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ"{ ' foo ': Ġ${ scalar Input 1 . sql Value } Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= Ġclosed Content With Optional Field , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġscalar Input 1 . expected Types . contains ( static Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġclosed Ġcontent Ġwith Ġoptional Ġfield Ġthat Ġis Ġnot Ġpresent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ"{ Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= Ġclosed Content With Optional Field , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġopen Ġcontent Ġwith Ġmissing Ġrequired Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ"{ Ġ' open Content ': Ġ' is Allowed ' Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= Ġopen Content Struct Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġopen Ġcontent Ġwith Ġa Ġnon - matching Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ"{ ' bar ': Ġ${ scalar Input 1 . sql Value }, Ġ' open Content ': Ġ' is Allowed ' Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= Ġopen Content Struct Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġopen Ġcontent Ġwith Ġan Ġnon - matching Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ"{ ' bar ': Ġ${ scalar Input 1 . sql Value }, Ġ' open Content ': Ġ' isNot Allowed ' Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= Ġopen Content Struct Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġduplicate Ġstruct Ġfields Ġwith Ġvalues Ġof Ġthe Ġsame Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ"{ ' foo ': Ġ${ scalar Input 1 . sql Value }, Ġ' foo ': Ġ${ scalar Input 1 . sql Value } Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= Ġclosed Content Struct Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġscalar Input 1 . expected Types . contains ( static Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDuplicate Ġstruct Ġfields Ġwith Ġvalues Ġof Ġdifferent Ġtypes . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġgenerate Ġone Ġtest Ġcase Ġfor Ġevery Ġscalar Ġvalue Ġwith Ġevery Ġother Ġscalar Ġvalue Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġevery Ġtype . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSC AL ARS . filter Not Ġ{ Ġit . sql Value Ġ== Ġ" MISSING " Ġ}. map Ġ{ Ġscalar Input 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTestCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql Value Ġ= Ġ"{ ' foo ': Ġ${ scalar Input 1 . sql Value }, Ġ' foo ': Ġ${ scalar Input 2 . sql Value } Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Type Ġ= Ġclosed Content Struct Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġexpect Ġthe Ġresult Ġto Ġbe Ġ` TRUE ` Ġonly Ġif Ġthe Ġvalues Ġof Ġthe Ġfoo Ġand Ġbar Ġfields ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmatch Ġthe Ġstatic Ġtype . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Is Instance Result Ġ= Ġscalar Input 1 . expected Types . contains ( static Type ) Ġ&& Ġscalar Input 2 . expected Types . contains ( static Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). flatten () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). flatten () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ