Skip to content

Commit 4835282

Browse files
committed
Add apiAction, apiForAllVar, getCtxAtTypeDL, arbitraryVal
1 parent 85b90e0 commit 4835282

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

webapi-test/quickcheck-dynamic/Test/WebApi/DynamicLogic.hs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ module Test.WebApi.DynamicLogic
22
( propDL
33
, prop_api
44
, runWebApiTest
5+
, apiAction
6+
, apiForAllVar
7+
, getCtxAtTypeDL
8+
, arbitraryVal
59
, module Test.WebApi.StateModel
610
, Reifies
711
) where
@@ -21,6 +25,8 @@ import Test.QuickCheck.Monadic
2125
import Test.QuickCheck.Monadic qualified as QC
2226
import Test.QuickCheck.Extras
2327
import Data.Reflection
28+
import Test.QuickCheck.StateModel.Variables
29+
import qualified Record
2430

2531
propDL :: forall apps s. Reifies s (WebApiGlobalStateModel apps) => Proxy s -> (forall a. WebApiSessions apps a -> IO a) -> DL (ApiState s apps) () -> Property
2632
propDL _ webapiRunner d = forAllDL d (prop_api webapiRunner)
@@ -34,3 +40,22 @@ prop_api webapiRunner s =
3440

3541
runWebApiTest :: WebApiGlobalStateModel apps -> (forall (s :: Type). Reifies s (WebApiGlobalStateModel apps) => Proxy s -> r) -> r
3642
runWebApiTest gstate runner = reify gstate (\ps -> runner ps)
43+
44+
apiAction :: (Typeable a, Eq (Action s a), Show (Action s a)) => Action s a -> DL s (Val a)
45+
apiAction = fmap (Var id) . action
46+
47+
apiForAllVar :: forall a s. Typeable a => DL s (Val a)
48+
apiForAllVar = fmap (Var id) forAllVar
49+
50+
getCtxAtTypeDL :: forall a s. Typeable a => DL s [Val a]
51+
getCtxAtTypeDL = (fmap (Var id) . ctxAtType @a) <$> getVarContextDL
52+
53+
arbitraryVal :: Typeable a => VarContext -> Gen (Val a)
54+
arbitraryVal = fmap (Var id) . arbitraryVar
55+
56+
shrinkVal :: Typeable a => VarContext -> Val a -> [Val a]
57+
shrinkVal vctx = \case
58+
v@Const {} -> [v]
59+
Var f v -> fmap (Var f) $ shrinkVar vctx v
60+
v@Opt {} -> [v]
61+
-- HKVal f hk -> concat $ Record.hkToListWith (shrinkVal' f vctx) hk

0 commit comments

Comments
 (0)