package Ġcom . jay r ave . f alk on . engine . jdbc Ċ Ċ import Ġcom . jay r ave . f alk on . engine . safe Close After Execution Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . h 2 . jdbc x . Jdbc Connection Pool Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġjavax . sql . DataSource Ċ Ċ class ĠSource Back track ability Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠdataSource : ĠDataSource ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġhttp :// www . h 2 database . com / html / features . html # in _ memory _ databases ĊĠĠĠĠĠĠĠ Ġ// ĠGive Ġthe Ġdatabase Ġa Ġname Ġto Ġenabled Ġmultiple Ġconnections Ġto Ġthe Ġsame Ġdatabase ĊĠĠĠĠĠĠĠ Ġval Ġds Ġ= ĠJdbc Connection Pool . create (" jdbc : h 2 : mem : test _ db ; DB _ CLOSE _ DELAY =- 1 ", Ġ" user ", Ġ" pw ") ĊĠĠĠĠĠĠĠ Ġds . login Timeout Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġds . max Connections Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ ĠdataSource Ġ= Ġds ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġhttp :// www . h 2 database . com / html / grammar . html # shutdown ĊĠĠĠĠĠĠĠ Ġ// Ġhttp :// www . h 2 database . com / html / features . html # in _ memory _ databases ĊĠĠĠĠĠĠĠ Ġ// ĠBy Ġdefault Ġh 2 Ġcloses Ġthe Ġdatabase Ġwhen Ġall Ġexisting Ġconnections Ġto Ġit Ġare Ġclosed . ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġan Ġin - memory Ġdb , Ġclosing Ġis Ġa kin Ġto Ġn uk ing Ġit . ĠThis Ġmakes Ġsure Ġthat Ġwe Ġhave Ġa ĊĠĠĠĠĠĠĠ Ġ// Ġclean Ġs late Ġfor Ġevery Ġtest ĊĠĠĠĠĠĠĠ ĠdataSource . for Statement (" SHUT DOWN ") Ġ{ Ġit . execute () Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsource That Can Back track () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Back track ability ( Jdbc Engine Core ( dataSource , Ġtrue ), Ġtrue ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsource That Can Not Back track () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Back track ability ( Jdbc Engine Core ( dataSource , Ġfalse ), Ġfalse ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġassert Back track ability ( engine Core : ĠJdbc Engine Core , Ġis Back track able : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġengine Core . compile Sql (" CREATE ĠTABLE Ġtest Ġ( col _ 1 ĠINTEGER ) "). safe Close After Execution () ĊĠĠĠĠĠĠĠ Ġengine Core . compile Query (" SELECT Ġ* ĠFROM Ġtest "). use Ġ{ Ġcompiled Query Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompiled Query . execute (). use Ġ{ Ġsource Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( source . can Back track ). isEqualTo ( is Back track able ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }