summaryrefslogtreecommitdiff
path: root/test/lisp/emacs-lisp/vtable-tests.el
diff options
context:
space:
mode:
authorJoost Kremers <joostkremers@fastmail.com>2024-05-07 11:52:27 +0200
committerEli Zaretskii <eliz@gnu.org>2024-05-18 11:52:33 +0300
commit4f27d763bbe3312b6039fa59f2874bd8e002d201 (patch)
treec31ffaac0bf29a103e229ee903b003267e52a90c /test/lisp/emacs-lisp/vtable-tests.el
parent19c983ddedf083f82008472c13dfd08ec94b615f (diff)
downloademacs-4f27d763bbe3312b6039fa59f2874bd8e002d201.tar.gz
emacs-4f27d763bbe3312b6039fa59f2874bd8e002d201.tar.bz2
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/lisp/emacs-lisp/vtable-tests.el')
-rw-r--r--test/lisp/emacs-lisp/vtable-tests.el30
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 @@
:insert nil)))
'(left right left))))
+(ert-deftest test-vtable-insert-object ()
+ (should
+ (equal (let ((buffer (get-buffer-create " *vtable-test*")))
+ (pop-to-buffer buffer)
+ (erase-buffer)
+ (let* ((object1 '("Foo" 3))
+ (object2 '("Gazonk" 8))
+ (table (make-vtable
+ :columns '("Name" (:name "Rank" :width 5))
+ :objects (list object1 object2))))
+ (mapc (lambda (args)
+ (pcase-let ((`(,object ,location ,before) args))
+ (vtable-insert-object table object location before)))
+ `( ; Some correct inputs.
+ ;; object location before
+ (("Fizz" 4) ,object1 nil)
+ (("Bop" 7) ,object2 t)
+ (("Zat" 5) 2 nil)
+ (("Dib" 6) 3 t)
+ (("Wup" 9) nil nil)
+ (("Quam" 2) nil t)
+ ;; And some faulty inputs.
+ (("Yat" 1) -1 nil) ; non-existing index, `before' is ignored.
+ (("Vop" 10) 100 t) ; non-existing index, `before' is ignored.
+ (("Jib" 11) ("Bleh" 0) nil) ; non-existing object.
+ (("Nix" 0) ("Ugh" 0) t) ; non-existing object.
+ ))
+ (mapcar #'cadr (vtable-objects table))))
+ (number-sequence 0 11))))
+
;;; vtable-tests.el ends here