packages feed

tinytools-0.1.0.0: test/Potato/Flow/Deprecated/StateSpec.hs

{-# LANGUAGE RecordWildCards #-}
{-# OPTIONS_GHC -fno-warn-type-defaults #-}
module Potato.Flow.Deprecated.StateSpec(
  spec
) where

import           Relude

import           Test.Hspec

import qualified Data.IntMap            as IM
import qualified Data.Sequence          as Seq

import           Potato.Flow
import           Potato.Flow.Deprecated.State
import           Potato.Flow.Deprecated.TestStates

someValidState1 :: PFState
someValidState1 = PFState {
      _pFState_layers = Seq.fromList [0..5]
      , _pFState_directory = IM.fromList [(0, folderStart), (1, folderEnd), (2, someSEltLabel), (3, someSEltLabel), (4, someSEltLabel), (5, someSEltLabel)]
      , _pFState_canvas = someSCanvas
  }

someInvalidState1 :: PFState
someInvalidState1 = PFState {
      _pFState_layers = Seq.fromList [0..5]
      -- missing REltId 5
      , _pFState_directory = IM.fromList [(0, folderStart), (1, folderEnd), (2, someSEltLabel), (3, someSEltLabel), (4, someSEltLabel)]
      , _pFState_canvas = someSCanvas
  }

someInvalidState2 :: PFState
someInvalidState2 = PFState {
      -- folder mismatch
      _pFState_layers = Seq.fromList [0..5]
      , _pFState_directory = IM.fromList [(0, folderStart), (1, folderStart), (2, someSEltLabel), (3, someSEltLabel), (4, someSEltLabel)]
      , _pFState_canvas = someSCanvas
  }

spec :: Spec
spec = do
  describe "Layers" $ do
    it "SPotatoFlow <-> PFState conversion passes basic tests" $ do
      let
        orig = SPotatoFlow (SCanvas (LBox 10 123)) [(0,SEltLabel "some selt" SEltNone)]
      pFState_to_sPotatoFlow (sPotatoFlow_to_pFState orig) `shouldBe` orig
    it "pFState_isValid" $ do
      pFState_isValid someValidState1 `shouldBe` True
      pFState_isValid someInvalidState1 `shouldBe` False
      pFState_isValid someInvalidState2 `shouldBe` False