mischief-ecs-0.2.0.0: test/Changes.hs
module Changes where
import Data.Foldable
import Data.Kind
import Data.Text qualified as T
import Mischief.ECS
import Mischief.ECS.App (register, setSystemTicks, setTick, simulateSystem, tick)
import Mischief.ECS.Components
import Mischief.ECS.Components.Spawn (meta)
import Mischief.ECS.Fixed (FixedPlugin, FixedUpdate)
import Mischief.ECS.Relationships.ChildOf
import Mischief.ECS.Relationships.Graph qualified as Graph
import Mischief.ECS.Time qualified as Time
import Utils
main :: IO ()
main = do
runTests
[ test1,
test2,
test3,
test4,
test5
]
test1 :: System ()
test1 = simulateSystem $ do
setTick $ Tick 0
a <- spawn (Name "A", Comp1)
b <- spawn (Name "B", Comp1)
c <- spawn (Name "C", Comp1)
setSystemTicks (Tick 0) (Tick 1)
assertqWith
[q|Name / With Comp1, Changed Name|]
[(a, Name "A"), (b, Name "B"), (c, Name "C")]
test2 :: System ()
test2 = simulateSystem $ do
setTick $ Tick 19
a <- spawn (Name "A", Comp1)
b <- spawn (Name "B", Comp1)
c <- spawn (Name "C", Comp1)
setSystemTicks (Tick 1) (Tick 3)
assertqWith
[q|Name / With Comp1, Changed Name (\a b -> a == Tick 19 && b == Tick 1) (\a b -> a == Tick 19 && b == Tick 3)|]
[(a, Name "A"), (b, Name "B"), (c, Name "C")]
test3 :: System ()
test3 = simulateSystem $ do
setTick $ Tick 1
a <- spawn (Name "A", Comp1)
b <- spawn (Name "B", Comp1)
c <- spawn (Name "C", Comp1)
setSystemTicks (Tick 1) (Tick 3)
assertqWith
[q|Name / Changed Name (>=) (<)|]
[(a, Name "A"), (b, Name "B"), (c, Name "C")]
test4 :: System ()
test4 = simulateSystem $ do
setTick $ Tick 1
a <- spawn (Name "A", Comp1)
b <- spawn (Name "B", Comp1)
c <- spawn (Name "C", Comp1)
setTick $ Tick 2
setSystemTicks (Tick 1) (Tick 3)
assertqWith
[q|Name / Changed Name (>=) (<)|]
[(a, Name "A"), (b, Name "B"), (c, Name "C")]
setSystemTicks (Tick 2) (Tick 3)
assertqWith
[q|Name / Changed Name|]
[]
insert (Name "A") a
assertqWith
[q|Name / Changed Name (>=) (<)|]
[(a, Name "A"), (b, Name "B"), (c, Name "C")]
setTick $ Tick 3
setSystemTicks (Tick 3) (Tick 3)
insert (Comp2, Name "A") a
assertqWith
[q|Name / Changed Name (==) (==)|]
[(a, Name "A")]
test5 :: System ()
test5 = simulateSystem $ do
setTick $ Tick 1
a <- spawn (Name "A")
b <- spawn (Name "B")
c <- spawn (Name "C")
setSystemTicks (Tick 1) (Tick 3)
assertqContainsWith
[q|Name / Changed Name|]
[(a, Name "A"), (b, Name "B"), (c, Name "C")]