summaryrefslogtreecommitdiff
path: root/test/object-invoke.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-01-04 05:12:05 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-01-07 22:28:44 +0200
commitd82b8778ed4fa9cf0f2ccacc95807c1bdaa25bda (patch)
tree617d6f6d123044bdde3bf4029408f976fd4b8291 /test/object-invoke.cpp
parent300654217eb5bfd5c6aaacc3f90ccec618239f75 (diff)
test: object-invoke: Test direct invocation
Test the ConnectionTypeDirect type when the object lives in a different thread. This test passes but generates a memory leak. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'test/object-invoke.cpp')
-rw-r--r--test/object-invoke.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/object-invoke.cpp b/test/object-invoke.cpp
index f9a8bea9..ed16de99 100644
--- a/test/object-invoke.cpp
+++ b/test/object-invoke.cpp
@@ -123,6 +123,27 @@ protected:
return TestFail;
}
+ /* Test that direct method invocation bypasses threads. */
+ object_.reset();
+ object_.invokeMethod(&InvokedObject::method,
+ ConnectionTypeDirect, 42);
+
+ switch (object_.status()) {
+ case InvokedObject::NoCall:
+ cout << "Method not invoked for custom thread" << endl;
+ return TestFail;
+ case InvokedObject::CallReceived:
+ cout << "Method invoked in incorrect thread for direct call" << endl;
+ return TestFail;
+ default:
+ break;
+ }
+
+ if (object_.value() != 42) {
+ cout << "Method invoked with incorrect value for direct call" << endl;
+ return TestFail;
+ }
+
/*
* Test invoking a method that takes reference arguments. This
* targets compilation, there's no need to check runtime