/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠThe ĠSm ash ĠK s ĠOpen ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . ks . sm ash . ext . const Ċ Ċ import Ġcom . ks . sm ash . ext . const . generate . Generator Factory Ċ import Ġcom . ks . sm ash . ext . const . generate . Generator Factory . random String Ċ import Ġcom . ks . sm ash . ext . const . generate . Generator Factory . zero Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġkotlin . test . Before Test Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNot Equals Ċ Ċ class ĠTake Unless Default Test Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġnum Ġ= Ġzero ĊĠĠĠ Ġprivate Ġvar Ġadded Ġ= Ġzero ĊĊĠĠĠ Ġ@ Before Test ĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġnum Ġ= ĠGenerator Factory . random Int ĊĠĠĠĠĠĠĠ Ġadded Ġ= ĠGenerator Factory . random Int ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġint Ġtake Unless Default Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Int Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġval Ġans 1 Ġ= Ġnum Ġ+ Ġadded ĊĠĠĠĠĠĠĠ Ġval Ġans 2 Ġ= Ġnum Ġ- Ġadded ĊĊĠĠĠĠĠĠĠ ĠDEFAULT _ INT . take Unless Default Ġ{ Ġnum Ġ+= Ġadded Ġ} ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( ans 1 , Ġnum ) ĊĠĠĠĠĠĠĠ Ġdefault Int . take Unless Default Ġ{ Ġnum Ġ-= Ġadded Ġ} ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( ans 2 , Ġnum ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġint Ġtake Unless Default Ġtrue Ġelse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Int Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠ ĠassertThat ( DEFAULT _ INT . take Unless Default Ġ{ Ġnum Ġ+= Ġadded Ġ} Ġ?: Ġadded ). isEqualTo ( added ) ĊĠĠĠĠĠĠĠ ĠassertThat ( default Int . take Unless Default Ġ{ Ġnum Ġ-= Ġadded Ġ} Ġ?: Ġadded ). isEqualTo ( added ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġint Ġtake Unless Default Ġfalse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġzero Num Ġ= Ġzero ĊĠĠĠĠĠĠĠ Ġval Ġneg Num Ġ= Ġ- Generator Factory . random Int ĊĠĠĠĠĠĠĠ Ġval Ġpos Num Ġ= ĠGenerator Factory . random Int ĊĊĠĠĠĠĠĠĠ ĠassertThat ( zero Num . take Unless Default Ġ{ Ġnum Ġ+ Ġit Ġ}). isEqualTo ( num ) ĊĠĠĠĠĠĠĠ ĠassertThat ( neg Num . take Unless Default Ġ{ Ġnum Ġ+ Ġit Ġ}). isEqualTo ( num Ġ+ Ġneg Num ) ĊĠĠĠĠĠĠĠ ĠassertThat ( pos Num . take Unless Default Ġ{ Ġnum Ġ+ Ġit Ġ}). isEqualTo ( num Ġ+ Ġpos Num ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġlong Ġtake Unless Default Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Long Ġ= Ġ- 1 L ĊĠĠĠĠĠĠĠ Ġval Ġans 1 Ġ= Ġnum Ġ+ Ġadded ĊĠĠĠĠĠĠĠ Ġval Ġans 2 Ġ= Ġnum Ġ- Ġadded ĊĊĠĠĠĠĠĠĠ ĠDEFAULT _ LONG . take Unless Default Ġ{ Ġnum Ġ+= Ġadded Ġ} ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( ans 1 , Ġnum ) ĊĠĠĠĠĠĠĠ Ġdefault Long . take Unless Default Ġ{ Ġnum Ġ-= Ġadded Ġ} ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( ans 2 , Ġnum ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġlong Ġtake Unless Default Ġtrue Ġelse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Long Ġ= Ġ- 1 L ĊĊĠĠĠĠĠĠĠ ĠassertThat ( DEFAULT _ LONG . take Unless Default Ġ{ Ġnum Ġ+= Ġadded Ġ} Ġ?: Ġadded ). isEqualTo ( added ) ĊĠĠĠĠĠĠĠ ĠassertThat ( default Long . take Unless Default Ġ{ Ġnum Ġ-= Ġadded Ġ} Ġ?: Ġadded ). isEqualTo ( added ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġlong Ġtake Unless Default Ġfalse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġzero Num Ġ= Ġzero . to Long () ĊĠĠĠĠĠĠĠ Ġval Ġneg Num Ġ= Ġ- Generator Factory . random Long ĊĠĠĠĠĠĠĠ Ġval Ġpos Num Ġ= ĠGenerator Factory . random Long ĊĊĠĠĠĠĠĠĠ ĠassertThat ( zero Num . take Unless Default Ġ{ Ġnum Ġ+ Ġit Ġ}). isEqualTo ( num . to Long ()) ĊĠĠĠĠĠĠĠ ĠassertThat ( neg Num . take Unless Default Ġ{ Ġnum Ġ+ Ġit Ġ}). isEqualTo (( num Ġ+ Ġneg Num )) ĊĠĠĠĠĠĠĠ ĠassertThat ( pos Num . take Unless Default Ġ{ Ġnum Ġ+ Ġit Ġ}). isEqualTo ( num Ġ+ Ġpos Num ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġstring Ġtake Unless Default Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Str Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġans 1 Ġ= Ġnum Ġ+ Ġadded ĊĠĠĠĠĠĠĠ Ġval Ġans 2 Ġ= Ġnum Ġ- Ġadded ĊĊĠĠĠĠĠĠĠ ĠDEFAULT _ STR . take Unless Default Ġ{ Ġnum Ġ+= Ġadded Ġ} ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( ans 1 , Ġnum ) ĊĠĠĠĠĠĠĠ Ġdefault Str . take Unless Default Ġ{ Ġnum Ġ-= Ġadded Ġ} ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( ans 2 , Ġnum ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġstring Ġtake Unless Default Ġtrue Ġelse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Str Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ ĠassertThat ( DEFAULT _ STR . take Unless Default Ġ{ Ġnum Ġ+= Ġadded Ġ} Ġ?: Ġadded ). isEqualTo ( added ) ĊĠĠĠĠĠĠĠ ĠassertThat ( default Str . take Unless Default Ġ{ Ġnum Ġ-= Ġadded Ġ} Ġ?: Ġadded ). isEqualTo ( added ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġstring Ġtake Unless Default Ġfalse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstr 1 Ġ= Ġrandom String ĊĠĠĠĠĠĠĠ Ġval Ġstr 2 Ġ= Ġ" ĠĠĠĠĠĠĠ Ġ" ĊĊĠĠĠĠĠĠĠ Ġval Ġans 1 Ġ= Ġnum Ġ+ Ġadded ĊĠĠĠĠĠĠĠ Ġval Ġans 2 Ġ= Ġnum ĊĊĠĠĠĠĠĠĠ Ġstr 1 . take Unless Default Ġ{ Ġnum Ġ+= Ġadded Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( ans 1 , Ġnum ) ĊĠĠĠĠĠĠĠ Ġstr 2 . take Unless Default Ġ{ Ġnum Ġ-= Ġadded Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( ans 2 , Ġnum ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġdouble Ġtake Unless Default Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Double Ġ= Ġ- 1 . 0 ĊĠĠĠĠĠĠĠ Ġval Ġans 1 Ġ= Ġnum Ġ+ Ġadded ĊĠĠĠĠĠĠĠ Ġval Ġans 2 Ġ= Ġnum Ġ- Ġadded ĊĊĠĠĠĠĠĠĠ ĠDEFAULT _ DOUBLE . take Unless Default Ġ{ Ġnum Ġ+= Ġadded Ġ} ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( ans 1 , Ġnum ) ĊĠĠĠĠĠĠĠ Ġdefault Double . take Unless Default Ġ{ Ġnum Ġ-= Ġadded Ġ} ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( ans 2 , Ġnum ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġdouble Ġtake Unless Default Ġtrue Ġelse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Double Ġ= Ġ- 1 . 0 ĊĊĠĠĠĠĠĠĠ ĠassertThat ( DEFAULT _ DOUBLE . take Unless Default Ġ{ Ġnum Ġ+= Ġadded Ġ} Ġ?: Ġadded ). isEqualTo ( added ) ĊĠĠĠĠĠĠĠ ĠassertThat ( default Double . take Unless Default Ġ{ Ġnum Ġ-= Ġadded Ġ} Ġ?: Ġadded ). isEqualTo ( added ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġdouble Ġtake Unless Default Ġfalse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġzero Num Ġ= Ġzero . toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġneg Num Ġ= Ġ- Generator Factory . random Double ĊĠĠĠĠĠĠĠ Ġval Ġpos Num Ġ= ĠGenerator Factory . random Double ĊĊĠĠĠĠĠĠĠ ĠassertThat ( zero Num . take Unless Default Ġ{ Ġnum Ġ+ Ġit Ġ}). isEqualTo ( num . toDouble ()) ĊĠĠĠĠĠĠĠ ĠassertThat ( neg Num . take Unless Default Ġ{ Ġnum Ġ+ Ġit Ġ}). isEqualTo (( num Ġ+ Ġneg Num )) ĊĠĠĠĠĠĠĠ ĠassertThat ( pos Num . take Unless Default Ġ{ Ġnum Ġ+ Ġit Ġ}). isEqualTo ( num Ġ+ Ġpos Num ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġfloat Ġtake Unless Default Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Float Ġ= Ġ- 1 f ĊĠĠĠĠĠĠĠ Ġval Ġans 1 Ġ= Ġnum Ġ+ Ġadded ĊĠĠĠĠĠĠĠ Ġval Ġans 2 Ġ= Ġnum Ġ- Ġadded ĊĊĠĠĠĠĠĠĠ ĠDEFAULT _ FLOAT . take Unless Default Ġ{ Ġnum Ġ+= Ġadded Ġ} ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( ans 1 , Ġnum ) ĊĠĠĠĠĠĠĠ Ġdefault Float . take Unless Default Ġ{ Ġnum Ġ-= Ġadded Ġ} ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( ans 2 , Ġnum ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġfloat Ġtake Unless Default Ġtrue Ġelse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Float Ġ= Ġ- 1 f ĊĊĠĠĠĠĠĠĠ ĠassertThat ( DEFAULT _ FLOAT . take Unless Default Ġ{ Ġnum Ġ+= Ġadded Ġ} Ġ?: Ġadded ). isEqualTo ( added ) ĊĠĠĠĠĠĠĠ ĠassertThat ( default Float . take Unless Default Ġ{ Ġnum Ġ-= Ġadded Ġ} Ġ?: Ġadded ). isEqualTo ( added ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` make Ġfloat Ġtake Unless Default Ġfalse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġzero Num Ġ= Ġzero . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġneg Num Ġ= Ġ- Generator Factory . random Float ĊĠĠĠĠĠĠĠ Ġval Ġpos Num Ġ= ĠGenerator Factory . random Float ĊĊĠĠĠĠĠĠĠ ĠassertThat ( zero Num . take Unless Default Ġ{ Ġnum Ġ+ Ġit Ġ}). isEqualTo ( num . toFloat ()) ĊĠĠĠĠĠĠĠ ĠassertThat ( neg Num . take Unless Default Ġ{ Ġnum Ġ+ Ġit Ġ}). isEqualTo (( num Ġ+ Ġneg Num )) ĊĠĠĠĠĠĠĠ ĠassertThat ( pos Num . take Unless Default Ġ{ Ġnum Ġ+ Ġit Ġ}). isEqualTo ( num Ġ+ Ġpos Num ) ĊĠĠĠ Ġ} Ċ } Ċ