From 8a1235c3dcf7fe69b2e2ea3eea326858d26d38b9 Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Fri, 29 Nov 2019 22:59:15 -0500 Subject: Use menus for combat and picking up items Refactor a bunch of stuff around to allow for polymorphically surfacing an EntityChar for all entities, and use this to write a generic `entityMenu` function, which generates a menu from the chars of a list of entities - and use that to fully implement (removing `undefined`) menus for both attacking and picking things up when there are multiple entities on the relevant tile. --- test/Spec.hs | 8 ++++---- test/Xanthous/Data/EntityCharSpec.hs | 18 ++++++++++++++++++ test/Xanthous/EntitiesSpec.hs | 20 -------------------- test/Xanthous/GameSpec.hs | 2 +- 4 files changed, 23 insertions(+), 25 deletions(-) create mode 100644 test/Xanthous/Data/EntityCharSpec.hs delete mode 100644 test/Xanthous/EntitiesSpec.hs (limited to 'test') diff --git a/test/Spec.hs b/test/Spec.hs index bd31867294c8..cd2827e58b4e 100644 --- a/test/Spec.hs +++ b/test/Spec.hs @@ -1,23 +1,23 @@ import Test.Prelude +import qualified Xanthous.Data.EntityCharSpec import qualified Xanthous.Data.EntityMapSpec import qualified Xanthous.DataSpec -import qualified Xanthous.EntitiesSpec import qualified Xanthous.Entities.RawsSpec import qualified Xanthous.GameSpec import qualified Xanthous.Generators.UtilSpec import qualified Xanthous.MessageSpec import qualified Xanthous.OrphansSpec -import qualified Xanthous.UtilSpec import qualified Xanthous.Util.GraphicsSpec import qualified Xanthous.Util.InflectionSpec +import qualified Xanthous.UtilSpec main :: IO () main = defaultMain test test :: TestTree test = testGroup "Xanthous" - [ Xanthous.Data.EntityMapSpec.test - , Xanthous.EntitiesSpec.test + [ Xanthous.Data.EntityCharSpec.test + , Xanthous.Data.EntityMapSpec.test , Xanthous.Entities.RawsSpec.test , Xanthous.GameSpec.test , Xanthous.Generators.UtilSpec.test diff --git a/test/Xanthous/Data/EntityCharSpec.hs b/test/Xanthous/Data/EntityCharSpec.hs new file mode 100644 index 000000000000..9e8024c9d223 --- /dev/null +++ b/test/Xanthous/Data/EntityCharSpec.hs @@ -0,0 +1,18 @@ +-------------------------------------------------------------------------------- +module Xanthous.Data.EntityCharSpec where +-------------------------------------------------------------------------------- +import Test.Prelude +-------------------------------------------------------------------------------- +import qualified Data.Aeson as JSON +-------------------------------------------------------------------------------- +import Xanthous.Data.EntityChar +-------------------------------------------------------------------------------- + +main :: IO () +main = defaultMain test + +test :: TestTree +test = testGroup "Xanthous.Data.EntityChar" + [ testProperty "JSON round-trip" $ \(ec :: EntityChar) -> + JSON.decode (JSON.encode ec) === Just ec + ] diff --git a/test/Xanthous/EntitiesSpec.hs b/test/Xanthous/EntitiesSpec.hs deleted file mode 100644 index 14b03f729331..000000000000 --- a/test/Xanthous/EntitiesSpec.hs +++ /dev/null @@ -1,20 +0,0 @@ --------------------------------------------------------------------------------- -module Xanthous.EntitiesSpec where --------------------------------------------------------------------------------- -import Test.Prelude --------------------------------------------------------------------------------- -import qualified Data.Aeson as JSON --------------------------------------------------------------------------------- -import Xanthous.Entities --------------------------------------------------------------------------------- - -main :: IO () -main = defaultMain test - -test :: TestTree -test = testGroup "Xanthous.Entities" - [ testGroup "EntityChar" - [ testProperty "JSON round-trip" $ \(ec :: EntityChar) -> - JSON.decode (JSON.encode ec) === Just ec - ] - ] diff --git a/test/Xanthous/GameSpec.hs b/test/Xanthous/GameSpec.hs index f9a9c543b90a..75e9f6215ade 100644 --- a/test/Xanthous/GameSpec.hs +++ b/test/Xanthous/GameSpec.hs @@ -2,10 +2,10 @@ module Xanthous.GameSpec where import Test.Prelude hiding (Down) import Xanthous.Game +import Xanthous.Game.State import Control.Lens.Properties import Xanthous.Data (move, Direction(Down)) import Xanthous.Data.EntityMap (atPosition) -import Xanthous.Entities (SomeEntity(SomeEntity)) main :: IO () main = defaultMain test -- cgit 1.4.1