package Ġcom . bad oo . reak t ive . dis posable Ċ Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertSame Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠDis posable Wrapper Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġwrapper Ġ= ĠDis posable Wrapper () ĊĠĠĠ Ġprivate Ġval Ġdis posable Ġ= ĠDis posable () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdoes _ not _ dispose _ new _ dis posable _ WHEN _ not _ dis posed () Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapper . set ( dis posable ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( dis posable . is Disposed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdis poses _ new _ dis posable _ WHEN _ dis posed () Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapper . set ( dis posable ) ĊĊĠĠĠĠĠĠĠ Ġwrapper . dispose () ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( dis posable . is Disposed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdis poses _ new _ dis posable _ WHEN _ already _ dis posed () Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapper . dispose () ĊĊĠĠĠĠĠĠĠ Ġwrapper . set ( dis posable ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( dis posable . is Disposed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdis poses _ previous _ dis posable _ WHEN _ new _ dis posable _ is _ set () Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapper . set ( dis posable ) ĊĊĠĠĠĠĠĠĠ Ġwrapper . set ( Disposable ()) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( dis posable . is Disposed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdoes _ not _ dispose _ repl acing _ dis posable _ WHEN _ not _ dis posed () Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapper . replace ( dis posable ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( dis posable . is Disposed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdis poses _ repl acing _ dis posable _ WHEN _ dis posed () Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapper . replace ( dis posable ) ĊĊĠĠĠĠĠĠĠ Ġwrapper . dispose () ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( dis posable . is Disposed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdis poses _ repl acing _ dis posable _ WHEN _ already _ dis posed () Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapper . dispose () ĊĊĠĠĠĠĠĠĠ Ġwrapper . replace ( dis posable ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( dis posable . is Disposed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdoes _ not _ dispose _ previous _ dis posable _ WHEN _ replace _ dis posable () Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapper . set ( dis posable ) ĊĊĠĠĠĠĠĠĠ Ġwrapper . replace ( Disposable ()) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( dis posable . is Disposed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreturns _ previous _ dis posable _ WHEN _ replace _ dis posable () Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapper . set ( dis posable ) ĊĊĠĠĠĠĠĠĠ Ġval Ġprevious Disposable Ġ= Ġwrapper . replace ( Disposable ()) ĊĊĠĠĠĠĠĠĠ ĠassertSame ( dis posable , Ġprevious Disposable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġis Disposed _ returns _ false _ WHEN _ not _ dis posed () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( wrapper . is Disposed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġis Disposed _ returns _ true _ WHEN _ dis posed () Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapper . dispose () ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( wrapper . is Disposed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġis Disposed _ returns _ true _ WHEN _ already _ dis posed _ and _ set Disposable () Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapper . dispose () ĊĠĠĠĠĠĠĠ Ġwrapper . set ( dis posable ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( wrapper . is Disposed ) ĊĠĠĠ Ġ} Ċ } Ċ