packages feed

grids-0.4.0.0: test/Spec/Shapes.hs

{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE TypeApplications #-}
module Spec.Shapes (spec) where

import Test.Hspec hiding (focus)
import qualified Data.Vector as V
import Data.Grid as G
import Control.Applicative
import Data.Maybe
import Data.Functor.Compose
import Control.Comonad
import Control.Monad
import Data.Coerce

smallGrid :: Grid '[2, 2] Int
smallGrid = generate id

medGrid :: Grid '[3, 3] Int
medGrid = generate id

spec :: Spec
spec = 
  describe "partitionFocus" $ do
    it "should split properly" $ do
      let g :: Grid [2, 2] Int = autoConvolute @[3, 3] omitBounds (sum . Compose . fmap join . snd . partitionFocus . getCompose) smallGrid
      let sums = fromNestedLists' [[6, 5], [4, 3]]
      g `shouldBe` sums