Skip to content
This repository was archived by the owner on Jun 15, 2023. It is now read-only.

Commit 976e79e

Browse files
authored
Merge pull request #37 from garyb/monadgen-2
Missed some bits of MonadGen conversion
2 parents 81da9ad + 1210457 commit 976e79e

File tree

3 files changed

+31
-31
lines changed

3 files changed

+31
-31
lines changed

src/SqlSquared.purs

+15-15
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ module SqlSquared
1111
, decodeJson
1212
, decodeJsonQuery
1313
, decodeJsonModule
14-
, arbitrarySqlOfSize
15-
, arbitrarySqlQueryOfSize
16-
, arbitrarySqlModuleOfSize
14+
, genSql
15+
, genSqlQuery
16+
, genSqlModule
1717
, module Sig
1818
, module Lenses
1919
, module Constructors
@@ -22,20 +22,18 @@ module SqlSquared
2222

2323
import Prelude
2424

25+
import Control.Monad.Gen as Gen
26+
import Control.Monad.Rec.Class (class MonadRec)
2527
import Data.Argonaut as J
2628
import Data.Either (Either)
2729
import Data.Functor.Mu (Mu)
2830
import Data.Json.Extended as EJ
2931
import Data.Traversable (traverse)
30-
3132
import Matryoshka (cata, anaM)
32-
33-
import SqlSquared.Signature as Sig
34-
import SqlSquared.Lenses as Lenses
3533
import SqlSquared.Constructors as Constructors
34+
import SqlSquared.Lenses as Lenses
3635
import SqlSquared.Parser as Parser
37-
38-
import Test.QuickCheck.Gen as Gen
36+
import SqlSquared.Signature as Sig
3937

4038
type Sql = Mu (Sig.SqlF EJ.EJsonF)
4139

@@ -70,11 +68,13 @@ decodeJsonQuery = traverse decodeJson <=< Sig.decodeJsonSqlQueryF
7068
decodeJsonModule J.Json Either String SqlModule
7169
decodeJsonModule = traverse decodeJson <=< Sig.decodeJsonSqlModuleF
7270

73-
arbitrarySqlOfSize Int Gen.Gen Sql
74-
arbitrarySqlOfSize = anaM $ Sig.arbitrarySqlF EJ.arbitraryEJsonF
71+
genSql m. Gen.MonadGen m MonadRec m m Sql
72+
genSql = Gen.sized $ anaM (Sig.genSqlF EJ.arbitraryEJsonF)
7573

76-
arbitrarySqlQueryOfSize Int Gen.Gen SqlQuery
77-
arbitrarySqlQueryOfSize = traverse arbitrarySqlOfSize <=< Sig.arbitrarySqlQueryF
74+
genSqlQuery m. Gen.MonadGen m MonadRec m m SqlQuery
75+
genSqlQuery =
76+
Gen.sized $ traverse (flip Gen.resize genSql <<< const) <=< Sig.genSqlQueryF
7877

79-
arbitrarySqlModuleOfSize Int Gen.Gen SqlModule
80-
arbitrarySqlModuleOfSize = traverse arbitrarySqlOfSize <=< Sig.arbitrarySqlModuleF
78+
genSqlModule m. Gen.MonadGen m MonadRec m m SqlModule
79+
genSqlModule =
80+
Gen.sized $ traverse (flip Gen.resize genSql <<< const) <=< Sig.genSqlModuleF

src/SqlSquared/Signature.purs

+13-14
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,10 @@ module SqlSquared.Signature
2323
, decodeJsonSqlDeclF
2424
, decodeJsonSqlQueryF
2525
, decodeJsonSqlModuleF
26-
, arbitrarySqlF
27-
, arbitrarySqlDeclF
28-
, arbitrarySqlQueryF
29-
, arbitrarySqlModuleF
30-
, genSql
26+
, genSqlF
27+
, genSqlDeclF
28+
, genSqlQueryF
29+
, genSqlModuleF
3130
, module SqlSquared.Utils
3231
, module OT
3332
, module JT
@@ -734,13 +733,13 @@ decodeJsonSqlModuleF = J.decodeJson >=> \obj → do
734733
pure $ Module decls
735734
_ → E.Left $ "Invalid top-level SQL^2 production: " <> tag
736735

737-
arbitrarySqlF
736+
genSqlF
738737
m l
739738
. Gen.MonadGen m
740739
MonadRec m
741740
CoalgebraM m l Int
742741
CoalgebraM m (SqlF l) Int
743-
arbitrarySqlF genLiteral n
742+
genSqlF genLiteral n
744743
| n < 2 =
745744
Gen.oneOf $ (Literal <$> genLiteral n) :|
746745
[ map Ident genIdent
@@ -762,17 +761,17 @@ arbitrarySqlF genLiteral n
762761
, genSelect n
763762
]
764763

765-
arbitrarySqlDeclF m. Gen.MonadGen m CoalgebraM m SqlDeclF Int
766-
arbitrarySqlDeclF n =
764+
genSqlDeclF m. Gen.MonadGen m CoalgebraM m SqlDeclF Int
765+
genSqlDeclF n =
767766
Gen.oneOf $ genImport :|
768767
[ genFunctionDecl n
769768
]
770769

771-
arbitrarySqlQueryF m. Gen.MonadGen m CoalgebraM m SqlQueryF Int
772-
arbitrarySqlQueryF n = Query <$> genDecls n <*> pure n
770+
genSqlQueryF m. Gen.MonadGen m CoalgebraM m SqlQueryF Int
771+
genSqlQueryF n = Query <$> genDecls n <*> pure n
773772

774-
arbitrarySqlModuleF m. Gen.MonadGen m CoalgebraM m SqlModuleF Int
775-
arbitrarySqlModuleF n = Module <$> genDecls n
773+
genSqlModuleF m. Gen.MonadGen m CoalgebraM m SqlModuleF Int
774+
genSqlModuleF n = Module <$> genDecls n
776775

777776
genSetLiteral m l. Gen.MonadGen m CoalgebraM m (SqlF l) Int
778777
genSetLiteral n = do
@@ -892,7 +891,7 @@ genDecls ∷ ∀ m. Gen.MonadGen m ⇒ Int → m (L.List (SqlDeclF Int))
892891
genDecls n = do
893892
let
894893
foldFn acc _ = do
895-
cs ← arbitrarySqlDeclF $ n - 1
894+
cs ← genSqlDeclF $ n - 1
896895
pure $ cs L.: acc
897896
len ← Gen.chooseInt 0 $ n - 1
898897
L.foldM foldFn L.Nil $ L.range 0 len

test/src/Gen.purs

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ import Control.Monad.Eff (Eff)
66
import Control.Monad.Eff.Console (CONSOLE)
77
import Control.Monad.Eff.Exception (EXCEPTION)
88
import Control.Monad.Eff.Random (RANDOM)
9+
import Control.Monad.Gen as Gen
910
import Data.Either as E
10-
import SqlSquared (SqlQuery, arbitrarySqlQueryOfSize, decodeJsonQuery, encodeJsonQuery, printQuery, tokenize)
11+
import SqlSquared (SqlQuery, genSqlQuery, decodeJsonQuery, encodeJsonQuery, printQuery, tokenize)
1112
import Test.QuickCheck ((<?>))
1213
import Test.QuickCheck as QC
1314
import Test.QuickCheck.Arbitrary as A
@@ -16,7 +17,7 @@ import Test.Unit.Console as Console
1617
newtype ArbSql = ArbSql SqlQuery
1718

1819
instance arbitraryArbSqlA.Arbitrary ArbSql where
19-
arbitrary = map ArbSql $ arbitrarySqlQueryOfSize 3
20+
arbitrary = map ArbSql $ Gen.resize (const 3) genSqlQuery
2021

2122
newtype ParseableSql = ParseableSql SqlQuery
2223

0 commit comments

Comments
 (0)