packages feed

lightning-haskell-0.1.0.2: test-integration/Web/Lightning/PlotSpec.hs

{-# LANGUAGE OverloadedStrings #-}

module Web.Lightning.PlotSpec where

import           ConfigLightning

import           Control.Monad.IO.Class

import           Test.Hspec

import           Data.Maybe
import qualified Data.Text as T

import           System.Environment

import           Web.Lightning
import           Web.Lightning.Plots
import           Web.Lightning.Session

main :: IO ()
main = hspec spec

spec :: Spec
spec = do
  lightning <- runIO configLightning
  urlStr <- runIO $ getEnv "LIGHTNING_VIZ_URL"

  let url = T.pack urlStr

  describe "Lightning Integration Tests" $ do
    it "create Adjacency plot." $ do
      res <- run lightning $ adjacencyPlot def { apConn = [[1,2,3],[4,5,6],[7,8,9]] }
      res `shouldSatisfy` isRight
    it "create Circle plot." $ do
      res <- run lightning $ circlePlot def { cpConn = [[1,2,3],[4,5,6],[7,8,9]] }
      res `shouldSatisfy` isRight
    it "create Force plot." $ do
      res <- run lightning $ forcePlot def { fpConn = [[1,2,3],[4,5,6],[7,8,9]] }
      res `shouldSatisfy` isRight
    it "create Graph plot." $ do
      res <- run lightning $ graphPlot def { gpX = [1,2,3], gpY = [1,2,3], gpConn = [[1,2,3],[4,5,6],[7,8,9]] }
      res `shouldSatisfy` isRight
    it "create GraphBundled plot." $ do
      res <- run lightning $ graphPlot def { gpX = [1,2,3], gpY = [1,2,3], gpConn = [[1,2,3],[4,5,6],[7,8,9]] }
      res `shouldSatisfy` isRight
    it "create Histogram plot." $ do
      res <- run lightning $ histogramPlot def { hpValues = [1,2,2,3,3,3,4,4,5] }
      res `shouldSatisfy` isRight
    it "create Line plot." $ do
      res <- run lightning $ linePlot def { lpSeries = [[1,2,3]] }
      res `shouldSatisfy` isRight
    it "create Map plot." $ do
      res <- run lightning $ mapPlot def { mppRegions = ["CAN","USA","MEX"], mppWeights = [13.0,10.0,4.0] }
      res `shouldSatisfy` isRight
    it "create Matrix plot." $ do
      res <- run lightning $ matrixPlot def { mpMatrix = [[1,1,0],[2,0,0],[3,0,0]] }
      res `shouldSatisfy` isRight
    it "create Scatter plot." $ do
      res <- run lightning $ scatterPlot def { spX = [1,2,3], spY = [1,1,1] }
      res `shouldSatisfy` isRight
    it "create 3D Scatter plot." $ do
      res <- run lightning $ scatter3Plot def { sptX = [1,2,3], sptY = [1,1,1], sptZ = [0,0,0] }
      res `shouldSatisfy` isRight
    it "create Streaming line plot." $ do
      res <- run lightning $ streamingLinePlot def { lspSeries = [[1,2,3]] }
      res `shouldSatisfy` isRight
    it "create Streaming scatter plot." $ do
      res <- run lightning $ streamingScatterPlot def { sspX = [1,2,3], sspY = [1,2,3] }
      res `shouldSatisfy` isRight