dataframe-0.3.3.7: tests/Operations/Join.hs
{-# LANGUAGE OverloadedStrings #-}
module Operations.Join where
import Data.Text (Text)
import qualified DataFrame as D
import DataFrame.Operations.Join
import Test.HUnit
df1 :: D.DataFrame
df1 =
D.fromNamedColumns
[ ("key", D.fromList ["K0" :: Text, "K1", "K2", "K3", "K4", "K5"])
, ("A", D.fromList ["A0" :: Text, "A1", "A2", "A3", "A4", "A5"])
]
df2 :: D.DataFrame
df2 =
D.fromNamedColumns
[ ("key", D.fromList ["K0" :: Text, "K1", "K2"])
, ("B", D.fromList ["B0" :: Text, "B1", "B2"])
]
testInnerJoin :: Test
testInnerJoin =
TestCase
( assertEqual
"Test inner join with single key"
( D.fromNamedColumns
[ ("key", D.fromList ["K0" :: Text, "K1", "K2"])
, ("A", D.fromList ["A0" :: Text, "A1", "A2"])
, ("B", D.fromList ["B0" :: Text, "B1", "B2"])
]
)
(D.sortBy D.Ascending ["key"] (innerJoin ["key"] df1 df2))
)
testLeftJoin :: Test
testLeftJoin =
TestCase
( assertEqual
"Test left join with single key"
( D.fromNamedColumns
[ ("key", D.fromList ["K0" :: Text, "K1", "K2", "K3", "K4", "K5"])
, ("A", D.fromList ["A0" :: Text, "A1", "A2", "A3", "A4", "A5"])
, ("B", D.fromList [Just "B0", Just "B1" :: Maybe Text, Just "B2"])
]
)
(D.sortBy D.Ascending ["key"] (leftJoin ["key"] df2 df1))
)
testRightJoin :: Test
testRightJoin =
TestCase
( assertEqual
"Test right join with single key"
( D.fromNamedColumns
[ ("key", D.fromList ["K0" :: Text, "K1", "K2"])
, ("A", D.fromList ["A0" :: Text, "A1", "A2"])
, ("B", D.fromList ["B0" :: Text, "B1", "B2"])
]
)
(D.sortBy D.Ascending ["key"] (rightJoin ["key"] df2 df1))
)
testFullOuterJoin :: Test
testFullOuterJoin =
TestCase
( assertEqual
"Test full outer join with single key"
( D.fromNamedColumns
[ ("key", D.fromList ["K0" :: Text, "K1", "K2", "K3", "K4", "K5"])
, ("A", D.fromList ["A0" :: Text, "A1", "A2", "A3", "A4", "A5"])
, ("B", D.fromList [Just "B0", Just "B1" :: Maybe Text, Just "B2"])
]
)
(D.sortBy D.Ascending ["key"] (fullOuterJoin ["key"] df2 df1))
)
tests :: [Test]
tests =
[ TestLabel "innerJoin" testInnerJoin
, TestLabel "leftJoin" testLeftJoin
, TestLabel "rightJoin" testRightJoin
]