(in-package :qt.tests) (5am:in-suite :qt.suite) (5am:test (variant-string :depends-on qstring) "Test qt:variant <-> string conversion." ;; (5am:for-all ((string (5am:gen-string))) (5am:for-all ((string (5am:gen-one-element "foo" "Foo Bar"))) (5am:is (eq t (cxx:= string (qt:make-variant string)))) (5am:is (string= string (qt:value (qt:make-variant string)))))) (5am:test variant-int "Test qt:variant <-> string conversion." (5am:for-all ((integer (5am:gen-integer))) (5am:is (eq t (cxx:= integer (qt:make-variant integer)))) (5am:is (= integer (qt:value (qt:make-variant integer)))))) (5am:test lisp-variant "Test qt:variant <-> lisp object conversion." (5am:for-all ((object (5am:gen-one-element #(1 2 3) (list "foo" "bar")))) (5am:is (eq object (qt:value (qt:make-lisp-variant object)))))) (5am:test variant-color "The C++ overload resolution for QColor:operator QVariant()." (let* ((color (make-instance 'qt:color)) (variant1 (qt:make-variant color)) (variant2 (qt:make-variant color))) (5am:is (eq t (cxx:= variant1 variant2))))) (5am:test nil-variant "Make a nil variant." (5am:is (eq nil (qt:variant-boundp (qt:make-variant))))) (5am:test setf-variant-value "Set a qt:variant." (let ((variant (qt:make-variant))) (5am:is (= 1 (setf (qt:value variant) 1))) (5am:is (= 1 (qt:value variant))))) (5am:test variant-list (let ((list (qt:make-variant (map 'vector #'qt:make-variant '(1 "asdf" #\a))))) (5am:is (string= "QVariantList" (cxx:type-name list))))) (5am:test exact-int-type-match "Test overload resolution exact match long vs. int." (5am:is (enum= qt:variant.+uint+ (cxx:type (qt:make-variant 1)))) (5am:is (enum= qt:variant.+int+ (cxx:type (qt:make-variant -1))))) ;; on 32 bit sizeof(long) == sizeof(int) thus not test for that. (5am:test variant-color "Test QColor variant." (let ((color (make-instance 'qt:color :arg0 qt:+green+))) (5am:is (string= (cxx:name color) (cxx:name (qt:value (qt:make-variant color)))))))