package Ġro . and ob . out of room Ċ Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . fail Ċ import Ġorg . junit . Test Ċ Ċ class ĠCreate Statements Tests Ċ { ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Create Index () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" create Ġ Ġindex Ġif Ġnot Ġexists Ġ` index _ City _ id ` Ġon Ġ` City ` (` id `) ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex ( table Ġ= Ġ" City ". as Table (), Ġ" id ". as Column ()). toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" create Ġunique Ġindex Ġif Ġnot Ġexists Ġ` index _ City _ id ` Ġon Ġ` City ` (` id `) ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex ( table Ġ= Ġ" City ". as Table (), Ġ" id ". as Column (), Ġunique Ġ= Ġtrue ). toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest CreateTable With Column Types () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠTable ( name Ġ= Ġ" Some ") ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠColumn ( name Ġ= Ġ" a ", Ġtype Ġ= ĠSQL Type . Integer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠColumn ( name Ġ= Ġ" b ", Ġtype Ġ= ĠSQL Type . Real ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠColumn ( name Ġ= Ġ" c ", Ġtype Ġ= ĠSQL Type . Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= ĠColumn ( name Ġ= Ġ" d ", Ġtype Ġ= ĠSQL Type . Blob ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠColumn ( name Ġ= Ġ" e ", Ġtype Ġ= ĠSQL Type . Integer , Ġnot Null Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= ĠColumn ( name Ġ= Ġ" f ", Ġtype Ġ= ĠSQL Type . Real , Ġnot Null Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg Ġ= ĠColumn ( name Ġ= Ġ" g ", Ġtype Ġ= ĠSQL Type . Text , Ġnot Null Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh Ġ= ĠColumn ( name Ġ= Ġ" h ", Ġtype Ġ= ĠSQL Type . Blob , Ġnot Null Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġprimary Key Ġ: ĠPrimary Key ? Ġget () Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġforeign Keys Ġ: ĠList < ForeignKey > Ġget () Ġ= ĠlistOf () ĊĊĠĠĠĠĠĠĠ Ġ}. to CreateTable SQL (). let Ġ{ Ġcreate Table Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" create Ġtable Ġif Ġnot Ġexists Ġ` Some ` Ġ(` a ` Ġinteger , Ġ` b ` Ġreal , Ġ` c ` Ġtext , Ġ"+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"` d ` Ġblob , Ġ` e ` Ġinteger Ġnot Ġnull , Ġ` f ` Ġreal Ġnot Ġnull , Ġ` g ` Ġtext Ġnot Ġnull , Ġ` h ` Ġblob Ġnot Ġnull )", Ġcreate Table ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest CreateTable With PrimaryKey Auto increment () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠTable ( name Ġ= Ġ" City ") ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠColumn ( name Ġ= Ġ" id ", Ġtype Ġ= ĠSQL Type . Integer , Ġnot Null Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠColumn ( name Ġ= Ġ" name ", Ġtype Ġ= ĠSQL Type . Text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġprimary Key Ġ: ĠPrimary Key Ġget () Ġ= ĠPrimary Key . Auto Increment ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġforeign Keys Ġ: ĠList < ForeignKey > Ġget () Ġ= ĠlistOf () ĊĊĠĠĠĠĠĠĠ Ġ}. to CreateTable SQL (). let Ġ{ Ġcreate Table Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" create Ġtable Ġif Ġnot Ġexists Ġ` City ` Ġ(` id ` Ġinteger Ġnot Ġnull Ġprimary Ġkey Ġauto increment , Ġ` name ` Ġtext )", Ġcreate Table ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest CreateTable With PrimaryKey () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠTable ( name Ġ= Ġ" City ") ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠColumn ( name Ġ= Ġ" id ", Ġtype Ġ= ĠSQL Type . Text , Ġnot Null Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠColumn ( name Ġ= Ġ" name ", Ġtype Ġ= ĠSQL Type . Text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġprimary Key Ġ: ĠPrimary Key Ġget () Ġ= ĠPrimary Key ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġforeign Keys Ġ: ĠList < ForeignKey > Ġget () Ġ= ĠlistOf () ĊĊĠĠĠĠĠĠĠ Ġ}. to CreateTable SQL (). let Ġ{ Ġcreate Table Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" create Ġtable Ġif Ġnot Ġexists Ġ` City ` Ġ(` id ` Ġtext Ġnot Ġnull , Ġ` name ` Ġtext , Ġprimary Ġkey Ġ(` id ` )) ", Ġcreate Table ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest CreateTable With Comp osed PrimaryKey () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠTable ( name Ġ= Ġ" City ") ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠColumn ( name Ġ= Ġ" id ", Ġtype Ġ= ĠSQL Type . Text , Ġnot Null Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠColumn ( name Ġ= Ġ" name ", Ġtype Ġ= ĠSQL Type . Text , Ġnot Null Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġprimary Key Ġ: ĠPrimary Key Ġget () Ġ= ĠPrimary Key ( id , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġforeign Keys Ġ: ĠList < ForeignKey > Ġget () Ġ= ĠlistOf () ĊĊĠĠĠĠĠĠĠ Ġ}. to CreateTable SQL (). let Ġ{ Ġcreate Table Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" create Ġtable Ġif Ġnot Ġexists Ġ` City ` Ġ(` id ` Ġtext Ġnot Ġnull , Ġ` name ` Ġtext Ġnot Ġnull , Ġprimary Ġkey Ġ(` id `,` name ` )) ", Ġcreate Table ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest CreateTable With Foreign Keys () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcountry Table = object Ġ: ĠTable ( name Ġ= Ġ" Country ") ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠColumn ( name Ġ= Ġ" id ", Ġtype Ġ= ĠSQL Type . Text , Ġnot Null Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠColumn ( name Ġ= Ġ" name ", Ġtype Ġ= ĠSQL Type . Text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġprimary Key Ġ: ĠPrimary Key Ġget () Ġ= ĠPrimary Key ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġforeign Keys Ġ: ĠList < ForeignKey > Ġget () Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠTable ( name Ġ= Ġ" City ") ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠColumn ( name Ġ= Ġ" id ", Ġtype Ġ= ĠSQL Type . Text , Ġnot Null Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcountry Id Ġ= ĠColumn ( name Ġ= Ġ" country Id ", Ġtype Ġ= ĠSQL Type . Text , Ġnot Null Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠColumn ( name Ġ= Ġ" name ", Ġtype Ġ= ĠSQL Type . Text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġprimary Key Ġ: ĠPrimary Key Ġget () Ġ= ĠPrimary Key ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġforeign Keys Ġ: ĠList < ForeignKey > Ġget () Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠForeign Key ( source Column Ġ= Ġcountry Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Table Ġ= Ġcountry Table , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Column Ġ= Ġcountry Table . id )) ĊĊĠĠĠĠĠĠĠ Ġ}. to CreateTable SQL (). let Ġ{ Ġcreate Table Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" create Ġtable Ġif Ġnot Ġexists Ġ` City ` Ġ(` id ` Ġtext Ġnot Ġnull , Ġ"+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"` country Id ` Ġtext Ġnot Ġnull , Ġ` name ` Ġtext , Ġprimary Ġkey Ġ(` id `), Ġ"+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foreign Ġkey Ġ(` country Id `) Ġreferences Ġ` Country ` (` id ` )) ", Ġcreate Table ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest CreateTable Without Columns () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġtry ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠTable ( name Ġ= Ġ" Some ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġprimary Key Ġ: ĠPrimary Key ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġforeign Keys Ġ: ĠList < ForeignKey > Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. to CreateTable SQL () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( ex Ġ: ĠException ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Create Schema () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġschema = object Ġ: ĠSchema () ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcountry Table Ġ= ĠCountry Table () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinner Ġclass ĠCountry Table Ġ: ĠTable ( name Ġ= Ġ" Country ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠColumn ( name Ġ= Ġ" id ", Ġtype Ġ= ĠSQL Type . Text , Ġnot Null Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠColumn ( name Ġ= Ġ" name ", Ġtype Ġ= ĠSQL Type . Text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġprimary Key Ġ: ĠPrimary Key Ġget () Ġ= ĠPrimary Key ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġforeign Keys Ġ: ĠList < ForeignKey > Ġget () Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcity Table Ġ= ĠCity Table () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinner Ġclass ĠCity Table Ġ: ĠTable ( name Ġ= Ġ" City ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠColumn ( name Ġ= Ġ" id ", Ġtype Ġ= ĠSQL Type . Text , Ġnot Null Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcountry Id Ġ= ĠColumn ( name Ġ= Ġ" country Id ", Ġtype Ġ= ĠSQL Type . Text , Ġnot Null Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠColumn ( name Ġ= Ġ" name ", Ġtype Ġ= ĠSQL Type . Text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġprimary Key Ġ: ĠPrimary Key Ġget () Ġ= ĠPrimary Key ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġforeign Keys Ġ: ĠList < ForeignKey > Ġget () Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠForeign Key ( source Column Ġ= Ġcountry Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Table Ġ= Ġcountry Table , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Column Ġ= Ġcountry Table . id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġindices Ġ: ĠList < Index > Ġget () Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIndex ( table Ġ= Ġcountry Table , Ġcolumn Ġ= Ġcountry Table . name , Ġunique Ġ= Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIndex ( table Ġ= Ġcity Table , Ġcolumn Ġ= Ġcity Table . name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIndex ( table Ġ= Ġcity Table , Ġcolumn Ġ= Ġcity Table . country Id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġd dl =( schema . tables . map Ġ{ Ġit . to CreateTable SQL () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ( schema . indices . map Ġ{ Ġit . to Create Index SQL () Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ"\ n ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" create Ġtable Ġif Ġnot Ġexists Ġ` Country ` Ġ(` id ` Ġtext Ġnot Ġnull , Ġ` name ` Ġtext , Ġprimary Ġkey Ġ(` id ` )) \ n "+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" create Ġtable Ġif Ġnot Ġexists Ġ` City ` Ġ(` id ` Ġtext Ġnot Ġnull , Ġ` country Id ` Ġtext Ġnot Ġnull , Ġ` name ` Ġtext , Ġ"+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" primary Ġkey Ġ(` id `), Ġforeign Ġkey Ġ(` country Id `) Ġreferences Ġ` Country ` (` id ` )) \ n "+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" create Ġunique Ġindex Ġif Ġnot Ġexists Ġ` index _ Country _ name ` Ġon Ġ` Country ` (` name `) \ n "+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" create Ġ Ġindex Ġif Ġnot Ġexists Ġ` index _ City _ name ` Ġon Ġ` City ` (` name `) \ n "+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" create Ġ Ġindex Ġif Ġnot Ġexists Ġ` index _ City _ country Id ` Ġon Ġ` City ` (` country Id `) ", Ġd dl ) ĊĠĠĠ Ġ} Ċ } Ċ