module Handle where
import Data.Text (Text)
import Bluesky.Handle
testAccept :: Text -> IO ()
testAccept t = case makeHandle t of
Left err -> error $ "Did not accept " <> show t <> ": " <> show err
Right _ -> pure ()
testReject :: HandleError -> Text -> IO ()
testReject expectedErr t = case makeHandle t of
Left actualErr
| expectedErr == actualErr -> pure ()
| otherwise -> error $ "Wrong error for " <> show t <> ": " <> show actualErr
Right _ -> error $ "Incorrectly accepted " <> show t
main :: IO ()
main = do
mapM_ testAccept
[ "jay.bsky.social"
, "8.cn"
, "name.t--t"
, "XX.LCS.MIT.EDU"
, "a.co"
, "xn--notarealidn.com"
, "xn--fiqa61au8b7zsevnm8ak20mc4a87e.xn--fiqs8s"
, "xn--ls8h.test"
, "example.t"
]
testReject BadCharacters "jo@hn.test"
testReject BadCharacters "💩.test"
testReject EmptySegment "john..test"
testReject SegmentEndsWithHyphen "xn--bcher-.tld"
testReject LastSegmentStartsWithNumber "john.0"
testReject LastSegmentStartsWithNumber "cn.8"
testReject BadCharacters "www.masełkowski.pl.com"
testReject OnlyOneSegment "org"
testReject EmptySegment "name.org."