analyze-0.1.0.0: test/Fixtures.hs
module Fixtures where
import Analyze.RFrame (RFrame (..), RFrameUpdate (..))
import Analyze.Values
import qualified Control.Foldl as F
import Data.HashMap.Strict (HashMap)
import qualified Data.HashMap.Strict as HM
import Data.Text (Text)
import qualified Data.Text as T
import Data.Vector (Vector)
import qualified Data.Vector as V
exampleDecl :: Vector (Text, ValueType)
exampleDecl = V.fromList
[ ("id", ValueTypeInteger)
, ("name", ValueTypeText)
, ("score", ValueTypeDouble)
]
exampleHeader :: Vector Text
exampleHeader = V.fromList
[ "id"
, "name"
, "score"
]
exampleObj1 :: Vector (Text, Value)
exampleObj1 = V.fromList
[ ("id", ValueInteger 42)
, ("name", ValueText "foo")
, ("score", ValueDouble 5.0)
]
exampleRecord1 :: Vector Value
exampleRecord1 = V.fromList
[ ValueInteger 42
, ValueText "foo"
, ValueDouble 50.0
]
exampleObj2 :: Vector (Text, Value)
exampleObj2 = V.fromList
[ ("id", ValueInteger 43)
, ("name", ValueText "bar")
, ("score", ValueDouble 3.0)
]
fullUpdate :: RFrameUpdate Text Value
fullUpdate = RFrameUpdate names values
where
names = V.fromList ["id", "name", "score"]
values = V.fromList
[ V.fromList [ValueInteger 42, ValueText "foo", ValueDouble 5.0]
, V.fromList [ValueInteger 43, ValueText "bar", ValueDouble 3.0]
]
noNameUpdate :: RFrameUpdate Text Value
noNameUpdate = RFrameUpdate names values
where
names = V.fromList ["id", "score"]
values = V.fromList
[ V.fromList [ValueInteger 42, ValueDouble 5.0]
, V.fromList [ValueInteger 43, ValueDouble 3.0]
]
colorUpdate :: RFrameUpdate Text Value
colorUpdate = RFrameUpdate names values
where
names = V.fromList ["color"]
values = V.fromList
[ V.fromList [ValueText "purple"]
, V.fromList [ValueText "orange"]
]
colorOneUpdate :: RFrameUpdate Text Value
colorOneUpdate = RFrameUpdate names values
where
names = V.fromList ["color"]
values = V.fromList
[ V.fromList [ValueText "purple"]
]
colorHotUpdate :: RFrameUpdate Text Value
colorHotUpdate = RFrameUpdate names values
where
names = V.fromList ["color/purple", "color/orange"]
values = V.fromList
[ V.fromList [ValueBool True, ValueBool False]
, V.fromList [ValueBool False, ValueBool True]
]
fullColorUpdate :: RFrameUpdate Text Value
fullColorUpdate = RFrameUpdate names values
where
names = V.fromList ["id", "name", "score", "color"]
values = V.fromList
[ V.fromList [ValueInteger 42, ValueText "foo", ValueDouble 5.0, ValueText "purple"]
, V.fromList [ValueInteger 43, ValueText "bar", ValueDouble 3.0, ValueText "orange"]
]
overlapUpdate :: RFrameUpdate Text Value
overlapUpdate = RFrameUpdate names values
where
names = V.fromList ["color", "score"]
values = V.fromList
[ V.fromList [ValueText "purple", ValueDouble 10.0]
, V.fromList [ValueText "orange", ValueDouble 6.0]
]
fullOverlapUpdate :: RFrameUpdate Text Value
fullOverlapUpdate = RFrameUpdate names values
where
names = V.fromList ["id", "name", "score", "color"]
values = V.fromList
[ V.fromList [ValueInteger 42, ValueText "foo", ValueDouble 10.0, ValueText "purple"]
, V.fromList [ValueInteger 43, ValueText "bar", ValueDouble 6.0, ValueText "orange"]
]
emptyUpdate :: RFrameUpdate Text Value
emptyUpdate = RFrameUpdate V.empty (V.replicate 2 V.empty)
fixtures :: HashMap Text (RFrameUpdate Text Value)
fixtures = HM.fromList
[ ("full", fullUpdate)
, ("noName", noNameUpdate)
, ("color", colorUpdate)
, ("colorOne", colorOneUpdate)
, ("colorHot", colorHotUpdate)
, ("empty", emptyUpdate)
, ("fullColor", fullColorUpdate)
, ("overlap", overlapUpdate)
, ("fullOverlap", fullOverlapUpdate)
]
exampleCsv :: Text
exampleCsv = "id,name,score\n" `mappend` "42,foo,5.0\n" `mappend` "43,bar,3.0\n"