Skip to content

Commit 05679ad

Browse files
authored
Merge pull request #14 from purescript-contrib/no-quickcheck
Remove quickcheck as a hard dependency
2 parents 986ea53 + ebc8140 commit 05679ad

File tree

4 files changed

+39
-17
lines changed

4 files changed

+39
-17
lines changed

bower.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@
1515
"purescript-arrays": "^5.0.0",
1616
"purescript-globals": "^4.0.0",
1717
"purescript-integers": "^4.0.0",
18-
"purescript-quickcheck": "^5.0.0",
19-
"purescript-generics-rep": "^6.0.0",
20-
"purescript-strings": "^4.0.0"
18+
"purescript-generics-rep": "^6.0.0",
19+
"purescript-strings": "^4.0.0",
20+
"purescript-gen": "^2.1.0",
21+
"purescript-lists": "^5.4.0",
22+
"purescript-exceptions": "^4.0.0"
2123
},
2224
"devDependencies": {
25+
"purescript-quickcheck": "^5.0.0",
2326
"purescript-quickcheck-laws": "^4.0.0"
2427
}
2528
}

src/Data/HugeNum.purs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import Data.List as L
2626
import Data.Digit (Digit, toInt, fromInt, fromChar, toChar, _zero, _one)
2727
import Data.Foldable (foldl, all, foldMap)
2828
import Data.Generic.Rep (class Generic)
29-
import Data.Int (round, odd, toNumber) as Int
29+
import Data.Int (odd, round) as Int
3030
import Data.List (List(..), (:))
3131
import Data.Maybe (Maybe(..), fromJust)
3232
import Data.String (Pattern(..), contains)
@@ -37,8 +37,6 @@ import Data.Unfoldable (replicate)
3737
import Effect.Exception.Unsafe (unsafeThrow)
3838
import Global (readFloat)
3939
import Partial.Unsafe (unsafePartial)
40-
import Test.QuickCheck.Arbitrary (class Arbitrary)
41-
import Test.QuickCheck.Gen (chooseInt)
4240

4341
-- | ##Type definitions
4442
-- | Well-formed HugeNums are such that the decimal is a positive number less
@@ -56,12 +54,6 @@ newtype HugeNum = HugeNum { digits :: List Digit, decimal :: Int, sign :: Sign }
5654
derive instance genericSign :: Generic Sign _
5755
derive instance genericHugeNum :: Generic HugeNum _
5856

59-
instance arbHugeNum :: Arbitrary HugeNum where
60-
arbitrary = do
61-
i <- Int.toNumber <$> chooseInt 0 1000
62-
d <- Int.toNumber <$> chooseInt 0 10
63-
pure $ fromNumber (i + d / 10.0)
64-
6557
instance eqSign :: Eq Sign where
6658
eq Plus Plus = true
6759
eq Minus Minus = true

src/Data/HugeNum/Gen.purs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
module Data.HugeNum.Gen where
2+
3+
import Prelude
4+
5+
import Control.Monad.Gen as Gen
6+
import Data.HugeNum (HugeNum)
7+
import Data.HugeNum as HugeNum
8+
import Data.Int as Int
9+
10+
genHugeNum :: forall m. Gen.MonadGen m => m HugeNum
11+
genHugeNum = do
12+
i <- Int.toNumber <$> Gen.chooseInt 0 1000
13+
d <- Int.toNumber <$> Gen.chooseInt 0 10
14+
pure $ HugeNum.fromNumber (i + d / 10.0)

test/Main.purs

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,29 @@
11
module Test.Main where
22

33
import Prelude
4-
import Test.QuickCheck.Laws.Data.Eq (checkEq)
5-
import Test.QuickCheck.Laws.Data.Ord (checkOrd)
6-
import Test.QuickCheck.Laws.Data.Semiring (checkSemiring)
7-
import Test.QuickCheck.Laws.Data.Ring (checkRing)
4+
85
import Data.HugeNum (HugeNum)
6+
import Data.HugeNum.Gen (genHugeNum)
97
import Effect (Effect)
108
import Effect.Console (log)
9+
import Test.QuickCheck (class Arbitrary)
10+
import Test.QuickCheck.Laws.Data.Eq (checkEq)
11+
import Test.QuickCheck.Laws.Data.Ord (checkOrd)
12+
import Test.QuickCheck.Laws.Data.Ring (checkRing)
13+
import Test.QuickCheck.Laws.Data.Semiring (checkSemiring)
1114
import Type.Proxy (Proxy(..))
1215

13-
prxHugeNum :: Proxy HugeNum
16+
newtype ArbHugeNum = ArbHugeNum HugeNum
17+
18+
derive newtype instance eqArbHugeNum :: Eq ArbHugeNum
19+
derive newtype instance ordArbHugeNum :: Ord ArbHugeNum
20+
derive newtype instance semiringArbHugeNum :: Semiring ArbHugeNum
21+
derive newtype instance ringArbHugeNum :: Ring ArbHugeNum
22+
23+
instance arbitraryArbHugeNum :: Arbitrary ArbHugeNum where
24+
arbitrary = ArbHugeNum <$> genHugeNum
25+
26+
prxHugeNum :: Proxy ArbHugeNum
1427
prxHugeNum = Proxy
1528

1629
main :: Effect Unit

0 commit comments

Comments
 (0)