packages feed

snowchecked 0.0.0.1 → 0.0.0.3

raw patch · 7 files changed

+118/−31 lines, 7 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

package.yaml view
@@ -1,5 +1,5 @@ name: snowchecked-version: 0.0.0.1+version: 0.0.0.3 github: robertfischer/hs-snowflake-checked license: Apache-2.0 author: Robert Fischer
snowchecked.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           snowchecked-version:        0.0.0.1+version:        0.0.0.3 synopsis:       A checksummed variation on Twitter's Snowflake UID generation algorithm description:    See the file ./README.md, which is included in the package and also on GitHub. category:       Data@@ -55,6 +55,10 @@   type: exitcode-stdio-1.0   main-is: Spec.hs   other-modules:+      Gens+      Integer+      Word32+      Word64       Paths_snowchecked   hs-source-dirs:       test
+ test/Gens.hs view
@@ -0,0 +1,35 @@+{-# LANGUAGE TypeApplications #-}++module Gens (module Gens) where++import           Control.Monad          (unless, void)+import           Control.Monad.IO.Class (MonadIO)+import           Data.List              (nub)+import           Data.Snowchecked+import           Data.WideWord.Word256+import           Data.Word+import           Hedgehog+import qualified Hedgehog.Gen           as Gen+import           Hedgehog.Main          (defaultMain)+import qualified Hedgehog.Range         as Range++genWord8 :: (MonadGen m) => m Word8+genWord8 = Gen.word8 $ Range.linear (minBound @Word8) (maxBound @Word8)++genWord256 :: (MonadGen m) => m Word256+genWord256 = Gen.integral $ Range.linear (minBound @Word256) (maxBound @Word256)++genConfig :: (MonadGen m) => m SnowcheckedConfig+genConfig = SnowcheckedConfig+		<$> Gen.integral (Range.linear 2 (maxBound @Word8))+		<*> Gen.integral (Range.linear 2 (maxBound @Word8))+		<*> Gen.integral (Range.linear 2 (maxBound @Word8))+		<*> Gen.integral (Range.linear 2 (maxBound @Word8))++forAllFlake :: (MonadIO m) => PropertyT m Flake+forAllFlake = forAll genConfig >>= forAllFlake'++forAllFlake' :: (MonadIO m) => SnowcheckedConfig -> PropertyT m Flake+forAllFlake' cfg = do+	nodeId <- forAll genWord256+	newSnowcheckedGen cfg nodeId >>= nextFlake
+ test/Integer.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE TemplateHaskell  #-}+{-# LANGUAGE TypeApplications #-}++module Integer (tests) where++import           Data.Snowchecked+import           Data.Snowchecked.Encoding.Integral+import           Gens+import           Hedgehog++tests :: IO Bool+tests = checkParallel $$(discover)++prop_flakeToIntegerToFlake :: Property+prop_flakeToIntegerToFlake = property $ do+		cfg <- forAll genConfig+		flake <- forAllFlake' cfg+		let value = fromFlake @Integer flake+		let result = parseFlake cfg value +		result === Just flake
test/Spec.hs view
@@ -8,39 +8,28 @@ import           Data.Snowchecked import           Data.WideWord.Word256 import           Data.Word+import           Gens import           Hedgehog import qualified Hedgehog.Gen           as Gen import           Hedgehog.Main          (defaultMain) import qualified Hedgehog.Range         as Range +import qualified Integer+import qualified Word32+import qualified Word64+ main :: IO () main = do 		recheck (Size 4) (Seed 14462958355020818941 14776761114051845121) prop_generatesUniqueValues 		recheck (Size 8) (Seed 11763301661976410488 14055395789257366631) prop_generatesUniqueValues 		recheck (Size 14) (Seed 6771904241892528611 8532317410904456029) prop_generatesUniqueValues 		recheck (Size 14) (Seed 4790609826115340731 8375105224114527375) prop_generatesUniqueValues-		defaultMain [ checkParallel $$(discover) ]--genWord8 :: (MonadGen m) => m Word8-genWord8 = Gen.word8 $ Range.linear (minBound @Word8) (maxBound @Word8)--genWord256 :: (MonadGen m) => m Word256-genWord256 = Gen.integral $ Range.linear (minBound @Word256) (maxBound @Word256)--genConfig :: (MonadGen m) => m SnowcheckedConfig-genConfig = SnowcheckedConfig-		<$> Gen.integral (Range.linear 2 (maxBound @Word8))-		<*> Gen.integral (Range.linear 2 (maxBound @Word8))-		<*> Gen.integral (Range.linear 2 (maxBound @Word8))-		<*> Gen.integral (Range.linear 2 (maxBound @Word8))--forAllFlake :: (MonadIO m) => PropertyT m Flake-forAllFlake = forAll genConfig >>= forAllFlake'--forAllFlake' :: (MonadIO m) => SnowcheckedConfig -> PropertyT m Flake-forAllFlake' cfg = do-	nodeId <- forAll genWord256-	newSnowcheckedGen cfg nodeId >>= nextFlake+		defaultMain+			[ checkParallel $$(discover)+			, Integer.tests+			, Word32.tests+			, Word64.tests+			]  prop_generatesUniqueValues :: Property prop_generatesUniqueValues = property $ do@@ -51,13 +40,6 @@ 	flakeGen <- newSnowcheckedGen cfg nodeId 	resultLst <- mapM (\_ -> nextFlake flakeGen) lst 	resultLst === nub resultLst--prop_roundTripIntegral :: Property-prop_roundTripIntegral = property $ do-	cfg <- forAll genConfig-	flake <- forAllFlake' cfg-	result <- parseFlake cfg $ flakeToIntegral @Integer flake-	flake === result  prop_flakeCanBeNFed :: Property prop_flakeCanBeNFed = property $ do
+ test/Word32.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE TemplateHaskell  #-}+{-# LANGUAGE TypeApplications #-}++module Word32 (tests) where++import           Control.Monad+import           Data.Snowchecked+import           Data.Snowchecked.Encoding.Integral+import           Data.Word+import           Gens+import           Hedgehog++tests :: IO Bool+tests = checkParallel $$(discover)++prop_flakeToWord32ToFlake :: Property+prop_flakeToWord32ToFlake = withDiscards (999999999 :: DiscardLimit) . property $ do+		cfg <- forAll genConfig+		unless (snowcheckedConfigBitCount cfg <= 32) discard+		flake <- forAllFlake' cfg+		let value = fromFlake @Word32 flake+		let result = parseFlake cfg value+		result === Just flake
+ test/Word64.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE TemplateHaskell  #-}+{-# LANGUAGE TypeApplications #-}++module Word64 (tests) where++import           Control.Monad+import           Data.Snowchecked+import           Data.Snowchecked.Encoding.Integral+import           Data.Word+import           Gens+import           Hedgehog++tests :: IO Bool+tests = checkParallel $$(discover)++prop_flakeToWord64ToFlake :: Property+prop_flakeToWord64ToFlake = withDiscards (999999999 :: DiscardLimit) . property $ do+		cfg <- forAll genConfig+		unless (snowcheckedConfigBitCount cfg <= 64) discard+		flake <- forAllFlake' cfg+		let value = fromFlake @Word64 flake+		let result = parseFlake cfg value+		result === Just flake