packages feed

streamgraph-0.5.1.0: Test.hs

{-# LANGUAGE OverloadedStrings #-}
import Test.Hspec
import Streamgraph
import Visie.Data (TextFloat(TextFloat), getText)

main :: IO ()
main = hspec $ do
  describe "aggregate" $ do
    let dates = [makeUni 2017 1 6,
                 makeUni 2017 1 7,
                 makeUni 2017 1 8,
                 makeUni 2017 1 9,
                 makeUni 2017 1 10,
                 makeUni 2017 1 11]
        keys = ["a", "b", "c"]
        values = [1..10]
        toAggregate = [(k, v, d) | k <- keys, v <- values, d <- dates]
        aggregate = toTimeSeries id . map toPoint
    it "first case" $ do
      (length . aggregate) toAggregate `shouldBe`
        (length keys * length dates * length values)
  describe "the monoid" $ do
    it "appends as expected" $ do
      (getText (mappend (TextFloat "a" 1) (TextFloat "a" 2))) `shouldBe` "a"
  describe "groupWith" $ do
    it "groups even numbers" $ do
      let modThree :: Int -> Int
          modThree = flip mod 3
      (groupWith modThree [1, 2, 4, 3, 6]) `shouldBe` [[3,6], [1,4], [2]]