package Ġinfo . jd avid . as yn k . mysql Ċ Ċ import Ġinfo . jd avid . as yn k . sql .* Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . jupiter . api . After All Ċ import Ġorg . junit . jupiter . api . Assertions .* Ċ import Ġorg . junit . jupiter . api . Before All Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Enum Source Ċ import Ġjava . math . BigInteger Ċ import Ġjava . net . Inet Address Ċ import Ġjava . net . Inet SocketAddress Ċ import Ġjava . util . concurrent . Executors Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠLocal Db Tests Ġ{ ĊĠ Ġprivate Ġval Ġcredentials : ĠM ysql Authentication . Credentials ĊĠ Ġprivate Ġval Ġdatabase Name : ĠString ĊĠ Ġinit Ġ{ ĊĠĠĠ Ġcredentials Ġ= ĠM ysql Authentication . Credentials . Password Credentials (" test ", Ġ" as yn k ") ĊĠĠĠ Ġdatabase Name Ġ= Ġ" world " ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ@ Jvm Static Ġ@ Before All ĊĠĠĠ Ġfun Ġstart Docker Containers () Ġ{ ĊĠĠĠĠĠ ĠExec utors . new Cached ThreadPool (). apply Ġ{ ĊĠĠĠĠĠĠĠ ĠDocker . Database Version . values (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġsubmit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDocker . start Container ( it ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġshutdown () ĊĠĠĠĠĠ Ġ}. await Termination ( 3 0 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Jvm Static Ġ@ After All ĊĠĠĠ Ġfun Ġstop Docker Containers () Ġ{ ĊĠĠĠĠĠ ĠExec utors . new Cached ThreadPool (). apply Ġ{ ĊĠĠĠĠĠĠĠ ĠDocker . Database Version . values (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġsubmit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDocker . stop Container ( it ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġshutdown () ĊĠĠĠĠĠ Ġ}. await Termination ( 1 5 , ĠTimeUnit . SECONDS ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĊĠ Ġ@ Parameterized Test ( name Ġ= Ġ"{ index } Ġ=> Ġ{ 0 }") ĊĠ Ġ@ Enum Source ( value Ġ= ĠDocker . Database Version :: class ) ĊĠ Ġfun Ġtest Simple ( database Version : ĠDocker . Database Version ) Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġaddress Ġ= ĠInet SocketAddress ( Inet Address . getLocal Host (), Ġdatabase Version . port ) ĊĠĠĠĠĠ Ġcredentials . connect To ( database Name , Ġaddress ). use Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCREATE ĠTEMP OR ARY ĠTABLE Ġtest Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ĠĠĠĠĠĠĠĠĠĠĠĠ Ġserial ĠĠĠ ĠPRIMARY ĠKEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname ĠĠĠĠĠĠĠĠĠĠ Ġtext ĠĠĠĠĠ ĠNOT ĠNULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes ĠĠĠĠĠĠĠĠĠ Ġblob ĠĠĠĠĠ ĠDEFAULT ĠNULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive ĠĠĠĠĠĠĠĠ Ġboolean ĠĠ ĠDEFAULT ĠFALSE ĠNOT ĠNULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreation _ date Ġ Ġtimestamp ĠDEFAULT ĠNOW () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( name ) ĠVALUES Ġ( ?) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf (" Name 1 ") ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( name , Ġactive ) ĠVALUES Ġ( ?, Ġ? ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf (" Name 2 ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( name , Ġactive ) ĠVALUES Ġ( ?, Ġ? ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf (" Name 3 ", Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġit . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġname ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ). iterate Ġ{ Ġiterator Ġ-> ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠĠĠ Ġiterator . next (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 1 ", Ġthis [" name "]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( this [" active "] Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠĠĠ Ġiterator . next (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 2 ", Ġthis [" name "]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( this [" active "] Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠĠĠ Ġiterator . next (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 3 ", Ġthis [" name "]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( this [" active "] Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ ĠassertFalse ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġname ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ). toList (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġsize ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 1 ", Ġget ( 0 )[" name "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertFalse ( get ( 0 )[" active "] Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 2 ", Ġget ( 1 )[" name "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( get ( 1 )[" active "] Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 3 ", Ġget ( 2 )[" name "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertFalse ( get ( 2 )[" active "] Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit . values < String >( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġname ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ Ġ" name " ĊĠĠĠĠĠĠĠ Ġ). toList (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġsize ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 1 ", Ġget ( 0 )) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 2 ", Ġget ( 1 )) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 3 ", Ġget ( 2 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit . values < Boolean >( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġname ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ Ġ" active " ĊĠĠĠĠĠĠĠ Ġ). iterate Ġ{ Ġiterator Ġ-> ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠĠĠ ĠassertFalse ( iterator . next ()) ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . next ()) ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠĠĠ ĠassertFalse ( iterator . next ()) ĊĠĠĠĠĠĠĠĠĠ ĠassertFalse ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit . entries < String , Boolean >( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġname ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ Ġ" name ", ĊĠĠĠĠĠĠĠĠĠ Ġ" active " ĊĠĠĠĠĠĠĠ Ġ). toMap (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġsize ) ĊĠĠĠĠĠĠĠĠĠ ĠassertFalse ( this [" Name 1 "] Ġ?: Ġfail < Nothing >()) ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( this [" Name 2 "] Ġ?: Ġfail < Nothing >()) ĊĠĠĠĠĠĠĠĠĠ ĠassertFalse ( this [" Name 3 "] Ġ?: Ġfail < Nothing >()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit . entries < String , Boolean >( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġname ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ Ġ" name ", ĊĠĠĠĠĠĠĠĠĠ Ġ" active " ĊĠĠĠĠĠĠĠ Ġ). iterate Ġ{ Ġiterator Ġ-> ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠĠĠ Ġiterator . next (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 1 ", Ġfirst ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( second ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠĠĠ Ġiterator . next (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 2 ", Ġfirst ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( second ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠĠĠ Ġiterator . next (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 3 ", Ġfirst ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( second ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ ĠassertFalse ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUPDATE Ġtest ĠSET Ġactive = TRUE ĠWHERE Ġactive = FALSE ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġit . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġname ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ). toList (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġsize ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 1 ", Ġget ( 0 )[" name "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( get ( 0 )[" active "] Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 2 ", Ġget ( 1 )[" name "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( get ( 1 )[" active "] Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 3 ", Ġget ( 2 )[" name "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( get ( 2 )[" active "] Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUPDATE Ġtest ĠSET Ġactive = FALSE ĠWHERE ĠNOT ( name ĠLIKE Ġ'% 2 ') ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġit . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġname ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ). toList (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġsize ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 1 ", Ġget ( 0 )[" name "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertFalse ( get ( 0 )[" active "] Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 2 ", Ġget ( 1 )[" name "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( get ( 1 )[" active "] Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 3 ", Ġget ( 2 )[" name "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertFalse ( get ( 2 )[" active "] Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDELETE ĠFROM Ġtest ĠWHERE Ġactive = FALSE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġit . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġname ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ). toList (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġsize ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Name 2 ", Ġget ( 0 )[" name "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( get ( 0 )[" active "] Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Parameterized Test ( name Ġ= Ġ"{ index } Ġ=> Ġ{ 0 }") ĊĠ Ġ@ Enum Source ( value Ġ= ĠDocker . Database Version :: class ) ĊĠ Ġfun Ġtest PreparedStatement ( database Version : ĠDocker . Database Version ) Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġaddress Ġ= ĠInet SocketAddress ( Inet Address . getLocal Host (), Ġdatabase Version . port ) ĊĠĠĠĠĠ Ġcredentials . connect To ( database Name , Ġaddress ). use Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCREATE ĠTEMP OR ARY ĠTABLE Ġtest Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ĠĠĠĠĠĠĠĠĠĠĠĠ Ġserial ĠĠĠ ĠPRIMARY ĠKEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname ĠĠĠĠĠĠĠĠĠĠ Ġtext ĠĠĠĠĠ ĠNOT ĠNULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive ĠĠĠĠĠĠĠĠ Ġboolean ĠĠ ĠDEFAULT ĠFALSE ĠNOT ĠNULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreation _ date Ġ Ġtimestamp ĠDEFAULT ĠNOW () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġit . prepare (""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( name ) ĠVALUES Ġ( ?) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertFalse ( temporary ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġaffected Rows ( listOf (" Name 1 "))) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġaffected Rows ( listOf (" Name 2 "))) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġaffected Rows ( listOf (" Name 3 "))) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġaffected Rows ( listOf (" Name 4 "))) ĊĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaffected Rows ( listOf (" Name 5 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Execution Ġof Ġclosed Ġprepared Ġstatement Ġshould Ġhave Ġfailed .") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġcatch Ġ( ignore : ĠException ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit . prepare (" SELECT Ġ* ĠFROM Ġtest ĠWHERE Ġactive =? "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertFalse ( temporary ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġrows ( listOf ( false )). toList (). size ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġrows ( listOf ( true )). toList (). size ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġvalues < String >( listOf ( false ), Ġ" name "). toList (). size ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġvalues < String >( listOf ( true ), Ġ" name "). toList (). size ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġentries < String , Boolean >( listOf ( false ), Ġ" name ", Ġ" active "). toMap (). size ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentries < String , Boolean >( listOf ( true ), Ġ" name ", Ġ" active "). toMap (). size ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows (" DELETE ĠFROM Ġtest ĠWHERE Ġname = ?", ĠlistOf (" Name 4 "))) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġrows ( listOf ( false )). toList (). size ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows (" UPDATE Ġtest ĠSET Ġactive = TRUE ĠWHERE Ġname = ?", ĠlistOf (" Name 1 "))) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġrows ( listOf ( false )). toList (). size ) ĊĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrows ( listOf ( false )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Execution Ġof Ġclosed Ġprepared Ġstatement Ġshould Ġhave Ġfailed .") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġcatch Ġ( ignore : ĠException ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Parameterized Test ( name Ġ= Ġ"{ index } Ġ=> Ġ{ 0 }") ĊĠ Ġ@ Enum Source ( value Ġ= ĠDocker . Database Version :: class ) ĊĠ Ġfun Ġtest Null ( database Version : ĠDocker . Database Version ) Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġaddress Ġ= ĠInet SocketAddress ( Inet Address . getLocal Host (), Ġdatabase Version . port ) ĊĠĠĠĠĠ Ġcredentials . connect To ( database Name , Ġaddress ). use Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCREATE ĠTEMP OR ARY ĠTABLE Ġtest Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ĠĠĠĠĠĠĠĠĠĠĠĠ Ġserial ĠĠĠ ĠPRIMARY ĠKEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi 1 ĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteger , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs 1 ĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext ĠĠĠĠĠ ĠDEFAULT ĠNULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 ĠĠĠĠĠĠĠĠĠĠĠĠ Ġboolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( i 1 , Ġs 1 , Ġb 1 ) ĠVALUES Ġ( ?, Ġ?, Ġ? ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf ( 1 2 3 4 , Ġnull , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( i 1 , Ġb 1 ) ĠVALUES Ġ( ?, Ġ? ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf ( null , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( i 1 , Ġb 1 ) ĠVALUES Ġ( ?, Ġ? ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf ( null , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġit . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġid ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ). toList (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġsize ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 3 4 , Ġget ( 0 )[" i 1 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertNull ( get ( 0 )[" s 1 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġget ( 0 )[" b 1 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertNull ( get ( 1 )[" i 1 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertNull ( get ( 1 )[" s 1 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( false , get ( 1 )[" b 1 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertNull ( get ( 2 )[" i 1 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertNull ( get ( 2 )[" s 1 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertNull ( get ( 2 )[" b 1 "]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Parameterized Test ( name Ġ= Ġ"{ index } Ġ=> Ġ{ 0 }") ĊĠ Ġ@ Enum Source ( value Ġ= ĠDocker . Database Version :: class ) ĊĠ Ġfun Ġtest Unsigned ( database Version : ĠDocker . Database Version ) Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġaddress Ġ= ĠInet SocketAddress ( Inet Address . getLocal Host (), Ġdatabase Version . port ) ĊĠĠĠĠĠ Ġcredentials . connect To ( database Name , Ġaddress ). use Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCREATE ĠTEMP OR ARY ĠTABLE Ġtest Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ĠĠĠĠĠĠĠĠĠĠĠĠ Ġserial ĠĠĠ ĠPRIMARY ĠKEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi 1 ĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteger ĠĠ ĠUNSIGNED ĠNOT ĠNULL ĠDEFAULT Ġ 4 2 9 4 9 6 7 2 9 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi 2 ĠĠĠĠĠĠĠĠĠĠĠĠ Ġbigint ĠĠĠ ĠUNSIGNED ĠNOT ĠNULL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( i 1 , Ġi 2 ) ĠVALUES Ġ( ?, Ġ? ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf ( 2 4 0 0 0 0 0 0 0 0 L , ĠBigInteger (" 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ")) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( i 2 ) ĠVALUES Ġ( ?) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf ( 1 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġit . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġid ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ). toList (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġsize ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 4 0 0 0 0 0 0 0 0 L , Ġget ( 0 )[" i 1 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( BigInteger (" 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "), Ġget ( 0 )[" i 2 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 4 2 9 4 9 6 7 2 9 5 L , Ġget ( 1 )[" i 1 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( BigInteger . valueOf ( 1 L ), Ġget ( 1 )[" i 2 "]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Parameterized Test ( name Ġ= Ġ"{ index } Ġ=> Ġ{ 0 }") ĊĠ Ġ@ Enum Source ( value Ġ= ĠDocker . Database Version :: class ) ĊĠ Ġfun Ġtest Boolean ( database Version : ĠDocker . Database Version ) Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġaddress Ġ= ĠInet SocketAddress ( Inet Address . getLocal Host (), Ġdatabase Version . port ) ĊĠĠĠĠĠ Ġcredentials . connect To ( database Name , Ġaddress ). use Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCREATE ĠTEMP OR ARY ĠTABLE Ġtest Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ĠĠĠĠĠĠĠĠĠĠĠĠ Ġserial ĠĠĠ ĠPRIMARY ĠKEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 ĠĠĠĠĠĠĠĠĠĠĠĠ Ġbit ĠĠĠĠĠĠ ĠNOT ĠNULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 2 ĠĠĠĠĠĠĠĠĠĠĠĠ Ġboolean ĠĠ ĠNOT ĠNULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 ĠĠĠĠĠĠĠĠĠĠĠĠ Ġbit ĠĠĠĠĠĠ ĠDEFAULT ĠNULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 4 ĠĠĠĠĠĠĠĠĠĠĠĠ Ġboolean ĠĠ ĠDEFAULT ĠFALSE ĠNOT ĠNULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 5 ĠĠĠĠĠĠĠĠĠĠĠĠ Ġbit ĠĠĠĠĠĠ ĠDEFAULT ĠTRUE ĠNOT ĠNULL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( b 1 , Ġb 2 , Ġb 3 ) ĠVALUES Ġ( ?, Ġ?, Ġ? ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf ( true , Ġtrue , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( b 1 , Ġb 2 , Ġb 3 ) ĠVALUES Ġ( ?, Ġ?, Ġ? ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf ( false , Ġfalse , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( b 1 , Ġb 2 , Ġb 3 , Ġb 4 , Ġb 5 ) ĠVALUES Ġ( ?, Ġ?, Ġ?, Ġ?, Ġ? ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf ( true , Ġtrue , Ġtrue , Ġtrue , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġit . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġid ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ). toList (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġsize ) ĊĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( i Ġ!= Ġ 4 , Ġget ( 0 )[" b ${ i } "], Ġ" b ${ i }") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( i Ġ== Ġ 5 , Ġget ( 1 )[" b ${ i }" ]) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġget ( 2 )[" b ${ i }" ]) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Parameterized Test ( name Ġ= Ġ"{ index } Ġ=> Ġ{ 0 }") ĊĠ Ġ@ Enum Source ( value Ġ= ĠDocker . Database Version :: class ) ĊĠ Ġfun Ġtest Enum ( database Version : ĠDocker . Database Version ) Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġaddress Ġ= ĠInet SocketAddress ( Inet Address . getLocal Host (), Ġdatabase Version . port ) ĊĠĠĠĠĠ Ġcredentials . connect To ( database Name , Ġaddress ). use Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCREATE ĠTEMP OR ARY ĠTABLE Ġtest Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ĠĠĠĠĠĠĠĠĠĠĠĠ Ġserial ĠĠĠ ĠPRIMARY ĠKEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenum 1 ĠĠĠĠĠĠĠĠĠ Ġenum (' a ',' b ',' c ',' d ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( enum 1 ) ĠVALUES Ġ( ?) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf (" a ") ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( enum 1 ) ĠVALUES Ġ( ?) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf ( null ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġit . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġid ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ). toList (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġsize ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" a ", Ġget ( 0 )[" enum 1 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertNull ( get ( 1 )[" enum 1 "]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Parameterized Test ( name Ġ= Ġ"{ index } Ġ=> Ġ{ 0 }") ĊĠ Ġ@ Enum Source ( value Ġ= ĠDocker . Database Version :: class ) ĊĠ Ġfun Ġtest Set ( database Version : ĠDocker . Database Version ) Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġaddress Ġ= ĠInet SocketAddress ( Inet Address . getLocal Host (), Ġdatabase Version . port ) ĊĠĠĠĠĠ Ġcredentials . connect To ( database Name , Ġaddress ). use Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCREATE ĠTEMP OR ARY ĠTABLE Ġtest Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ĠĠĠĠĠĠĠĠĠĠĠĠ Ġserial ĠĠĠ ĠPRIMARY ĠKEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset 1 ĠĠĠĠĠĠĠĠĠĠ ĠSET (' a ', Ġ' b ', Ġ' c ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( set 1 ) ĠVALUES Ġ( ?) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf (" a , b ") ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( set 1 ) ĠVALUES Ġ( ?) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf (" c ") ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( set 1 ) ĠVALUES Ġ( ?) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf ("") ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( set 1 ) ĠVALUES Ġ( ?) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf ( null ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġit . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġid ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ). toList (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġsize ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" a , b ", Ġget ( 0 )[" set 1 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals (" c ", Ġget ( 1 )[" set 1 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ("", Ġget ( 2 )[" set 1 "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertNull ( get ( 3 )[" set 1 "]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Parameterized Test ( name Ġ= Ġ"{ index } Ġ=> Ġ{ 0 }") ĊĠ Ġ@ Enum Source ( value Ġ= ĠDocker . Database Version :: class ) ĊĠ Ġfun Ġtest Blob ( database Version : ĠDocker . Database Version ) Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġbytes Ġ= Ġbyte ArrayOf ( 0 x 0 2 . to Byte (), Ġ 0 x 0 0 . to Byte (), Ġ 0 xfa . to Byte (), Ġ 0 x 8 e . to Byte ()) ĊĠĠĠĠĠ Ġval Ġaddress Ġ= ĠInet SocketAddress ( Inet Address . getLocal Host (), Ġdatabase Version . port ) ĊĠĠĠĠĠ Ġcredentials . connect To ( database Name , Ġaddress ). use Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCREATE ĠTEMP OR ARY ĠTABLE Ġtest Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ĠĠĠĠĠĠĠĠĠĠĠĠ Ġserial ĠĠĠ ĠPRIMARY ĠKEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ĠĠĠĠĠĠĠĠĠĠ ĠBLOB ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( data ) ĠVALUES Ġ( ?) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠ ĠlistOf ( bytes ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġit . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ). toList (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġsize ) ĊĠĠĠĠĠĠĠĠĠ ĠassertTrue ( get ( 0 )[" data "] Ġis ĠByteArray ) ĊĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġget ( 0 )[" data "] Ġas ĠByteArray ĊĠĠĠĠĠĠĠĠĠ Ġassert ArrayEquals ( bytes , Ġdata ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Parameterized Test ( name Ġ= Ġ"{ index } Ġ=> Ġ{ 0 }") ĊĠ Ġ@ Enum Source ( value Ġ= ĠDocker . Database Version :: class ) ĊĠ Ġfun Ġtest Sizes ( database Version : ĠDocker . Database Version ) Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġsizes Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠByteArray ( 5 0 ) Ġ{ Ġit . to Byte () Ġ}, ĊĠĠĠĠĠĠĠ ĠByteArray ( 3 0 0 ) Ġ{ Ġit . to Byte () Ġ}, ĊĠĠĠĠĠĠĠ ĠByteArray ( 1 5 0 0 0 ) Ġ{ Ġit . to Byte () Ġ}, ĊĠĠĠĠĠĠĠ ĠByteArray ( 4 5 0 0 0 ) Ġ{ Ġit . to Byte () Ġ}// , Ċ // ĠĠĠĠĠĠĠ ĠByteArray ( 1 0 0 0 0 0 ) Ġ{ Ġit . to Byte () Ġ} ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġval Ġaddress Ġ= ĠInet SocketAddress ( Inet Address . getLocal Host (), Ġdatabase Version . port ) ĊĠĠĠĠĠ Ġcredentials . connect To ( database Name , Ġaddress , Ġ 1 6 0 0 0 0 0 0 ). use Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCREATE ĠTEMP OR ARY ĠTABLE Ġtest Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ĠĠĠĠĠĠĠĠĠĠĠĠ Ġserial ĠĠĠ ĠPRIMARY ĠKEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ĠĠĠĠĠĠĠĠĠĠ ĠL ON GB LOB ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġsizes . forEach Ġ{ bytes Ġ-> ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( data ) ĠVALUES Ġ( ?) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( bytes ) ĊĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ). toList (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( sizes . size , Ġsize ) ĊĠĠĠĠĠĠĠĠĠ Ġsizes . forEach Indexed Ġ{ Ġindex , Ġbytes Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġget ( index )[" data "] ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( data Ġis ĠByteArray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ArrayEquals ( bytes , Ġdata Ġas ĠByteArray ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Parameterized Test ( name Ġ= Ġ"{ index } Ġ=> Ġ{ 0 }") ĊĠ Ġ@ Enum Source ( value Ġ= ĠDocker . Database Version :: class ) ĊĠ Ġfun Ġtest Transactions ( database Version : ĠDocker . Database Version ) Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġaddress Ġ= ĠInet SocketAddress ( Inet Address . getLocal Host (), Ġdatabase Version . port ) ĊĠĠĠĠĠ Ġcredentials . connect To ( database Name , Ġaddress ). use Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCREATE ĠTEMP OR ARY ĠTABLE Ġtest Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ĠĠĠĠĠĠĠĠĠĠĠĠ Ġserial ĠĠĠ ĠPRIMARY ĠKEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteger ĠĠ ĠNOT ĠNULL ĠDEFAULT Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġit . with Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( v ) ĠVALUES Ġ( ?) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 3 4 ) ĊĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( v ) ĠVALUES Ġ( ?) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 3 5 ) ĊĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit . with Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . affected Rows ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġtest Ġ( v ) ĠVALUES Ġ( ?) ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 5 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRoll back Exception () ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( ignore : ĠRoll back Exception ) Ġ{} ĊĠĠĠĠĠĠĠ Ġit . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġtest ĠORDER ĠBY Ġid ĊĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ). toList (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġsize ) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 4 , Ġget ( 0 )[" v "]) ĊĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 5 , Ġget ( 1 )[" v "]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Parameterized Test ( name Ġ= Ġ"{ index } Ġ=> Ġ{ 0 }") ĊĠ Ġ@ Enum Source ( value Ġ= ĠDocker . Database Version :: class ) ĊĠ Ġfun Ġtest World Data ( database Version : ĠDocker . Database Version ) Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġaddress Ġ= ĠInet SocketAddress ( Inet Address . getLocal Host (), Ġdatabase Version . port ) ĊĠĠĠĠĠ Ġcredentials . connect To ( database Name , Ġaddress ). use Ġ{ Ġconnection Ġ-> ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠ 2 3 9 L , ĊĠĠĠĠĠĠĠĠĠ Ġconnection . rows (" SELECT Ġcount (*) ĠAS Ġcount ĠFROM Ġcountry "). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto List (). first ()[" count "] ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġcodes Ġ= Ġconnection . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ" SELECT ĠDISTINCT ĠCountry Code ĠAS Ġcode ĠFROM Ġcity " ĊĠĠĠĠĠĠĠ Ġ). toList (). map Ġ{ Ġit [" code "] Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 3 2 , Ġcodes . size ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( codes . contains (" FR A ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( codes . toSet (). size , Ġcodes . size ) ĊĠĠĠĠĠĠĠ Ġval Ġall Ġ= Ġconnection . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ" SELECT ĠCode ĠAS Ġcode ĠFROM Ġcountry " ĊĠĠĠĠĠĠĠ Ġ). toList (). map Ġ{ Ġit [" code "] Ġ}. toSet () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 3 9 , Ġall . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( all . toSet (). size , Ġall . size ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( all . contains All ( codes )) ĊĊĠĠĠĠĠĠĠ Ġval Ġcities Ġ= Ġconnection . rows ( ĊĠĠĠĠĠĠĠĠĠ Ġ" SELECT ĠName ĠAS Ġcity ĠFROM Ġcity ĠWHERE ĠCountry Code =? ĠORDER ĠBY ĠPop ulation ĠDESC ", ĊĠĠĠĠĠĠĠĠĠ ĠlistOf (" FR A ") ĊĠĠĠĠĠĠĠ Ġ). toList (). map Ġ{ Ġit [" city "] Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 0 , Ġcities . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" Par is ", Ġcities [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" Mar se ille ", Ġcities [ 1 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" Ly on ", Ġcities [ 2 ]) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġclass ĠRoll back Exception : ĠRuntimeException () Ċ Ċ } Ċ