Add tests for file-name-directory, etc
[sxemacs] / tests / automated / lisp-tests.el
index 92a02f6..5570fc8 100644 (file)
 ;; Check all-completions ignore element start with space.
 (Assert (not (all-completions "" '((" hidden" . "object")))))
 (Assert (all-completions " " '((" hidden" . "object"))))
+
+
+;; Check filename/path manipulations
+(let ((cases '(("/usr/lib"  "/usr/"     "lib" "/usr" "lib"  "/usr/lib")
+              ("/usr/lib/" "/usr/lib/" ""    "/usr" "lib"  "/usr/lib")
+              ("/usr/"     "/usr/"     ""    "/"    "usr"  "/usr")
+              ("/usr"      "/"         "usr" "/"    "usr"  "/usr")
+              ("usr"       nil         "usr" "."    "usr"  "./usr")
+              ("/"         "/"         ""    "/"    "/"    "/")
+              ("."         nil         "."   "."    "."    "./.")
+              ("./"        "./"        ""    "."    "."    "./.")
+              (".."        nil         ".."  "."    ".."   "./.."))))
+  (mapcar #'(lambda (case)
+             (let* ((path          (car case))
+                    (directory     (file-name-directory path))
+                    (nondirectory (file-name-nondirectory path))
+                    (dirname       (file-dirname path))
+                    (basename      (file-basename path)))
+               (Assert (equal directory (nth 1 case)))
+               (Assert (equal nondirectory (nth 2 case)))
+               (Assert (equal dirname (nth 3 case)))
+               (Assert (equal basename (nth 4 case)))
+               (Assert (equal path (concat directory nondirectory)))
+               (Assert (equal (file-name-join directory nondirectory)
+                              (file-name-join dirname basename)))
+               (Assert (equal (file-name-join directory nondirectory) (nth 5 case)))
+               (Assert (equal (file-name-join dirname basename) (nth 5 case)))))
+         cases))