packages feed

egison-3.9.4: test/lib/core/string.egi

(assert "string's value pattern"
  (match "abc" string
    {[,"abc" #t]
     [_ #f]}))

(assert "string's nil - case 1"
  (match "" string
    {[<nil> #t]
     [_ #f]}))

(assert "string's nil - case 2"
  (match "abc" string
    {[<nil> #f]
     [_ #t]}))

(assert-equal "string's cons"
  (match-all "abc" string
    [<cons $x $xs> [x xs]])
  {[c#a "bc"]})

(assert-equal "string's join"
  (match-all "abc" string
    [<join $xs $ys> [xs ys]])
  {["" "abc"] ["a" "bc"]
   ["ab" "c"] ["abc" ""]})

;;;
;;; String as collection
;;;
(assert-equal "S.empty? - case 1"
  (S.empty? "")
  #t)

(assert-equal "S.empty? - case 2"
  (S.empty? "Egison")
  #f)

(assert-equal "S.car"
  (S.car "Egison")
  c#E)

(assert-equal "S.cdr"
  (S.cdr "Egison")
  "gison")

(assert-equal "S.rac"
  (S.rac "Egison")
  c#n)

(assert-equal "S.map"
  (S.map id "Egison")
  "Egison")

(assert-equal "S.length"
  (S.length "Egison")
  6)

(assert-equal "S.split"
  (S.split "," "Lisp,Haskell,Egison")
  {"Lisp" "Haskell" "Egison"})

(assert-equal "S.append"
  (S.append "Egi" "son")
  "Egison")

(assert-equal "S.concat"
  (S.concat {"Egi" "son"})
  "Egison")

(assert-equal "S.intercalate"
  (S.intercalate "," {"Lisp" "Haskell" "Egison"})
  "Lisp,Haskell,Egison")

;;
;; Characters
;;
(assert-equal "C.between"
  (C.between c#a c#c)
  {c#a c#b c#c})

(assert-equal "C.between?"
  (C.between? c#a c#c c#b)
  #t)

(assert-equal "alphabet?"
  (alphabet? c#a)
  #t)

(assert-equal "alphabets?"
  (alphabets? "Egison")
  #t)

(assert-equal "upper-case"
  (upper-case c#e)
  c#E)

(assert-equal "lower-case"
  (lower-case c#E)
  c#e)