diff --git a/test/lisp/net/dbus-tests.el b/test/lisp/net/dbus-tests.el index a8e052efbef..c0e85449a37 100644 --- a/test/lisp/net/dbus-tests.el +++ b/test/lisp/net/dbus-tests.el @@ -521,6 +521,56 @@ dbus-test05-register-property-several-paths ;; Cleanup. (dbus-unregister-service :session dbus--test-service)))  +(ert-deftest dbus-test05-register-property-types () + "Check property type preservation for an own service." + (skip-unless dbus--test-enabled-session-bus) + (dbus-ignore-errors (dbus-unregister-service :session dbus--test-service)) + + (unwind-protect + (let ((object-array "ByteDictionary") + (expected '((8 + ("byte eight")) + (16 + ("byte sixteen")) + (48 + ((8 9 10)))))) + (should + (equal + (dbus-register-property + :session dbus--test-service dbus--test-path + dbus--test-interface object-array :read + '(:array + :dict-entry (:byte 8 (:variant :string "byte-eight")) + :dict-entry (:byte 16 (:variant :object-path "/byte sixteen")) + :dict-entry (:byte 48 (:variant (:array :byte 8 :byte 9 :byte 10))))) + `((:property :session ,dbus--test-interface ,object-array) + (,dbus--test-service ,dbus--test-path)))) + (should + (equal + (dbus-get-property + :session dbus--test-service dbus--test-path + dbus--test-interface object-array) + expected)) + + + ;; A test for `dbus-get-property' shall be added. + + (let ((result + (dbus-get-all-properties + :session dbus--test-service dbus--test-path + dbus--test-interface))) + (should (equal (cdr (assoc object-array result)) expected))) + + (let ((result + (dbus-get-all-managed-objects :session dbus--test-service "/")) + result) + (should (setq result1 (cadr (assoc dbus--test-path result)))) + (should (setq result1 (cadr (assoc dbus--test-interface result1)))) + (should (equal (cdr (assoc object-array result1)) expected)))) + + ;; Cleanup. + (dbus-unregister-service :session dbus--test-service))) + (defun dbus-test-all (&optional interactive) "Run all tests for \\[dbus]." (interactive "p")