package Ġk tx . ash ley Ċ Ċ import Ġcom . badlogic . ash ley . core . P ooled Engine Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . jetbrains . spe k . api . Spe k Ċ import Ġorg . jetbrains . spe k . api . dsl . describe Ċ import Ġorg . jetbrains . spe k . api . dsl . it Ċ Ċ object ĠEng ines Spec Ġ: ĠSpe k ({ ĊĠ Ġdescribe (" utilities Ġfor Ġengines ") Ġ{ ĊĠĠĠ Ġval Ġengine Ġby Ġmemoized Ġ{ ĊĠĠĠĠĠ ĠP ooled Engine () ĊĠĠĠ Ġ} ĊĠĠĠ Ġdescribe (" creating Ġa Ġcomponent ") Ġ{ ĊĠĠĠĠĠ Ġval Ġcomponent Ġ= Ġengine . create < Transform >() ĊĠĠĠĠĠ Ġit (" should Ġcreate Ġa Ġp ooled Ġcomponent Ġwith Ġre ified Ġtype ") Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( component . x ). isEqualTo ( 0 f ) ĊĠĠĠĠĠĠĠ ĠassertThat ( component . y ). isEqualTo ( 0 f ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġdescribe (" creating Ġa Ġcomponent Ġwith Ġconfiguration ") Ġ{ ĊĠĠĠĠĠ Ġval Ġcomponent Ġ= Ġengine . create < Transform > Ġ{ ĊĠĠĠĠĠĠĠ Ġx Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġy Ġ= Ġ 2 f ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġit (" should Ġcreate Ġa Ġp ooled Ġcomponent Ġwith Ġre ified Ġtype ") Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( component . x ). isEqualTo ( 1 f ) ĊĠĠĠĠĠĠĠ ĠassertThat ( component . y ). isEqualTo ( 2 f ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġdescribe (" multiple Ġentity Ġcreation ĠDSL ") Ġ{ ĊĠĠĠĠĠ Ġit (" should Ġadd Ġan Ġentity ") Ġ{ ĊĠĠĠĠĠĠĠ Ġengine . add Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġentity Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertThat ( engine . entities . size ()). isEqualTo ( 1 ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġit (" should Ġadd Ġmultiple Ġentities ") Ġ{ ĊĠĠĠĠĠĠĠ Ġengine . add Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġentity Ġ{} ĊĠĠĠĠĠĠĠĠĠ Ġentity Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertThat ( engine . entities . size ()). isEqualTo ( 2 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" single Ġentity Ġcreation ĠDSL ") Ġ{ ĊĠĠĠĠĠ Ġit (" should Ġadd Ġan Ġentity Ġand Ġreturn Ġit ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentity Ġ= Ġengine . entity () ĊĠĠĠĠĠĠĠ ĠassertThat ( engine . entities . size ()). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( engine . entities [ 0 ]). isEqualTo ( entity ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġit (" should Ġadd Ġan Ġentity Ġwith Ġa Ġcomponent Ġwith Ġdefault Ġconfiguration ") Ġ{ ĊĠĠĠĠĠĠĠ Ġengine . entity Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġwith < Transform >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtransform Entities Ġ= Ġengine . get Entities For ( one Of ( Transform :: class ). get ()) ĊĠĠĠĠĠĠĠ Ġval Ġcomponent Ġ= Ġtransform Entities . single (). getComponent ( Transform :: class . java ) ĊĠĠĠĠĠĠĠ ĠassertThat ( component . x ). isEqualTo ( 0 f ) ĊĠĠĠĠĠĠĠ ĠassertThat ( component . y ). isEqualTo ( 0 f ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġit (" should Ġadd Ġan Ġentity Ġwith Ġa Ġcomponent Ġwith Ġconfiguration ") Ġ{ ĊĠĠĠĠĠĠĠ Ġengine . entity Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġwith < Transform > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġ 2 f ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtransform Entities Ġ= Ġengine . get Entities For ( one Of ( Transform :: class ). get ()) ĊĠĠĠĠĠĠĠ Ġval Ġcomponent Ġ= Ġtransform Entities . single (). getComponent ( Transform :: class . java ) ĊĠĠĠĠĠĠĠ ĠassertThat ( component . x ). isEqualTo ( 1 f ) ĊĠĠĠĠĠĠĠ ĠassertThat ( component . y ). isEqualTo ( 2 f ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġit (" should Ġadd Ġmultiple Ġdifferent Ġcomponents ") Ġ{ ĊĠĠĠĠĠĠĠ Ġengine . entity Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġwith < Transform >() ĊĠĠĠĠĠĠĠĠĠ Ġwith < Texture >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtransform Entities Ġ= Ġengine . get Entities For ( all Of ( Transform :: class , ĠTexture :: class ). get ()) ĊĠĠĠĠĠĠĠ ĠassertThat ( transform Entities . size ()). isEqualTo ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentity Ġ= Ġtransform Entities . single () ĊĠĠĠĠĠĠĠ ĠassertThat ( entity . getComponent ( Transform :: class . java )). isNotNull () ĊĠĠĠĠĠĠĠ ĠassertThat ( entity . getComponent ( Texture :: class . java )). isNotNull () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }) Ċ