Files
simplex-chat/tests/ValidNames.hs
T
Evgeny 68abd805d4 rfc: namespace (#7001)
* rfc: namespace

* update rfc

* markdown for names

* record type, app "upgrade" alerts

* update api types

* rfc: change namespace syntax - now it is the usual namespace

* update bot types

* move types to simplexmq

* core: refactore markdown

* update simplexmq

* better names

* new names

* update nix content hashes

* fix

* change valid name function

* update simplexq, update valid name conditions

* fixes

Co-authored-by: simplex-chat-agent[bot] <287173099+simplex-chat-agent[bot]@users.noreply.github.com>

* update simplexmq

* fix localization

* simpler

* refactor

* refactor

* fix

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
Co-authored-by: simplex-chat-agent[bot] <287173099+simplex-chat-agent[bot]@users.noreply.github.com>
2026-05-28 08:44:43 +01:00

60 lines
2.7 KiB
Haskell

module ValidNames where
import Simplex.Chat.Library.Commands
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 " alice" `shouldBe` "alice"
mkValidName "?alice" `shouldBe` "alice"
mkValidName "алиса" `shouldBe` "алиса"
mkValidName "John Doe" `shouldBe` "John Doe"
mkValidName "J.Doe" `shouldBe` "JDoe"
mkValidName "J. Doe" `shouldBe` "J Doe"
mkValidName "J..Doe" `shouldBe` "JDoe"
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 "@alice" `shouldBe` "alice"
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"
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` "alicebob"
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` "aliceexamplecom"
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-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: bob" `shouldBe` "alice: bob"
mkValidName "alice 👍" `shouldBe` "alice 👍"
mkValidName "👍" `shouldBe` "👍"
mkValidName "alice >" `shouldBe` "alice >"
mkValidName "> alice" `shouldBe` "alice"
mkValidName "123" `shouldBe` "123"
mkValidName "123 alice" `shouldBe` "123 alice"
mkValidName "01234567890123456789012345678901234567890123456789extra" `shouldBe` "01234567890123456789012345678901234567890123456789"
mkValidName "0123456789012345678901234567890123456789012345678 extra" `shouldBe` "0123456789012345678901234567890123456789012345678"