package Ġag a . android . migrations Ċ Ċ import Ġag a . android . migrations . Schema Helper . to Schema Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Test Ċ Ċ class ĠSchema Helper Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Column Info Extraction () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠSchema ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Parent ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( Affinity . INTEGER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Nullable ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs PrimaryKey ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" name ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set DefaultValue ("\ ' John ĠDoe \' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( Affinity . TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Nullable ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġto Schema ( listOf ( PARENT _ TABLE _ DEFINITION )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġactual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest ForeignKey Info Extraction () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠSchema ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtables Ġ= Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Child ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( Affinity . INTEGER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Nullable ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs PrimaryKey ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" name ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( Affinity . TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Nullable ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" parentId ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( Affinity . INTEGER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Nullable ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforeign Keys Ġ= Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠForeign Key . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set KeyName (" parentId ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Reference Table (" Parent ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Reference Field (" id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setOn Delete ( ForeignKey Action . NO _ ACTION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setOn Update ( ForeignKey Action . CASCADE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġto Schema ( listOf ( CHILD REN _ TABLE _ DEFINITION )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġactual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Lower And UpperCase Key Words Do No A ffect Schema () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlower Case Schema Ġ= Ġto Schema ( listOf ( PARENT _ TABLE _ DEFINITION )) ĊĠĠĠĠĠĠĠ Ġval Ġupper Case Schema Ġ= Ġto Schema ( listOf ( PARENT _ TABLE _ DEFINITION _ CAPS )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( lower Case Schema , Ġupper Case Schema ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Keyword Order DoesNot A ffect Schema () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġschema 1 Ġ= Ġto Schema ( listOf ( PARENT _ TABLE _ DEFINITION )) ĊĠĠĠĠĠĠĠ Ġval Ġschema 2 Ġ= Ġto Schema ( listOf ( PARENT _ TABLE _ DEFINITION _ DI FFER ENT _ ORDER )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( schema 1 , Ġschema 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠP ARENT _ TABLE _ DEFINITION Ġ= Ġ" create Ġtable ĠParent Ġ(" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġid Ġinteger Ġprimary Ġkey Ġnot Ġnull ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġname Ġvarchar ( 2 5 5 ) Ġdefault Ġ\' John ĠDoe \' " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"); " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠP ARENT _ TABLE _ DEFINITION _ DI FFER ENT _ ORDER Ġ= Ġ" create Ġtable ĠParent Ġ(" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġid Ġinteger Ġnot Ġnull Ġprimary Ġkey ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġname Ġvarchar ( 2 5 5 ) Ġdefault Ġ\' John ĠDoe \' " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"); " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠP ARENT _ TABLE _ DEFINITION _ CAPS Ġ= Ġ" CREATE ĠTABLE ĠParent Ġ(" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġid ĠINTEGER ĠPRIMARY ĠKEY ĠNOT ĠNULL ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġname ĠVARCHAR ( 2 5 5 ) ĠDEFAULT Ġ\' John ĠDoe \' " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"); " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCH ILD REN _ TABLE _ DEFINITION Ġ= Ġ" create Ġtable ĠChild Ġ(" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġid Ġinteger Ġprimary Ġkey Ġnot Ġnull ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġname Ġtext ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠparentId Ġinteger Ġnot Ġnull ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġforeign Ġkey Ġ( parentId ) Ġreferences ĠParent Ġ( id ) Ġon Ġupdate Ġcascade Ġon Ġdelete Ġno Ġaction " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"); " ĊĠĠĠ Ġ} Ċ }