egison-4.0.0: test/lib/core/string.egi
assert "string's value pattern"
(match "abc" as string with
| #"abc" -> True
| _ -> False)
assert "string's nil - case 1"
(match "" as string with
| [] -> True
| _ -> False)
assert "string's nil - case 2"
(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 - case 1" (S.isEmpty "") True
assertEqual "S.isEmpty - case 2" (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'