diff options
author | Daiki Ueno <ueno@gnu.org> | 2015-09-02 15:49:19 +0900 |
---|---|---|
committer | Daiki Ueno <ueno@gnu.org> | 2015-09-02 15:49:37 +0900 |
commit | 179aa636ab9521e097fd0bb9218b07e679026163 (patch) | |
tree | 1e824c88d9d3bd1e79a63b5338740f1da101f6e8 | |
parent | cd77eaeb5e9891a46ff349a6fa76f02220f11d28 (diff) | |
download | emacs-179aa636ab9521e097fd0bb9218b07e679026163.tar.gz |
dbus-tests: Add new testcase for parameter types
* test/automated/dbus-tests.el
(dbus--test-create-message-with-args): New helper function.
(dbus-test04-create-message-parameters): New test.
-rw-r--r-- | test/automated/dbus-tests.el | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/test/automated/dbus-tests.el b/test/automated/dbus-tests.el index 9465c859505..19f32f53fda 100644 --- a/test/automated/dbus-tests.el +++ b/test/automated/dbus-tests.el @@ -172,6 +172,62 @@ This includes initialization and closing the bus." (dbus-unregister-service :session dbus-service-emacs) (should-not (dbus-ping :session dbus-service-emacs 100))) +(defun dbus--test-create-message-with-args (&rest args) + (dbus-ignore-errors + (apply #'dbus-message-internal-to-lisp + dbus-message-type-method-call + :session + ;; Passing nil as SERVICE means not to require bus connection. + nil + dbus-path-dbus dbus-interface-dbus "Hello" #'ignore :timeout 100 + args))) + +(ert-deftest dbus-test04-create-message-parameters () + "Test D-Bus message creation with various parameter specifications." + (let (message) + ;; Test implicit type specifications for basic types. + (setq message (dbus--test-create-message-with-args + 1)) + (should (equal (plist-get message :args) '((:uint32 1)))) + (should (equal (plist-get message :signature) "u")) + ;; Test explicit type specifications for basic types. + (setq message (dbus--test-create-message-with-args + :int32 1)) + (should (equal (plist-get message :args) '((:int32 1)))) + (should (equal (plist-get message :signature) "i")) + ;; Test explicit type specifications with `:type' keyword for basic types. + (setq message (dbus--test-create-message-with-args + :type :int32 1)) + (should (equal (plist-get message :args) '((:int32 1)))) + (should (equal (plist-get message :signature) "i")) + ;; Test explicit type specifications for empty array. + (setq message (dbus--test-create-message-with-args + '(:array))) + (should (equal (plist-get message :args) '(((:array nil) nil)))) + (should (equal (plist-get message :signature) "as")) + ;; Test implicit type specifications for non-empty array. + (setq message (dbus--test-create-message-with-args + '(1 2 3))) + (should (equal (plist-get message :args) '(((:array :uint32) (1 2 3))))) + (should (equal (plist-get message :signature) "au")) + ;; Test explicit type specifications for non-empty array, while + ;; element types are implicitly specified. + (setq message (dbus--test-create-message-with-args + '(:array 1 2 3))) + (should (equal (plist-get message :args) '(((:array :uint32) (1 2 3))))) + (should (equal (plist-get message :signature) "au")) + ;; Test explicit type specifications for compound types. + (setq message (dbus--test-create-message-with-args + '(:array :int32 1 :int32 2 :int32 3))) + (should (equal (plist-get message :args) '(((:array :int32) (1 2 3))))) + (should (equal (plist-get message :signature) "ai")) + ;; Test explicit type specifications with `:type' keyword for + ;; compound types. + (setq message (dbus--test-create-message-with-args + :type '(:array :int32) '(1 2 3))) + (should (equal (plist-get message :args) '(((:array :int32) (1 2 3))))) + (should (equal (plist-get message :signature) "ai")))) + (defun dbus-test-all (&optional interactive) "Run all tests for \\[dbus]." (interactive "p") |