@@ -5,7 +5,9 @@ module Operations.Shuffle where
55
66import qualified DataFrame as D
77
8- import DataFrame.Operations.Permutation (shuffle )
8+ import qualified Data.Set as Set
9+ import qualified Data.Vector.Unboxed as VU
10+ import DataFrame.Operations.Permutation (shuffle , shuffledIndices )
911import System.Random (mkStdGen )
1012import Test.HUnit (Test (.. ), assertEqual )
1113
@@ -74,11 +76,27 @@ shuffleDifferentSeedIsDifferent =
7476 (shuffled1 == shuffled2)
7577 )
7678
79+ -- Test that ShuffleIndeces does not dorp, add, or repeat any index
80+ shuffleDoesNotAddOrDropIndices :: Test
81+ shuffleDoesNotAddOrDropIndices =
82+ let
83+ gen = mkStdGen 42
84+ actual = (Set. fromList [0 .. 10 ])
85+ computedVector = shuffledIndices gen 11
86+ computed = (Set. fromList $ VU. toList $ shuffledIndices gen 11 )
87+ in
88+ TestList
89+ [
90+ TestCase (assertEqual " Indecis are not dropped or added" (VU. length computedVector) 11 )
91+ , TestCase (assertEqual " There are no repeated indecis" computed actual)
92+ ]
93+
7794tests :: [Test ]
7895tests =
7996 [ TestLabel " shuffleShuffles" shuffleShuffles
8097 , TestLabel " shufflePreservesData" shufflePreservesData
8198 , TestLabel " shufflePreservesColumnNames" shufflePreservesColumnNames
8299 , TestLabel " shuffleSameSeedIsSameShuffle" shuffleSameSeedIsSameShuffle
83100 , TestLabel " shuffleDifferentSeedIsDifferent" shuffleDifferentSeedIsDifferent
101+ , TestLabel " shuffleDoesNotAddOrDropIndices" shuffleDoesNotAddOrDropIndices
84102 ]
0 commit comments