;; 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))