package Ġcom . squareup . sql de light . drivers . sql js Ċ Ċ import Ġkotlin . js . Promise Ċ import Ġkotlin . test . After Test Ċ import Ġkotlin . test . Before Test Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertNull Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠSql Js Test Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġdb Promise : ĠPromise < Database > ĊĊĠĠĠ Ġ@ Before Test ĊĠĠĠ Ġfun Ġsetup () Ġ{ Ġdb Promise Ġ= Ġinit Db (). then Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠ Ġdb . run (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| CREATE ĠTABLE Ġtest Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġid ĠINTEGER ĠPRIMARY ĠKEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġvalue ĠTEXT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġdb . run (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| CREATE ĠTABLE Ġnull ability _ test Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġid ĠINTEGER ĠPRIMARY ĠKEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġinteger _ value ĠINTEGER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġtext _ value ĠTEXT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġblob _ value ĠBLOB , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġreal _ value ĠREAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġ} ĊĊĠĠĠ Ġ@ After Test ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb Promise . then Ġ{ Ġit . close () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġinsert _ can _ run _ multiple _ times () Ġ= Ġdb Promise . then Ġ{ Ġdb Ġ-> ĊĊĠĠĠĠĠĠĠ Ġval Ġinsert Ġ= Ġ" INSERT ĠINTO Ġtest ĠVALUES Ġ( ?, Ġ? );" ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ" SELECT Ġ* ĠFROM Ġtest " ĊĠĠĠĠĠĠĠ Ġval Ġchanges Ġ= Ġ" SELECT Ġchanges ()" ĊĊĠĠĠĠĠĠĠ Ġdb . prepare ( query ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( step ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdb . prepare ( insert ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( dynamic ArrayOf ( 1 , Ġ" A lec ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdb . prepare ( query ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( step ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( step ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdb . prepare ( changes ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( step ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġget ()[ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdb . prepare ( query ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( step ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġget ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" A lec ", Ġget ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdb . prepare ( insert ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( dynamic ArrayOf ( 2 , Ġ" J ake ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdb . prepare ( changes ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( step ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġget ()[ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdb . prepare ( query ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( step ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġget ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" A lec ", Ġget ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( step ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġget ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" J ake ", Ġget ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdb . prepare (" DELETE ĠFROM Ġtest "). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdb . prepare ( changes ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( step ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġget ()[ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdb . prepare ( query ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( step ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġquery _ can _ run _ multiple _ times () Ġ= Ġdb Promise . then Ġ{ Ġdb Ġ-> ĊĊĠĠĠĠĠĠĠ Ġval Ġinsert Ġ= Ġ" INSERT ĠINTO Ġtest ĠVALUES Ġ( ?, Ġ? );" ĊĠĠĠĠĠĠĠ Ġval Ġchanges Ġ= Ġ" SELECT Ġchanges ()" ĊĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic ArrayOf ( 1 , Ġ" A lec "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic ArrayOf ( 2 , Ġ" J ake ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġparams . forEach Ġ{ Ġparam Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . prepare ( insert ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( param ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstep () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . prepare ( changes ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( step ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġget ()[ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ" SELECT Ġ* ĠFROM Ġtest ĠWHERE Ġvalue Ġ= Ġ? " ĊĊĠĠĠĠĠĠĠ Ġrepeat ( 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . prepare ( query , Ġdynamic ArrayOf (" J ake ")). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( step ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġget ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" J ake ", Ġget ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( step ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġsql ResultSet _ get ters _ return _ null _ if _ the _ column _ values _ are _ NULL () Ġ= Ġdb Promise . then Ġ{ Ġdb Ġ-> ĊĊĠĠĠĠĠĠĠ Ġval Ġinsert Ġ= Ġ" INSERT ĠINTO Ġnull ability _ test ĠVALUES Ġ( ?, Ġ?, Ġ?, Ġ?, Ġ? );" ĊĠĠĠĠĠĠĠ Ġval Ġchanges Ġ= Ġ" SELECT Ġchanges ()" ĊĠĠĠĠĠĠĠ Ġval Ġselect Ġ= Ġ" SELECT Ġ* ĠFROM Ġnull ability _ test " ĊĊĠĠĠĠĠĠĠ Ġval Ġchanges Statement Ġ= Ġdb . prepare ( changes ) ĊĊĠĠĠĠĠĠĠ Ġdb . prepare ( insert ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( dynamic ArrayOf ( 1 , Ġnull , Ġnull , Ġnull , Ġnull )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġchanges Statement . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġget ()[ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdb . prepare ( select ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( step ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġget ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( get ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( get ( 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( get ( 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( get ( 4 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġdynamic ArrayOf ( var arg Ġargs : ĠAny ?): ĠArray < dynamic > Ġ= Ġargs . map Ġ{ Ġit ?. as Dynamic () Ġ}. to Typed Array () Ċ