/ src /
/src/variant.lisp
1 (in-package :qt.tests)
2
3 (5am:in-suite :qt.suite)
4
5 (5am:test (variant-string :depends-on qstring)
6 "Test qt:variant <-> string conversion."
7 ;; (5am:for-all ((string (5am:gen-string)))
8 (5am:for-all ((string (5am:gen-one-element "foo"
9 "Foo Bar")))
10 (5am:is (eq t (cxx:= string (qt:make-variant string))))
11 (5am:is (string= string (qt:value (qt:make-variant string))))))
12
13 (5am:test variant-int
14 "Test qt:variant <-> string conversion."
15 (5am:for-all ((integer (5am:gen-integer)))
16 (5am:is (eq t (cxx:= integer (qt:make-variant integer))))
17 (5am:is (= integer (qt:value (qt:make-variant integer))))))
18
19 (5am:test lisp-variant
20 "Test qt:variant <-> lisp object conversion."
21 (5am:for-all ((object (5am:gen-one-element #(1 2 3)
22 (list "foo" "bar"))))
23 (5am:is (eq object (qt:value (qt:make-lisp-variant object))))))
24
25
26 (5am:test variant-color
27 "The C++ overload resolution for QColor:operator QVariant()."
28 (let* ((color (make-instance 'qt:color))
29 (variant1 (qt:make-variant color))
30 (variant2 (qt:make-variant color)))
31 (5am:is (eq t (cxx:= variant1 variant2)))))
32
33 (5am:test nil-variant
34 "Make a nil variant."
35 (5am:is (eq nil (qt:variant-boundp (qt:make-variant)))))
36
37 (5am:test setf-variant-value
38 "Set a qt:variant."
39 (let ((variant (qt:make-variant)))
40 (5am:is (= 1 (setf (qt:value variant) 1)))
41 (5am:is (= 1 (qt:value variant)))))
42
43 (5am:test variant-list
44 (let ((list (qt:make-variant (map 'vector #'qt:make-variant
45 '(1 "asdf" #\a)))))
46 (5am:is (string= "QVariantList"
47 (cxx:type-name list)))))
48
49 (5am:test exact-int-type-match
50 "Test overload resolution exact match long vs. int."
51 (5am:is (enum= qt:variant.+uint+
52 (cxx:type (qt:make-variant 1))))
53 (5am:is (enum= qt:variant.+int+
54 (cxx:type (qt:make-variant -1)))))
55 ;; on 32 bit sizeof(long) == sizeof(int) thus not test for that.
56
57 (5am:test variant-color
58 "Test QColor variant."
59 (let ((color (make-instance 'qt:color :arg0 qt:+green+)))
60 (5am:is (string= (cxx:name color)
61 (cxx:name (qt:value (qt:make-variant color)))))))