packages feed

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'