@@ -53,7 +53,6 @@ import Data.HugeInt as HI
5353import Data.HugeNum as HN
5454import Data.Int as Int
5555import Data.Json.Extended as EJ
56- import Data.List ((:))
5756import Data.List as L
5857import Data.Maybe (Maybe (..))
5958import Data.Monoid (mempty )
@@ -75,8 +74,8 @@ import SqlSquared.Signature.Projection as PR
7574import SqlSquared.Signature.Relation as RL
7675import SqlSquared.Signature.UnaryOperator as UO
7776import SqlSquared.Utils (type (×), (×), (∘), (⋙))
78- import Test.StrongCheck .Arbitrary as SC
79- import Test.StrongCheck .Gen as Gen
77+ import Test.QuickCheck .Arbitrary as QC
78+ import Test.QuickCheck .Gen as Gen
8079
8180type BinopR a =
8281 { lhs ∷ a
@@ -472,6 +471,7 @@ printSqlF printLiteralF = case _ of
472471 Match { expr, cases, else_ } →
473472 " CASE "
474473 <> expr
474+ <> " "
475475 <> F .intercalate " " (map CS .printCase cases)
476476 <> F .foldMap (" ELSE " <> _) else_
477477 <> " END"
@@ -501,7 +501,7 @@ printSqlDeclF = case _ of
501501 FunctionDecl { ident, args, body } →
502502 " CREATE FUNCTION "
503503 <> ID .printIdent ident
504- <> " (" <> F .intercalate " , " (map ( " :" <> _) args) <> " ) BEGIN "
504+ <> " (" <> F .intercalate " , " (append " :" ∘ ID .printIdent <$> args) <> " ) BEGIN "
505505 <> body
506506 <> " END"
507507 Import s →
@@ -741,14 +741,14 @@ arbitrarySqlF
741741 → CoalgebraM Gen.Gen (SqlF l ) Int
742742arbitrarySqlF genLiteral n
743743 | n < 2 =
744- Gen .oneOf (map Literal $ genLiteral n)
744+ Gen .oneOf $ ( Literal <$> genLiteral n) :|
745745 [ map Ident genIdent
746746 , map Vari genIdent
747747 , pure $ Splice Nothing
748748 , pure $ SetLiteral L.Nil
749749 ]
750750 | otherwise = do
751- Gen .oneOf (map Literal $ genLiteral n)
751+ Gen .oneOf $ ( Literal <$> genLiteral n) :|
752752 [ pure $ Splice $ Just $ n - 1
753753 , pure $ Parens $ n - 1
754754 , genSetLiteral n
@@ -763,7 +763,7 @@ arbitrarySqlF genLiteral n
763763
764764arbitrarySqlDeclF ∷ CoalgebraM Gen.Gen SqlDeclF Int
765765arbitrarySqlDeclF n =
766- Gen .oneOf genImport
766+ Gen .oneOf $ genImport :|
767767 [ genFunctionDecl n
768768 ]
769769
@@ -780,12 +780,12 @@ genSetLiteral n = do
780780
781781genBinop ∷ ∀ l . CoalgebraM Gen.Gen (SqlF l ) Int
782782genBinop n = do
783- op ← SC .arbitrary
783+ op ← QC .arbitrary
784784 pure $ Binop { op, lhs: n - 1 , rhs: n - 1 }
785785
786786genUnop ∷ ∀ l . CoalgebraM Gen.Gen (SqlF l ) Int
787787genUnop n = do
788- op ← SC .arbitrary
788+ op ← QC .arbitrary
789789 pure $ Unop { op, expr: n - 1 }
790790
791791genInvokeFunction ∷ ∀ l . CoalgebraM Gen.Gen (SqlF l ) Int
@@ -796,7 +796,7 @@ genInvokeFunction n = do
796796
797797genMatch ∷ ∀ l . CoalgebraM Gen.Gen (SqlF l ) Int
798798genMatch n = do
799- nothing ← SC .arbitrary
799+ nothing ← QC .arbitrary
800800 len ← Gen .chooseInt 0 $ n - 1
801801 let
802802 foldFn acc _ = do
@@ -809,7 +809,7 @@ genMatch n = do
809809 }
810810genSwitch ∷ ∀ l . CoalgebraM Gen.Gen (SqlF l ) Int
811811genSwitch n = do
812- nothing ← SC .arbitrary
812+ nothing ← QC .arbitrary
813813 len ← Gen .chooseInt 0 $ n - 1
814814 let
815815 foldFn acc _ = do
@@ -831,11 +831,11 @@ genLet n = do
831831genSelect ∷ ∀ l . CoalgebraM Gen.Gen (SqlF l ) Int
832832genSelect n = do
833833 prjLen ← Gen .chooseInt 0 $ n - 1
834- mbRelation ← SC .arbitrary
835- mbFilter ← SC .arbitrary
836- mbGroupBy ← SC .arbitrary
837- mbOrderBy ← SC .arbitrary
838- isDistinct ← SC .arbitrary
834+ mbRelation ← QC .arbitrary
835+ mbFilter ← QC .arbitrary
836+ mbGroupBy ← QC .arbitrary
837+ mbOrderBy ← QC .arbitrary
838+ isDistinct ← QC .arbitrary
839839
840840 let
841841 foldPrj acc _ = do
@@ -883,11 +883,8 @@ genImport = Import <$> genIdent
883883
884884genIdent ∷ Gen.Gen String
885885genIdent = do
886- start ←
887- Gen .elements " a"
888- $ L .fromFoldable
889- $ S .split (S.Pattern " " ) " bcdefghijklmnopqrstuvwxyz"
890- body ← map (Int .toStringAs Int .hexadecimal) SC .arbitrary
886+ start ← Gen .elements $ " a" :| S .split (S.Pattern " " ) " bcdefghijklmnopqrstuvwxyz"
887+ body ← map (Int .toStringAs Int .hexadecimal) QC .arbitrary
891888 pure $ start <> body
892889
893890genDecls ∷ Int → Gen.Gen (L.List (SqlDeclF Int ))
@@ -910,7 +907,7 @@ genSql ∷ ∀ t. Int → GenSql t
910907genSql n
911908 | n < 2 = genLeaf
912909 | otherwise =
913- Gen .oneOf (genLetP $ n - 1 ) [ genQueryExprP $ n - 1 ]
910+ Gen .oneOf $ genLetP ( n - 1 ) :| [ genQueryExprP ( n - 1 ) ]
914911
915912genLeaf ∷ ∀ t . GenSql t
916913genLeaf =
@@ -931,21 +928,22 @@ genLetP n = do
931928
932929genQueryExprP ∷ ∀ t . Int → GenSql t
933930genQueryExprP n
934- | n < 2 = Gen .oneOf ( genQueryP n) [ genDefinedExprP n ]
931+ | n < 2 = Gen .oneOf $ genQueryP n :| [ genDefinedExprP n ]
935932 | otherwise = do
936933 op ←
937- Gen .elements BO.Limit
938- $ BO.Offset : BO.Sample : BO.Union
939- : BO.UnionAll : BO.Intersect : BO.IntersectAll
940- : BO.Except : L.Nil
941- lhs ← Gen .oneOf (genQueryP n) [ genDefinedExprP n ]
942- rhs ← Gen .oneOf (genQueryP n) [ genDefinedExprP n ]
934+ Gen .elements $ BO.Limit :|
935+ [ BO.Offset , BO.Sample , BO.Union
936+ , BO.UnionAll , BO.Intersect , BO.IntersectAll
937+ , BO.Except
938+ ]
939+ lhs ← Gen .oneOf $ genQueryP n :| [ genDefinedExprP n ]
940+ rhs ← Gen .oneOf $ genQueryP n :| [ genDefinedExprP n ]
943941 pure $ embed $ Binop { op, lhs, rhs }
944942
945943genDefinedExprP ∷ ∀ t . Int → GenSql t
946944genDefinedExprP n = do
947- binops ← Gen .vectorOf n SC .arbitrary
948- unops ← Gen .vectorOf n SC .arbitrary
945+ binops ← Gen .vectorOf n QC .arbitrary
946+ unops ← Gen .vectorOf n QC .arbitrary
949947 start ← genPrimaryExprP n
950948 adds ← Gen .vectorOf n $ genPrimaryExprP n
951949 pure $ F .foldl foldFn start $ A .zip binops $ A .zip unops adds
@@ -961,7 +959,7 @@ genDefinedExprP n = do
961959
962960genPrimaryExprP ∷ ∀ t . Int → GenSql t
963961genPrimaryExprP n =
964- Gen .oneOf genLeaf
962+ Gen .oneOf $ genLeaf :|
965963 [ genCaseP n
966964 , genUnaryP n
967965 , genFunctionP n
0 commit comments