egison-4.0.1: test/lib/core/string.egi
assert "string's value pattern"
(match "abc" as string with
| #"abc" -> True
| _ -> False)
assert "string's nil"
(match "" as string with
| [] -> True
| _ -> False)
assert "string's nil"
(match "abc" as string with
| [] -> False
| _ -> True)
assertEqual "string's cons"
(matchAll "abc" as string with
| $x :: $xs -> (x, xs))
[('a', "bc")]
assertEqual "string's join"
(matchAll "abc" as string with
| $xs ++ $ys -> (xs, ys))
[("", "abc"), ("a", "bc"), ("ab", "c"), ("abc", "")]
--
-- String as collection
--
assertEqual "S.isEmpty" (S.isEmpty "") True
assertEqual "S.isEmpty" (S.isEmpty "Egison") False
assertEqual "S.head" (S.head "Egison") 'E'
assertEqual "S.tail" (S.tail "Egison") "gison"
assertEqual "S.last" (S.last "Egison") 'n'
assertEqual "S.map" (S.map id "Egison") "Egison"
assertEqual "S.length" (S.length "Egison") 6
assertEqual "S.split"
(S.split "," "Lisp,Haskell,Egison")
["Lisp", "Haskell", "Egison"]
assertEqual "S.append" (S.append "Egi" "son") "Egison"
assertEqual "S.concat" (S.concat ["Egi", "son"]) "Egison"
assertEqual "S.intercalate"
(S.intercalate "," ["Lisp", "Haskell", "Egison"])
"Lisp,Haskell,Egison"
--
-- Characters
--
assertEqual "C.between" (C.between 'a' 'c') ['a', 'b', 'c']
assertEqual "C.isBetween" (C.isBetween 'a' 'c' 'b') True
assertEqual "isAlphabet" (isAlphabet 'a') True
assertEqual "isAlphabetString" (isAlphabetString "Egison") True
assertEqual "upper-case" (upperCase 'e') 'E'
assertEqual "lower-case" (lowerCase 'E') 'e'