(in-package :qt.tests) (5am:in-suite :qt.suite) (5am:test cxx-equality "Test cxx:= cxx:/=" (5am:is (eq t (cxx:= (make-instance 'qt:point)))) (5am:is (eq t (cxx:= (make-instance 'qt:point) (make-instance 'qt:point)))) (5am:is (eq t (cxx:= (make-instance 'qt:point) (make-instance 'qt:point) (make-instance 'qt:point)))) (5am:for-all ((x1 (5am:gen-integer)) (x2 (5am:gen-integer)) (y1 (5am:gen-integer)) (y2 (5am:gen-integer))) (let ((p1 (make-instance 'qt:point :args (list x1 y1))) (p2 (make-instance 'qt:point :args (list x2 y2)))) (5am:is (eq (and (= x1 x2) (= y1 y2)) (cxx:= p1 p2))) (5am:is (eq (or (/= x1 x2) (/= y1 y2)) (cxx:/= p1 p2)))))) (5am:test cxx-equality-conversion "Test cxx:= overload resolution." (5am:is (eq t (cxx:= (qt:make-variant "foo") "foo"))) (5am:is (eq t (cxx:= "foo" (qt:make-variant "foo") "foo"))) (5am:is (eq nil (cxx:= "foo" (qt:make-variant "foo") "bar")))) (5am:test (cxx-+ :depends-on cxx-equality) "Test cxx:+" (5am:for-all ((x1 (5am:gen-integer)) (x2 (5am:gen-integer)) (y1 (5am:gen-integer)) (y2 (5am:gen-integer))) (let ((p1 (make-instance 'qt:point :args (list x1 y1))) (p2 (make-instance 'qt:point :args (list x2 y2)))) (5am:is (eq t (cxx:= (cxx:+ p1 p2) (make-instance 'qt:point :args (list (+ x1 x2) (+ y1 y2))))))))) (5am:test (cxx-decf :depends-on cxx-equality) "Test cxx:decf" (5am:for-all ((x1 (5am:gen-integer)) (x2 (5am:gen-integer)) (y1 (5am:gen-integer)) (y2 (5am:gen-integer))) (let ((p1 (make-instance 'qt:point :args (list x1 y1))) (p2 (make-instance 'qt:point :args (list x2 y2)))) (cxx:decf p1 p2) (5am:is (eq t (cxx:= p1 (make-instance 'qt:point :args (list (- x1 x2) (- y1 y2))))))))) (5am:test (cxx-<=) "Test cxx:<=" (let ((p1 (make-instance 'qt:byte-array :args '(""))) (p2 (make-instance 'qt:byte-array :args '("a"))) (p3 (make-instance 'qt:byte-array :args '("b")))) (5am:is (eq t (cxx:<= p1 p2 p3))) (5am:is (eq t (cxx:<= p1 p2 p2 p3))) (5am:is (eq nil (cxx:<= p2 p1))) (5am:is (eq nil (cxx:<= p1 p2 p1))))) (5am:test cxx-aref "Test cxx-aref" (let ((byte-array (make-instance 'qt:byte-array :args '("foobar")))) (5am:is (eq #\b (cxx:aref byte-array 3))) (5am:is (eq #\B (setf (cxx:aref byte-array 3) #\B))) (5am:is (eq #\B (cxx:aref byte-array 3))))) (5am:test relations "Test cxx order relations." (dolist (relation (list #'cxx:< #'cxx:<= #'cxx:>= #'cxx:>)) (5am:is (eq t (funcall relation (make-instance 'qt:byte-array))))) (5am:is (eq t (cxx:<= (make-instance 'qt:byte-array) (make-instance 'qt:byte-array)))) (5am:is (eq nil (cxx:< (make-instance 'qt:byte-array) (make-instance 'qt:byte-array)))) (5am:is (eq t (cxx:>= (make-instance 'qt:byte-array) (make-instance 'qt:byte-array)))) (5am:is (eq nil (cxx:> (make-instance 'qt:byte-array) (make-instance 'qt:byte-array)))))