--------------------------------------------------------------------------------
module Xanthous.Data.EntitiesSpec (main, test) where
--------------------------------------------------------------------------------
import           Test.Prelude
--------------------------------------------------------------------------------
import qualified Data.Aeson as JSON
--------------------------------------------------------------------------------
import           Xanthous.Data.Entities
--------------------------------------------------------------------------------

main :: IO ()
main = defaultMain test

test :: TestTree
test = testGroup "Xanthous.Data.Entities"
  [ testGroup "Collision"
    [ testProperty "JSON round-trip" $ \(c :: Collision) ->
        JSON.decode (JSON.encode c) === Just c
    , testGroup "JSON encoding examples"
      [ testCase "Stop" $ JSON.encode Stop @?= "\"Stop\""
      , testCase "Combat" $ JSON.encode Combat @?= "\"Combat\""
      ]
    ]
  , testGroup "EntityAttributes"
    [ testProperty "JSON round-trip" $ \(ea :: EntityAttributes) ->
        JSON.decode (JSON.encode ea) === Just ea
    ]
  ]