diff options
| author | Joost Kremers | 2024-05-07 11:52:27 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2024-05-18 11:52:33 +0300 |
| commit | 4f27d763bbe3312b6039fa59f2874bd8e002d201 (patch) | |
| tree | c31ffaac0bf29a103e229ee903b003267e52a90c /test | |
| parent | 19c983ddedf083f82008472c13dfd08ec94b615f (diff) | |
| download | emacs-4f27d763bbe3312b6039fa59f2874bd8e002d201.tar.gz emacs-4f27d763bbe3312b6039fa59f2874bd8e002d201.zip | |
Make 'vtable-insert-object' more versatile
* lisp/emacs-lisp/vtable.el (vtable-insert-object): Rename
argument AFTER-OBJECT to LOCATION; allow use of index to
refer to the insertion position; add argument BEFORE.
(Bug#70664).
* etc/NEWS:
* doc/misc/vtable.texi (Interface Functions): Document the
change.
* test/lisp/emacs-lisp/vtable-tests.el
(test-vtable-insert-object): New test.
Diffstat (limited to 'test')
| -rw-r--r-- | test/lisp/emacs-lisp/vtable-tests.el | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/lisp/emacs-lisp/vtable-tests.el b/test/lisp/emacs-lisp/vtable-tests.el index 08fdf1594a4..1d4b0650210 100644 --- a/test/lisp/emacs-lisp/vtable-tests.el +++ b/test/lisp/emacs-lisp/vtable-tests.el | |||
| @@ -39,4 +39,34 @@ | |||
| 39 | :insert nil))) | 39 | :insert nil))) |
| 40 | '(left right left)))) | 40 | '(left right left)))) |
| 41 | 41 | ||
| 42 | (ert-deftest test-vtable-insert-object () | ||
| 43 | (should | ||
| 44 | (equal (let ((buffer (get-buffer-create " *vtable-test*"))) | ||
| 45 | (pop-to-buffer buffer) | ||
| 46 | (erase-buffer) | ||
| 47 | (let* ((object1 '("Foo" 3)) | ||
| 48 | (object2 '("Gazonk" 8)) | ||
| 49 | (table (make-vtable | ||
| 50 | :columns '("Name" (:name "Rank" :width 5)) | ||
| 51 | :objects (list object1 object2)))) | ||
| 52 | (mapc (lambda (args) | ||
| 53 | (pcase-let ((`(,object ,location ,before) args)) | ||
| 54 | (vtable-insert-object table object location before))) | ||
| 55 | `( ; Some correct inputs. | ||
| 56 | ;; object location before | ||
| 57 | (("Fizz" 4) ,object1 nil) | ||
| 58 | (("Bop" 7) ,object2 t) | ||
| 59 | (("Zat" 5) 2 nil) | ||
| 60 | (("Dib" 6) 3 t) | ||
| 61 | (("Wup" 9) nil nil) | ||
| 62 | (("Quam" 2) nil t) | ||
| 63 | ;; And some faulty inputs. | ||
| 64 | (("Yat" 1) -1 nil) ; non-existing index, `before' is ignored. | ||
| 65 | (("Vop" 10) 100 t) ; non-existing index, `before' is ignored. | ||
| 66 | (("Jib" 11) ("Bleh" 0) nil) ; non-existing object. | ||
| 67 | (("Nix" 0) ("Ugh" 0) t) ; non-existing object. | ||
| 68 | )) | ||
| 69 | (mapcar #'cadr (vtable-objects table)))) | ||
| 70 | (number-sequence 0 11)))) | ||
| 71 | |||
| 42 | ;;; vtable-tests.el ends here | 72 | ;;; vtable-tests.el ends here |