(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 "/")) result1) (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)))