Factor out a new EntityAttributes type from some of the methods of the Entity class, to avoid the proliferation of 1-argument boolean methods on the entity class that always have to be forwarded through the Entity instance for SomeEntity if they have defaults (forgetting to do which has wasted tons of my time up to this point). Currently blocksVision, blocksObject, and collision are all in there.
		
			
				
	
	
		
			28 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
| --------------------------------------------------------------------------------
 | |
| 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
 | |
|     ]
 | |
|   ]
 |