/* Ċ Ġ* ĠFX GL Ġ- ĠJava FX ĠGame ĠLibrary . ĠThe ĠMIT ĠLicense Ġ( MIT ). Ċ Ġ* ĠCopyright Ġ( c ) ĠAl mas B Ġ( al mas lvl @ gmail . com ). Ċ Ġ* ĠSee ĠLICENSE Ġfor Ġdetails . Ċ Ġ*/ Ċ Ċ package Ġcom . al mas b . fx gl . physics Ċ Ċ import Ġcom . al mas b . fx gl . entity . Entity Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . hamcrest . Matchers .` is ` Ċ import Ġorg . junit . jupiter . api . Assertions . assertFalse Ċ import Ġorg . junit . jupiter . api . Assertions . assertTrue Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ author ĠAl mas ĠB aim ag amb et ov Ġ( al mas lvl @ gmail . com ) Ċ Ġ*/ Ċ class ĠCollision Pair Test Ġ{ ĊĊĠĠĠ Ġprivate Ġenum Ġclass ĠT Ġ{ ĊĠĠĠĠĠĠĠ ĠT 1 , ĠT 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` The Ġorder Ġof Ġcollision Ġhandler Ġis Ġthe Ġorder Ġof Ġparams `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpair Ġ= ĠCollision Pair () ĊĠĠĠĠĠĠĠ Ġval Ġe 1 Ġ= ĠEntity () ĊĠĠĠĠĠĠĠ Ġe 1 . type Ġ= ĠT . T 1 ĊĠĠĠĠĠĠĠ Ġval Ġe 2 Ġ= ĠEntity () ĊĠĠĠĠĠĠĠ Ġe 2 . type Ġ= ĠT . T 2 ĊĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġpair . init ( e 1 , Ġe 2 , Ġobject Ġ: ĠCollision Handler ( T . T 2 , ĠT . T 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Collision Begin ( a : ĠEntity , Ġb : ĠEntity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( a , Ġ` is `( e 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( b , Ġ` is `( e 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġpair . collision Begin () ĊĠĠĠĠĠĠĠ ĠassertThat ( count , Ġ` is `( 1 )) ĊĊĠĠĠĠĠĠĠ Ġpair . reset () ĊĊĠĠĠĠĠĠĠ Ġpair . init ( e 1 , Ġe 2 , Ġobject Ġ: ĠCollision Handler ( T . T 1 , ĠT . T 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Collision Begin ( a : ĠEntity , Ġb : ĠEntity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( a , Ġ` is `( e 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( b , Ġ` is `( e 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġpair . collision Begin () ĊĠĠĠĠĠĠĠ ĠassertThat ( count , Ġ` is `( 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Equality `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe 1 Ġ= ĠEntity () ĊĠĠĠĠĠĠĠ Ġe 1 . type Ġ= ĠT . T 1 ĊĠĠĠĠĠĠĠ Ġval Ġe 2 Ġ= ĠEntity () ĊĠĠĠĠĠĠĠ Ġe 2 . type Ġ= ĠT . T 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġpair 1 Ġ= ĠCollision Pair () ĊĠĠĠĠĠĠĠ ĠassertThat ( pair 1 . hashCode (), Ġ` is `( 0 )) ĊĊĠĠĠĠĠĠĠ Ġpair 1 . init ( e 1 , Ġe 2 , Ġobject Ġ: ĠCollision Handler ( T . T 1 , ĠT . T 2 ) Ġ{}) ĊĊĠĠĠĠĠĠĠ Ġval Ġpair 2 Ġ= ĠCollision Pair () ĊĠĠĠĠĠĠĠ Ġpair 2 . init ( e 1 , Ġe 2 , Ġobject Ġ: ĠCollision Handler ( T . T 1 , ĠT . T 2 ) Ġ{}) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( pair 1 , Ġ` is `( pair 2 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( pair 1 . hashCode () Ġ== Ġpair 2 . hashCode ()) ĊĊĠĠĠĠĠĠĠ Ġpair 2 . init ( e 2 , Ġe 1 , Ġobject Ġ: ĠCollision Handler ( T . T 2 , ĠT . T 1 ) Ġ{}) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( pair 1 , Ġ` is `( pair 2 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( pair 1 . hashCode () Ġ== Ġpair 2 . hashCode ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Un ordered Ġpair Ġequality `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe 1 Ġ= ĠEntity () ĊĠĠĠĠĠĠĠ Ġval Ġe 2 Ġ= ĠEntity () ĊĠĠĠĠĠĠĠ Ġval Ġe 3 Ġ= ĠEntity () ĊĠĠĠĠĠĠĠ Ġval Ġe 4 Ġ= ĠEntity () ĊĊĠĠĠĠĠĠĠ Ġval Ġpair Ġ= ĠPair ( e 1 , Ġe 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġto Ġcheck Ġfor Ġall Ġpossible Ġcases ĊĠĠĠĠĠĠĠ ĠassertTrue ( pair . equal ( e 1 , Ġe 2 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( pair . equal ( e 2 , Ġe 1 )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( pair . equal ( e 1 , Ġe 3 )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( pair . equal ( e 3 , Ġe 1 )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( pair . equal ( e 3 , Ġe 2 )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( pair . equal ( e 2 , Ġe 3 )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( pair . equal ( e 3 , Ġe 4 )) ĊĠĠĠ Ġ} Ċ }