package Ġcom . squareup . sql de light . core . queries Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġcom . squareup . sql de light . core . compiler . Mut ator Query Generator Ċ import Ġcom . squareup . sql de light . test . util . Fixture Compiler Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Temporary Folder Ċ Ċ class ĠMut ator Query Type Test Ġ{ ĊĠ Ġ@ get : Rule Ġval Ġtemp Folder Ġ= ĠTemporary Folder () ĊĊĠ Ġ@ Test Ġfun Ġ` type Ġis Ġgenerated Ġproperly Ġfor Ġno Ġresult Ġset Ġchanges `() Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= ĠFix ture Compiler . parse Sql (""" ĊĠĠĠĠĠ Ġ| CREATE ĠTABLE Ġdata Ġ( ĊĠĠĠĠĠ Ġ| Ġ Ġid ĠINTEGER ĠAS ĠInt ĠPRIMARY ĠKEY , ĊĠĠĠĠĠ Ġ| Ġ Ġvalue ĠTEXT ĠAS Ġkotlin . collections . List < String > ĊĠĠĠĠĠ Ġ| ); ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| insert Data : ĊĠĠĠĠĠ Ġ| INSERT ĠINTO Ġdata ĊĠĠĠĠĠ Ġ| VALUES Ġ( ?, Ġ? ); ĊĠĠĠĠĠ Ġ""" . trim Margin (), Ġtemp Folder ) ĊĊĠĠĠ Ġval Ġgenerator Ġ= ĠMut ator Query Generator ( file . named Mut ators . first ()) ĊĊĠĠĠ ĠassertThat ( generator . type (). toString ()). isEqualTo (""" ĊĠĠĠĠĠ Ġ| private Ġinner Ġclass ĠInsert Data ( private Ġval Ġstatement : Ġcom . squareup . sql de light . db . Sql PreparedStatement ) Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġfun Ġexecute ( id : Ġkotlin . Int ?, Ġvalue : Ġkotlin . collections . List < kotlin . String >? ): Ġkotlin . Long Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind Long ( 1 , Ġif Ġ( id Ġ== Ġnull ) Ġnull Ġelse Ġid . to Long ()) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind String ( 2 , Ġif Ġ( value Ġ== Ġnull ) Ġnull Ġelse Ġquery Wrapper . data Adapter . value Adapter . encode ( value )) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstatement . execute () ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠ Ġ| """. trim Margin ()) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` type Ġis Ġgenerated Ġproperly Ġfor Ġresult Ġset Ġchanges Ġin Ġsame Ġfile `() Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= ĠFix ture Compiler . parse Sql (""" ĊĠĠĠĠĠ Ġ| CREATE ĠTABLE Ġdata Ġ( ĊĠĠĠĠĠ Ġ| Ġ Ġid ĠINTEGER ĠAS ĠInt ĠPRIMARY ĠKEY , ĊĠĠĠĠĠ Ġ| Ġ Ġvalue ĠTEXT ĠAS Ġkotlin . collections . List < String > ĊĠĠĠĠĠ Ġ| ); ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| select For Id : ĊĠĠĠĠĠ Ġ| SELECT Ġ* ĊĠĠĠĠĠ Ġ| FROM Ġdata ĊĠĠĠĠĠ Ġ| WHERE Ġid Ġ= Ġ? ; ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| insert Data : ĊĠĠĠĠĠ Ġ| INSERT ĠINTO Ġdata ĊĠĠĠĠĠ Ġ| VALUES Ġ( ?, Ġ? ); ĊĠĠĠĠĠ Ġ""" . trim Margin (), Ġtemp Folder , ĠfileName Ġ= Ġ" Data . sq ") ĊĊĠĠĠ Ġval Ġgenerator Ġ= ĠMut ator Query Generator ( file . named Mut ators . first ()) ĊĊĠĠĠ ĠassertThat ( generator . type (). toString ()). isEqualTo (""" ĊĠĠĠĠĠ Ġ| private Ġinner Ġclass ĠInsert Data ( private Ġval Ġstatement : Ġcom . squareup . sql de light . db . Sql PreparedStatement ) Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġfun Ġexecute ( id : Ġkotlin . Int ?, Ġvalue : Ġkotlin . collections . List < kotlin . String >? ): Ġkotlin . Long Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind Long ( 1 , Ġif Ġ( id Ġ== Ġnull ) Ġnull Ġelse Ġid . to Long ()) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind String ( 2 , Ġif Ġ( value Ġ== Ġnull ) Ġnull Ġelse Ġquery Wrapper . data Adapter . value Adapter . encode ( value )) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstatement . execute () ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġnotify Queries ( query Wrapper . data Queries . select For Id ) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠ Ġ| """. trim Margin ()) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` type Ġis Ġgenerated Ġproperly Ġfor Ġresult Ġset Ġchanges Ġin Ġdifferent Ġfile `() Ġ{ ĊĠĠĠ ĠFix ture Compiler . write Sql (""" ĊĠĠĠĠĠ Ġ| select For Id : ĊĠĠĠĠĠ Ġ| SELECT Ġ* ĊĠĠĠĠĠ Ġ| FROM Ġdata ĊĠĠĠĠĠ Ġ| WHERE Ġid Ġ= Ġ? ; ĊĠĠĠĠĠ Ġ""" . trim Margin (), Ġtemp Folder , ĠfileName Ġ= Ġ" Other Data . sq ") ĊĊĠĠĠ Ġval Ġfile Ġ= ĠFix ture Compiler . parse Sql (""" ĊĠĠĠĠĠ Ġ| CREATE ĠTABLE Ġdata Ġ( ĊĠĠĠĠĠ Ġ| Ġ Ġid ĠINTEGER ĠAS ĠInt ĠPRIMARY ĠKEY , ĊĠĠĠĠĠ Ġ| Ġ Ġvalue ĠTEXT ĠAS Ġkotlin . collections . List < String > ĊĠĠĠĠĠ Ġ| ); ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| insert Data : ĊĠĠĠĠĠ Ġ| INSERT ĠINTO Ġdata ĊĠĠĠĠĠ Ġ| VALUES Ġ( ?, Ġ? ); ĊĠĠĠĠĠ Ġ""" . trim Margin (), Ġtemp Folder , ĠfileName Ġ= Ġ" Data . sq ") ĊĊĠĠĠ Ġval Ġgenerator Ġ= ĠMut ator Query Generator ( file . named Mut ators . first ()) ĊĊĠĠĠ ĠassertThat ( generator . type (). toString ()). isEqualTo (""" ĊĠĠĠĠĠ Ġ| private Ġinner Ġclass ĠInsert Data ( private Ġval Ġstatement : Ġcom . squareup . sql de light . db . Sql PreparedStatement ) Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġfun Ġexecute ( id : Ġkotlin . Int ?, Ġvalue : Ġkotlin . collections . List < kotlin . String >? ): Ġkotlin . Long Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind Long ( 1 , Ġif Ġ( id Ġ== Ġnull ) Ġnull Ġelse Ġid . to Long ()) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind String ( 2 , Ġif Ġ( value Ġ== Ġnull ) Ġnull Ġelse Ġquery Wrapper . data Adapter . value Adapter . encode ( value )) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstatement . execute () ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġnotify Queries ( query Wrapper . other Data Queries . select For Id ) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠ Ġ| """. trim Margin ()) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` type Ġdoes Ġnot Ġinclude Ġselects Ġwith Ġunchanged Ġresult Ġsets `() Ġ{ ĊĠĠĠ ĠFix ture Compiler . write Sql (""" ĊĠĠĠĠĠ Ġ| CREATE ĠTABLE Ġother _ data Ġ( ĊĠĠĠĠĠ Ġ| Ġ Ġid ĠINTEGER ĠNOT ĠNULL ĠPRIMARY ĠKEY ĊĠĠĠĠĠ Ġ| ); ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| select For Id : ĊĠĠĠĠĠ Ġ| SELECT Ġ* ĊĠĠĠĠĠ Ġ| FROM Ġother _ data ĊĠĠĠĠĠ Ġ| WHERE Ġid Ġ= Ġ? ; ĊĠĠĠĠĠ Ġ""" . trim Margin (), Ġtemp Folder , ĠfileName Ġ= Ġ" Other Data . sq ") ĊĊĠĠĠ Ġval Ġfile Ġ= ĠFix ture Compiler . parse Sql (""" ĊĠĠĠĠĠ Ġ| CREATE ĠTABLE Ġdata Ġ( ĊĠĠĠĠĠ Ġ| Ġ Ġid ĠINTEGER ĠAS ĠInt ĠNOT ĠNULL ĠPRIMARY ĠKEY , ĊĠĠĠĠĠ Ġ| Ġ Ġvalue ĠTEXT ĠAS Ġkotlin . collections . List < String > ĊĠĠĠĠĠ Ġ| ); ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| select For Id : ĊĠĠĠĠĠ Ġ| SELECT Ġ* ĊĠĠĠĠĠ Ġ| FROM Ġother _ data ĊĠĠĠĠĠ Ġ| WHERE Ġid Ġ= Ġ? ; ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| insert Data : ĊĠĠĠĠĠ Ġ| INSERT ĠINTO Ġdata ĊĠĠĠĠĠ Ġ| VALUES Ġ( ?, Ġ? ); ĊĠĠĠĠĠ Ġ""" . trim Margin (), Ġtemp Folder , ĠfileName Ġ= Ġ" Data . sq ") ĊĊĠĠĠ Ġval Ġgenerator Ġ= ĠMut ator Query Generator ( file . named Mut ators . first ()) ĊĊĠĠĠ ĠassertThat ( generator . type (). toString ()). isEqualTo (""" ĊĠĠĠĠĠ Ġ| private Ġinner Ġclass ĠInsert Data ( private Ġval Ġstatement : Ġcom . squareup . sql de light . db . Sql PreparedStatement ) Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġfun Ġexecute ( id : Ġkotlin . Int ?, Ġvalue : Ġkotlin . collections . List < kotlin . String >? ): Ġkotlin . Long Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind Long ( 1 , Ġif Ġ( id Ġ== Ġnull ) Ġnull Ġelse Ġid . to Long ()) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind String ( 2 , Ġif Ġ( value Ġ== Ġnull ) Ġnull Ġelse Ġquery Wrapper . data Adapter . value Adapter . encode ( value )) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstatement . execute () ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠ Ġ| """. trim Margin ()) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` null Ġcan Ġbe Ġpassed Ġfor Ġinteger Ġprimary Ġkeys `() Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= ĠFix ture Compiler . parse Sql (""" ĊĠĠĠĠĠ Ġ| CREATE ĠTABLE Ġdata Ġ( ĊĠĠĠĠĠ Ġ| Ġ Ġid ĠINTEGER ĠAS ĠInt ĠPRIMARY ĠKEY , ĊĠĠĠĠĠ Ġ| Ġ Ġvalue ĠTEXT ĠAS Ġkotlin . collections . List < String > ĊĠĠĠĠĠ Ġ| ); ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| insert Data : ĊĠĠĠĠĠ Ġ| INSERT ĠINTO Ġdata ĊĠĠĠĠĠ Ġ| VALUES Ġ( ?, Ġ? ); ĊĠĠĠĠĠ Ġ""" . trim Margin (), Ġtemp Folder , ĠfileName Ġ= Ġ" Data . sq ") ĊĊĠĠĠ Ġval Ġgenerator Ġ= ĠMut ator Query Generator ( file . named Mut ators . first ()) ĊĊĠĠĠ ĠassertThat ( generator . type (). toString ()). isEqualTo (""" ĊĠĠĠĠĠ Ġ| private Ġinner Ġclass ĠInsert Data ( private Ġval Ġstatement : Ġcom . squareup . sql de light . db . Sql PreparedStatement ) Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġfun Ġexecute ( id : Ġkotlin . Int ?, Ġvalue : Ġkotlin . collections . List < kotlin . String >? ): Ġkotlin . Long Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind Long ( 1 , Ġif Ġ( id Ġ== Ġnull ) Ġnull Ġelse Ġid . to Long ()) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind String ( 2 , Ġif Ġ( value Ġ== Ġnull ) Ġnull Ġelse Ġquery Wrapper . data Adapter . value Adapter . encode ( value )) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstatement . execute () ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠ Ġ| """. trim Margin ()) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` mut ator Ġquery Ġhas Ġinner Ġselect `() Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= ĠFix ture Compiler . parse Sql (""" ĊĠĠĠĠĠ Ġ| CREATE ĠTABLE Ġdata Ġ( ĊĠĠĠĠĠ Ġ| Ġ Ġid ĠINTEGER ĠAS ĠInt ĠPRIMARY ĠKEY , ĊĠĠĠĠĠ Ġ| Ġ Ġvalue ĠTEXT ĠAS Ġkotlin . collections . List < String > ĊĠĠĠĠĠ Ġ| ); ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| select For Id : ĊĠĠĠĠĠ Ġ| SELECT Ġ* ĊĠĠĠĠĠ Ġ| FROM Ġdata ĊĠĠĠĠĠ Ġ| WHERE Ġid Ġ= Ġ 1 ; ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| delete Data : ĊĠĠĠĠĠ Ġ| DELETE ĠFROM Ġdata ĊĠĠĠĠĠ Ġ| WHERE Ġid Ġ= Ġ 1 ĊĠĠĠĠĠ Ġ| AND Ġvalue ĠIN Ġ( ĊĠĠĠĠĠ Ġ| Ġ ĠSELECT Ġdata . value ĊĠĠĠĠĠ Ġ| Ġ ĠFROM Ġdata ĊĠĠĠĠĠ Ġ| Ġ ĠINNER ĠJOIN Ġdata ĠAS Ġdata 2 ĊĠĠĠĠĠ Ġ| Ġ ĠON Ġdata . id Ġ= Ġdata 2 . id ĊĠĠĠĠĠ Ġ| ); ĊĠĠĠĠĠ Ġ""" . trim Margin (), Ġtemp Folder , ĠfileName Ġ= Ġ" Data . sq ") ĊĊĠĠĠ Ġval Ġgenerator Ġ= ĠMut ator Query Generator ( file . named Mut ators . first ()) ĊĊĠĠĠ ĠassertThat ( generator . type (). toString ()). isEqualTo (""" ĊĠĠĠĠĠ Ġ| private Ġinner Ġclass ĠDelete Data ( private Ġval Ġstatement : Ġcom . squareup . sql de light . db . Sql PreparedStatement ) Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġfun Ġexecute (): Ġkotlin . Long Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstatement . execute () ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġnotify Queries ( query Wrapper . data Queries . select For Id ) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠ Ġ| """. trim Margin ()) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` non Ġnull Ġboolean Ġbind s Ġfine `() Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= ĠFix ture Compiler . parse Sql (""" ĊĠĠĠĠĠ Ġ| CREATE ĠTABLE Ġdata Ġ( ĊĠĠĠĠĠ Ġ| Ġ Ġid ĠINTEGER ĠAS ĠInt ĠPRIMARY ĠKEY , ĊĠĠĠĠĠ Ġ| Ġ Ġvalue ĠTEXT ĠAS ĠBoolean ĠNOT ĠNULL ĊĠĠĠĠĠ Ġ| ); ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| insert Data : ĊĠĠĠĠĠ Ġ| INSERT ĠINTO Ġdata Ġ( value ) ĊĠĠĠĠĠ Ġ| VALUES Ġ(? ); ĊĠĠĠĠĠ Ġ""" . trim Margin (), Ġtemp Folder , ĠfileName Ġ= Ġ" Data . sq ") ĊĊĠĠĠ Ġval Ġgenerator Ġ= ĠMut ator Query Generator ( file . named Mut ators . first ()) ĊĊĠĠĠ ĠassertThat ( generator . type (). toString ()). isEqualTo (""" ĊĠĠĠĠĠ Ġ| private Ġinner Ġclass ĠInsert Data ( private Ġval Ġstatement : Ġcom . squareup . sql de light . db . Sql PreparedStatement ) Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġfun Ġexecute ( value : Ġkotlin . Boolean ): Ġkotlin . Long Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind String ( 1 , Ġif Ġ( value ) Ġ 1 L Ġelse Ġ 0 L ) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstatement . execute () ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠ Ġ| """. trim Margin ()) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` blob Ġbind s Ġfine `() Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= ĠFix ture Compiler . parse Sql (""" ĊĠĠĠĠĠ Ġ| CREATE ĠTABLE Ġdata Ġ( ĊĠĠĠĠĠ Ġ| Ġ Ġid ĠINTEGER ĠAS ĠInt ĠPRIMARY ĠKEY , ĊĠĠĠĠĠ Ġ| Ġ Ġvalue ĠBLOB ĠNOT ĠNULL ĊĠĠĠĠĠ Ġ| ); ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| insert Data : ĊĠĠĠĠĠ Ġ| INSERT ĠINTO Ġdata Ġ( value ) ĊĠĠĠĠĠ Ġ| VALUES Ġ(? ); ĊĠĠĠĠĠ Ġ""" . trim Margin (), Ġtemp Folder , ĠfileName Ġ= Ġ" Data . sq ") ĊĊĠĠĠ Ġval Ġgenerator Ġ= ĠMut ator Query Generator ( file . named Mut ators . first ()) ĊĊĠĠĠ ĠassertThat ( generator . type (). toString ()). isEqualTo (""" ĊĠĠĠĠĠ Ġ| private Ġinner Ġclass ĠInsert Data ( private Ġval Ġstatement : Ġcom . squareup . sql de light . db . Sql PreparedStatement ) Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġfun Ġexecute ( value : Ġkotlin . ByteArray ): Ġkotlin . Long Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind Bytes ( 1 , Ġvalue ) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstatement . execute () ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠ Ġ| """. trim Margin ()) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` real Ġbind s Ġfine `() Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= ĠFix ture Compiler . parse Sql (""" ĊĠĠĠĠĠ Ġ| CREATE ĠTABLE Ġdata Ġ( ĊĠĠĠĠĠ Ġ| Ġ Ġid ĠINTEGER ĠAS ĠInt ĠPRIMARY ĠKEY , ĊĠĠĠĠĠ Ġ| Ġ Ġvalue ĠREAL ĠNOT ĠNULL ĊĠĠĠĠĠ Ġ| ); ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| insert Data : ĊĠĠĠĠĠ Ġ| INSERT ĠINTO Ġdata Ġ( value ) ĊĠĠĠĠĠ Ġ| VALUES Ġ(? ); ĊĠĠĠĠĠ Ġ""" . trim Margin (), Ġtemp Folder , ĠfileName Ġ= Ġ" Data . sq ") ĊĊĠĠĠ Ġval Ġgenerator Ġ= ĠMut ator Query Generator ( file . named Mut ators . first ()) ĊĊĠĠĠ ĠassertThat ( generator . type (). toString ()). isEqualTo (""" ĊĠĠĠĠĠ Ġ| private Ġinner Ġclass ĠInsert Data ( private Ġval Ġstatement : Ġcom . squareup . sql de light . db . Sql PreparedStatement ) Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġfun Ġexecute ( value : Ġkotlin . Double ): Ġkotlin . Long Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind Double ( 1 , Ġvalue ) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstatement . execute () ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠ Ġ| """. trim Margin ()) ĊĠ Ġ} ĊĊĊĠ Ġ@ Test Ġfun Ġ` insert Ġwith Ġtriggers Ġand Ġvirtual Ġtables Ġis Ġfine `() Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= ĠFix ture Compiler . parse Sql (""" ĊĠĠĠĠĠ Ġ| CREATE ĠTABLE Ġitem ( ĊĠĠĠĠĠ Ġ| Ġ Ġid ĠINTEGER ĠNOT ĠNULL ĠPRIMARY ĠKEY ĠAUTO INCREMENT , ĊĠĠĠĠĠ Ġ| Ġ ĠpackageName ĠTEXT ĠNOT ĠNULL , ĊĠĠĠĠĠ Ġ| Ġ ĠclassName ĠTEXT ĠNOT ĠNULL , ĊĠĠĠĠĠ Ġ| Ġ Ġdeprecated ĠINTEGER ĠAS ĠBoolean ĠNOT ĠNULL ĠDEFAULT Ġ 0 , ĊĠĠĠĠĠ Ġ| Ġ Ġlink ĠTEXT ĠNOT ĠNULL , ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| Ġ ĠUNIQUE Ġ( packageName , ĠclassName ) ĊĠĠĠĠĠ Ġ| ); ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| CREATE ĠV IRTUAL ĠTABLE Ġitem _ index ĠUSING Ġf ts 4 ( content ĠTEXT ); ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| insert Item : ĊĠĠĠĠĠ Ġ| INSERT ĠOR ĠFAIL ĠINTO Ġitem ( packageName , ĠclassName , Ġdeprecated , Ġlink ) ĠVALUES Ġ( ?, Ġ?, Ġ?, Ġ? ) ĊĠĠĠĠĠ Ġ| ; ĊĠĠĠĠĠ Ġ| ĊĠĠĠĠĠ Ġ| query Term : ĊĠĠĠĠĠ Ġ| SELECT Ġitem .* ĊĠĠĠĠĠ Ġ| FROM Ġitem _ index ĊĠĠĠĠĠ Ġ| JOIN Ġitem ĠON Ġ( doc id Ġ= Ġitem . id ) ĊĠĠĠĠĠ Ġ| WHERE Ġcontent ĠLIKE Ġ'%' Ġ|| Ġ? 1 Ġ|| Ġ'%' ĠESC APE Ġ'\' ĊĠĠĠĠĠ Ġ| ; ĊĠĠĠĠĠ Ġ| """. trim Margin (), Ġtemp Folder , ĠfileName Ġ= Ġ" Data . sq ") ĊĊĠĠĠ Ġval Ġgenerator Ġ= ĠMut ator Query Generator ( file . named Mut ators . first ()) ĊĊĠĠĠ ĠassertThat ( generator . type (). toString ()). isEqualTo (""" ĊĠĠĠĠĠ Ġ| private Ġinner Ġclass ĠInsert Item ( private Ġval Ġstatement : Ġcom . squareup . sql de light . db . Sql PreparedStatement ) Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġfun Ġexecute ( ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ ĠpackageName : Ġkotlin . String , ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ ĠclassName : Ġkotlin . String , ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġdeprecated : Ġkotlin . Boolean , ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġlink : Ġkotlin . String ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġ): Ġkotlin . Long Ġ{ ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind String ( 1 , ĠpackageName ) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind String ( 2 , ĠclassName ) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind Long ( 3 , Ġif Ġ( deprecated ) Ġ 1 L Ġelse Ġ 0 L ) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġstatement . bind String ( 4 , Ġlink ) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstatement . execute () ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġnotify Queries ( query Wrapper . data Queries . query Term ) ĊĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠ Ġ| """. trim Margin ()) ĊĠ Ġ} Ċ }