package Ġfr . xg ou chet . el my r Ċ Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . specification . describe Ċ Ċ class ĠFor ge Float Spe k Ġ: ĠSpe k ({ ĊĊĠĠĠ Ġdescribe (" A Ġfor ge ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfor ge Ġ= ĠFor ge () ĊĠĠĠĠĠĠĠ Ġvar Ġseed : ĠLong ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Repeat Count Small Ġ= Ġ 1 6 ĊĊĠĠĠĠĠĠĠ ĠbeforeEach Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseed Ġ= ĠFor ge . seed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ge . seed Ġ= Ġseed ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġregion ĠFloat s Ġin Ġrange ĊĊĠĠĠĠĠĠĠ Ġcontext (" for ging Ġfloats Ġin Ġrange ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" fails Ġif Ġmin Ġ> Ġmax ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Ġ= Ġfor ge . a Positive Float ( strict Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Ġ= Ġfor ge . aN eg ative Float ( strict Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrows < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ge . a Float ( min , Ġmax ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" for ges Ġa Ġfloat Ġin Ġa Ġspecified Ġrange ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Ġ= Ġfor ge . a Float (- Forge . ME AN _ THRESHOLD _ FLOAT , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Ġ= Ġfor ge . a Float ( 0 f , ĠFor ge . ME AN _ THRESHOLD _ FLOAT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( max ). is GreaterThan ( min ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 1 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfloat Ġ= Ġfor ge . a Float ( min , Ġmax ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( float ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is GreaterThan OrEqualTo ( min ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is LessThan ( max ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" for ges Ġa Ġfloat Ġin Ġminimal Ġrange ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Ġ= Ġfor ge . a Float (- 1 0 0 0 0 0 f , Ġ 1 0 0 0 0 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Ġ= Ġmin ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 1 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfloat Ġ= Ġfor ge . a Float ( min , Ġmax ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( float ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is GreaterThan OrEqualTo ( min ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is LessThan OrEqualTo ( max ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" for ges Ġa Ġfloat Ġin Ġwhole Ġrange ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 1 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfloat Ġ= Ġfor ge . a Float () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( float ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isNot In ( Float . NEGATIVE _ INFINITY , ĠFloat . NaN , ĠFloat . POSITIVE _ INFINITY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" for ges Ġa Ġfloat Ġabove Ġa Ġmin ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Ġ= Ġfor ge . a Float (- 1 0 0 0 0 0 f , Ġ 1 0 0 0 0 0 f ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( test Repeat Count Small ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfloat Ġ= Ġfor ge . a Float ( min Ġ= Ġmin ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( float ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is GreaterThan OrEqualTo ( min ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" for ges Ġa Ġfloat Ġbelow Ġa Ġmax ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Ġ= Ġfor ge . a Float (- 1 0 0 0 0 0 f , Ġ 1 0 0 0 0 0 f ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( test Repeat Count Small ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfloat Ġ= Ġfor ge . a Float ( max Ġ= Ġmax ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( float ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is LessThan ( max ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġend region ĊĊĠĠĠĠĠĠĠ Ġ// Ġregion ĠFloat s Ġwith Ġsign ĊĊĠĠĠĠĠĠĠ Ġcontext (" for ging Ġfloats Ġwith Ġsign ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" for ges Ġa Ġpositive Ġfloat ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 1 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfloat Ġ= Ġfor ge . a Positive Float (/* strict Ġ= Ġfalse */) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( float ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is GreaterThan OrEqualTo ( 0 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" for ges Ġa Ġstrictly Ġpositive Ġfloat ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 1 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfloat Ġ= Ġfor ge . a Positive Float ( strict Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( float ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is GreaterThan ( 0 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" for ges Ġa Ġnegative Ġfloat ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 1 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfloat Ġ= Ġfor ge . aN eg ative Float ( strict Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( float ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is LessThan OrEqualTo ( 0 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" for ges Ġa Ġstrictly Ġnegative Ġfloat ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 1 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfloat Ġ= Ġfor ge . aN eg ative Float (/* strict Ġ= Ġtrue */) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( float ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is LessThan ( 0 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġend region ĊĊĠĠĠĠĠĠĠ Ġ// Ġregion ĠFloat s Ġin ĠGaussian ĠDistribution ĊĊĠĠĠĠĠĠĠ Ġcontext (" for ging Ġfloats Ġin Ġgaussian Ġdistribution ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" fails Ġif Ġstandard Ġdev Ġ< Ġ 0 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmean Ġ= Ġfor ge . a Float ( 0 f , ĠFor ge . SMALL _ THRESHOLD . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġst Dev Ġ= Ġfor ge . aN eg ative Float ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrows < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ge . a Gaussian Float ( mean , Ġst Dev ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" fails Ġif Ġmean Ġ> ĠMAX _ VALUE / 2 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmean Ġ= Ġfor ge . a Float ( min Ġ= ĠFloat . MAX _ VALUE Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġst Dev Ġ= Ġfor ge . a Float ( 1 f , Ġ 4 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrows < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ge . a Gaussian Float ( mean , Ġst Dev ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" fails Ġif Ġmean Ġ< Ġ- MAX _ VALUE / 2 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmean Ġ= Ġfor ge . a Float ( max Ġ= Ġ- Float . MAX _ VALUE Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġst Dev Ġ= Ġfor ge . a Float ( 1 f , Ġ 4 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrows < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ge . a Gaussian Float ( mean , Ġst Dev ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" for ges Ġa Ġgaussian Ġdistributed Ġfloat Ġwith Ġdefaults ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmean Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġst dev Ġ= Ġ 1 f ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Gaussian Distribution ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġst dev ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġfor ge . a Gaussian Float () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" for ges Ġa Ġgaussian Ġdistributed Ġfloat Ġwith Ġdefaults Ġst dev ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmean Ġ= Ġfor ge . a Float (- 1 0 0 0 f , Ġ 1 0 0 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġst dev Ġ= Ġ 1 f ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Gaussian Distribution ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġst dev ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġfor ge . a Gaussian Float ( mean ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" for ges Ġa Ġgaussian Ġdistributed Ġfloat Ġwith Ġdefaults Ġmean ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmean Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġst dev Ġ= Ġfor ge . a Float ( 1 0 f , Ġ 5 0 0 f ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Gaussian Distribution ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġst dev ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġfor ge . a Gaussian Float ( standard De viation Ġ= Ġst dev ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" for ges Ġa Ġgaussian Ġdistributed Ġfloat ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmean Ġ= Ġfor ge . a Float (- 1 0 0 0 f , Ġ 1 0 0 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġst dev Ġ= Ġfor ge . a Float ( 1 0 f , Ġ 5 0 0 f ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Gaussian Distribution ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġst dev ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġfor ge . a Gaussian Float ( mean , Ġst dev ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" for ges Ġmean Ġwhen Ġstandard Ġdeviation Ġis Ġ 0 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmean Ġ= Ġfor ge . a Float (- 1 0 0 0 f , Ġ 1 0 0 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġst dev Ġ= Ġ 0 f ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( test Repeat Count Small ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġfor ge . a Gaussian Float ( mean , Ġst dev ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). isEqualTo ( mean ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġend region ĊĠĠĠ Ġ} Ċ }) Ċ