assert2Fa :: FilePath -> FilePath -> (Fa Symbol State -> Fa Symbol State -> Bool) -> Expectation
assert2Fa filePath1 filePath2 condition =
  do
    firstFa <- loadFa ("tests/Examples/" ++ filePath1)
    secondFa <- loadFa ("tests/Examples/" ++ filePath2)
    case firstFa of
      Left parseError -> expectationFailure parseError
      Right fa1 -> case secondFa of
                     Left parseError -> expectationFailure parseError
                     Right fa2 -> fa2 `shouldSatisfy` condition fa1
assert2Fa :: FilePath -> FilePath -> (Fa Symbol State -> Fa Symbol State -> Bool) -> Expectation
assert2Fa filePath1 filePath2 condition =
  do
    firstFa <- loadFa ("tests/Examples/" ++ filePath1)
    secondFa <- loadFa ("tests/Examples/" ++ filePath2)
    case firstFa of
      Left parseError -> expectationFailure parseError
      Right fa1 -> case secondFa of
                     Left parseError -> expectationFailure parseError
                     Right fa2 -> fa2 `shouldSatisfy` condition fa1
assert2Fa filePath1 filePath2 condition =
  do
    firstFa <- loadFa ("tests/Examples/" ++ filePath1)
    secondFa <- loadFa ("tests/Examples/" ++ filePath2)
    case firstFa of
      Left parseError -> expectationFailure parseError
      Right fa1 -> case secondFa of
                     Left parseError -> expectationFailure parseError
                     Right fa2 -> fa2 `shouldSatisfy` condition fa1