Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,4 @@ bin/
coverage-html
.DS_Store
flake.lock
tags
3 changes: 2 additions & 1 deletion dataframe.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,8 @@ test-suite tests
Operations.Subset,
Operations.Statistics,
Operations.Take,
Parquet
Parquet,
Monad
build-depends: base >= 4 && < 5,
dataframe ^>= 0.4,
directory >= 1.3.0.0 && < 2,
Expand Down
4 changes: 2 additions & 2 deletions tests/GenDataFrame.hs
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ genColumn len =

genDataFrame :: Gen DataFrame
genDataFrame = do
numRows <- choose (0, 100)
numCols <- choose (0, 10)
numRows <- choose (100, 1000)
numCols <- choose (1, 10)
colNames <- V.fromList <$> vectorOf numCols genUniqueColName
cols <- V.fromList <$> vectorOf numCols (genColumn numRows)
let indices = M.fromList $ zip (V.toList colNames) [0 ..]
Expand Down
7 changes: 6 additions & 1 deletion tests/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import Test.HUnit
import Test.QuickCheck

import qualified Functions
import qualified Monad
import qualified Operations.Aggregations
import qualified Operations.Apply
import qualified Operations.Core
Expand Down Expand Up @@ -5138,6 +5139,10 @@ main = do
mapM
(quickCheckWithResult stdArgs)
Operations.Subset.tests
if failures result > 0 || errors result > 0 || not (all isSuccessful propRes)
monadRes <- mapM (quickCheckWithResult stdArgs) Monad.tests
if failures result > 0
|| errors result > 0
|| not (all isSuccessful propRes)
|| not (all isSuccessful monadRes)
then Exit.exitFailure
else Exit.exitSuccess
27 changes: 27 additions & 0 deletions tests/Monad.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
module Monad where

import qualified DataFrame as D
import DataFrame.Internal.DataFrame
import DataFrame.Monad
import GenDataFrame ()
import System.Random
import Test.QuickCheck
import Test.QuickCheck.Monadic

roundToTwoPlaces x = fromIntegral (round (x * 100)) / 100.0

prop_sampleM :: DataFrame -> Gen (Gen Property)
prop_sampleM df = monadic' $ do
p <- run $ choose (0.0 :: Double, 1.0 :: Double)
let expectedRate = roundToTwoPlaces p
seed <- run $ choose (0, 1000)
let rowCount = D.nRows df
let colCount = D.nColumns df
pre (colCount > 1 && rowCount > 100)
let finalDf = execFrameM df (sampleM (mkStdGen seed) expectedRate)
let finalRowCount = D.nRows finalDf
let realRate = roundToTwoPlaces $ fromIntegral finalRowCount / fromIntegral rowCount
let diff = abs $ expectedRate - realRate
assert (diff <= 0.11)

tests = [prop_sampleM]