packages feed

hgg-svg-0.1.0.0: test/Spec.hs

-- | hgg-svg テスト。 Phase 14 A3 = BoundPlot (df |>> spec) → SVG smoke。
{-# LANGUAGE OverloadedStrings #-}
module Main (main) where

import           Graphics.Hgg.Backend.SVG (renderBound)
import           Graphics.Hgg.Frame       ((|>>))
import           Graphics.Hgg.Spec        (ColData (..), layer, scatter)
import           Data.Map.Strict          (Map)
import qualified Data.Map.Strict          as M
import           Data.Text                (Text)
import qualified Data.Text                as T
import qualified Data.Vector              as V
import           Test.Hspec

-- 列順違いで同一データ (Map vs assoc-list)
xyAssoc :: [(Text, ColData)]
xyAssoc =
  [ ("x", NumData (V.fromList [1, 2, 3]))
  , ("y", NumData (V.fromList [4, 5, 6]))
  ]

xyMap :: Map Text ColData
xyMap = M.fromList xyAssoc

main :: IO ()
main = hspec $
  describe "renderBound (df |>> spec)" $ do
    it "df |>> spec が SVG を出す" $ do
      let svg = renderBound (xyMap |>> layer (scatter "x" "y"))
      ("<svg"   `T.isInfixOf` svg) `shouldBe` True
      ("</svg>" `T.isInfixOf` svg) `shouldBe` True
    it "Map と assoc-list で同一 SVG (同データ、 spec-2 §7)" $
      renderBound (xyMap   |>> layer (scatter "x" "y"))
        `shouldBe`
      renderBound (xyAssoc |>> layer (scatter "x" "y"))