2023-10-02 21:56:11 +01:00
|
|
|
module ValidNames where
|
|
|
|
|
|
|
|
import Simplex.Chat
|
|
|
|
import Test.Hspec
|
|
|
|
|
|
|
|
validNameTests :: Spec
|
|
|
|
validNameTests = describe "valid chat names" $ do
|
|
|
|
it "should keep valid and fix invalid names" testMkValidName
|
|
|
|
|
|
|
|
testMkValidName :: IO ()
|
|
|
|
testMkValidName = do
|
|
|
|
mkValidName "alice" `shouldBe` "alice"
|
|
|
|
mkValidName "алиса" `shouldBe` "алиса"
|
|
|
|
mkValidName "John Doe" `shouldBe` "John Doe"
|
|
|
|
mkValidName "J.Doe" `shouldBe` "J.Doe"
|
|
|
|
mkValidName "J. Doe" `shouldBe` "J. Doe"
|
2023-10-25 11:55:06 +01:00
|
|
|
mkValidName "J..Doe" `shouldBe` "J..Doe"
|
|
|
|
mkValidName "J ..Doe" `shouldBe` "J ..Doe"
|
|
|
|
mkValidName "J ... Doe" `shouldBe` "J ... Doe"
|
|
|
|
mkValidName "J .... Doe" `shouldBe` "J ... Doe"
|
|
|
|
mkValidName "J . . Doe" `shouldBe` "J . Doe"
|
2023-10-02 21:56:11 +01:00
|
|
|
mkValidName "@alice" `shouldBe` "alice"
|
|
|
|
mkValidName "#alice" `shouldBe` "alice"
|
|
|
|
mkValidName " alice" `shouldBe` "alice"
|
|
|
|
mkValidName "alice " `shouldBe` "alice"
|
|
|
|
mkValidName "John Doe" `shouldBe` "John Doe"
|
|
|
|
mkValidName "'John Doe'" `shouldBe` "John Doe"
|
2023-10-25 11:55:06 +01:00
|
|
|
mkValidName "\"John Doe\"" `shouldBe` "John Doe\""
|
|
|
|
mkValidName "`John Doe`" `shouldBe` "`John Doe`"
|
|
|
|
mkValidName "John \"Doe\"" `shouldBe` "John \"Doe\""
|
|
|
|
mkValidName "John `Doe`" `shouldBe` "John `Doe`"
|
|
|
|
mkValidName "alice/bob" `shouldBe` "alice/bob"
|
|
|
|
mkValidName "alice / bob" `shouldBe` "alice / bob"
|
|
|
|
mkValidName "alice /// bob" `shouldBe` "alice /// bob"
|
|
|
|
mkValidName "alice //// bob" `shouldBe` "alice /// bob"
|
|
|
|
mkValidName "alice >>= bob" `shouldBe` "alice >>= bob"
|
|
|
|
mkValidName "alice@example.com" `shouldBe` "alice@example.com"
|
|
|
|
mkValidName "alice <> bob" `shouldBe` "alice <> bob"
|
|
|
|
mkValidName "alice -> bob" `shouldBe` "alice -> bob"
|