;; Copyright (C) 2015 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see .
;;; Commentary:
;;; Code:
(require 'ert)
(require 'dbus-codegen)
(ert-deftest dbus-codegen--read-signature ()
(should (equal '(1 . :int32) (dbus-codegen--read-signature "i" 0)))
(should-error (dbus-codegen--read-signature "a" 0))
(should (equal '(2 :array :int32) (dbus-codegen--read-signature "ai" 0)))
(should (equal '(4 :array (:dict-entry :string :int32))
(dbus-codegen--read-signature "a{si}" 0)))
(should (equal '(4 :array (:dict-entry :string (:variant)))
(dbus-codegen--read-signature "a{sv}" 0)))
(should-error (dbus-codegen--read-signature "a{sii}" 0))
(should (equal '(5 :array (:struct (:string :int32 :int32)))
(dbus-codegen--read-signature "a(sii)" 0))))
(ert-deftest dbus-codegen--object-path-p ()
(should (dbus-codegen--object-path-p "/"))
(should (not (dbus-codegen--object-path-p "//")))
(should (not (dbus-codegen--object-path-p "/a/")))
(should (dbus-codegen--object-path-p "/a/b"))
(should (not (dbus-codegen--object-path-p "/a!")))
(should (dbus-codegen--object-path-p "/a")))
(ert-deftest dbus-codegen--annotate-arg ()
(should (equal '(:int32 1)
(dbus-codegen--annotate-arg ':int32 1)))
(should-error (dbus-codegen--annotate-arg '(:array :int32) 1))
(should (equal '((:array :int32 1 :int32 2 :int32 3))
(dbus-codegen--annotate-arg '(:array :int32) '(1 2 3))))
;; Type mismatch of the first element of a struct.
(should-error (dbus-codegen--annotate-arg '(:struct :string :int32 :int32)
'(1 2 3)))
(should (equal '((:array (:dict-entry :string "a" :int32 1)
(:dict-entry :string "b" :int32 2)
(:dict-entry :string "c" :int32 3)))
(dbus-codegen--annotate-arg
'(:array (:dict-entry :string :int32))
'(("a" . 1) ("b" . 2) ("c" . 3))))))
(defconst dbus-codegen-tests-introspection-data "\
")
(ert-deftest dbus-codegen-define-proxy ()
(dbus-codegen-define-proxy test-proxy
dbus-codegen-tests-introspection-data
"org.gtk.GDBus.PeerTestInterface")
(should (fboundp 'test-proxy-create))
(should (fboundp 'test-proxy-destroy))
(should (fboundp 'test-proxy-hello-peer))
(should (fboundp 'test-proxy-hello-peer-asynchronously))
(should (fboundp 'test-proxy-emit-signal))
(should (fboundp 'test-proxy-emit-signal-asynchronously))
(should (fboundp 'test-proxy-emit-signal-with-name-set))
(should (fboundp 'test-proxy-emit-signal-with-name-set-asynchronously))
(should (fboundp 'test-proxy-open-file))
(should (fboundp 'test-proxy-open-file-asynchronously))
(should (fboundp 'test-proxy-register-peer-signal-signal))
(should (fboundp 'test-proxy-send-peer-signal-signal))
(should (fboundp 'test-proxy-handle-peer-signal-signal))
(should (fboundp 'test-proxy-peer-property))
(should (fboundp 'test-proxy-retrieve-peer-property-property))
(should (fboundp 'test-proxy-peer-property-annotated))
(should (fboundp 'test-proxy-retrieve-peer-property-annotated-property)))
(ert-deftest dbus-codegen-define-skeleton ()
(dbus-codegen-define-skeleton test-skeleton
dbus-codegen-tests-introspection-data
"org.gtk.GDBus.PeerTestInterface")
(should (fboundp 'test-skeleton-create))
(should (fboundp 'test-skeleton-destroy))
(should (fboundp 'test-skeleton-register-hello-peer-method))
(should (fboundp 'test-skeleton-handle-hello-peer-method))
(should (fboundp 'test-skeleton-register-emit-signal-method))
(should (fboundp 'test-skeleton-handle-emit-signal-method))
(should (fboundp 'test-skeleton-register-emit-signal-with-name-set-method))
(should (fboundp 'test-skeleton-handle-emit-signal-with-name-set-method))
(should (fboundp 'test-skeleton-register-open-file-method))
(should (fboundp 'test-skeleton-handle-open-file-method))
(should (fboundp 'test-skeleton-register-peer-signal-signal))
(should (fboundp 'test-skeleton-send-peer-signal-signal))
(should (fboundp 'test-skeleton-handle-peer-signal-signal))
(should (fboundp 'test-skeleton-register-peer-property-property))
(should (fboundp 'test-proxy-peer-property-annotated))
(should (fboundp 'test-proxy-retrieve-peer-property-annotated-property)))
(provide 'dbus-codegen-tests)
;;; dbus-codegen-tests.el ends here