module Test.Utils whereimport Preludeimport Control.Monad.Error.Class (class MonadThrow)import Data.Array as Aimport Data.Maybe (Maybe(..))import Data.Tuple (Tuple(..))import Effect.Exception (Error)import Test.Spec.Assertions (fail)-- | This function can be used to compare arrays, it reports the diff in more-- | detail which can be useful when debuggnign testsshouldEqualArray :: forall m t . MonadThrow Error m => Show t => Eq t => Array t -> Array t -> m UnitshouldEqualArray v1 v2 = when (v1 /= v2) $ fail $ show v1 <> " ≠ " <> show v2 <> diff where diffs = A.filter (\(Tuple a b) -> a /= b) $ A.zip v1 v2 diff = case A.head diffs of Nothing -> "" Just (Tuple a1 a2) -> " (first differing element: " <> (show a1 <> " ≠ " <> show a2) <> ")"