1 /* Copyright (C) 2013 BMW Group
2 * Author: Manfred Bathelt (manfred.bathelt@bmw.de)
3 * Author: Juergen Gehring (juergen.gehring@bmw.de)
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
8 #include <gtest/gtest.h>
19 #include <type_traits>
21 #include <CommonAPI/types.h>
22 #include <CommonAPI/AttributeExtension.h>
23 #include <CommonAPI/Runtime.h>
25 #include <CommonAPI/DBus/DBusConnection.h>
26 #include <CommonAPI/DBus/DBusProxy.h>
27 #include <CommonAPI/DBus/DBusRuntime.h>
29 #include "commonapi/tests/PredefinedTypeCollection.h"
30 #include "commonapi/tests/DerivedTypeCollection.h"
31 #include "commonapi/tests/TestInterfaceProxy.h"
32 #include "commonapi/tests/TestInterfaceStubDefault.h"
33 #include "commonapi/tests/TestInterfaceDBusStubAdapter.h"
35 #include "commonapi/tests/TestInterfaceDBusProxy.h"
38 class DBusCommunicationTest: public ::testing::Test {
40 virtual void SetUp() {
41 runtime_ = CommonAPI::Runtime::load();
42 ASSERT_TRUE((bool)runtime_);
43 CommonAPI::DBus::DBusRuntime* dbusRuntime = dynamic_cast<CommonAPI::DBus::DBusRuntime*>(&(*runtime_));
44 ASSERT_TRUE(dbusRuntime != NULL);
47 virtual void TearDown() {
50 std::shared_ptr<CommonAPI::Runtime> runtime_;
52 static const std::string serviceAddress_;
55 const std::string DBusCommunicationTest::serviceAddress_ = "local:commonapi.tests.TestInterface:commonapi.tests.TestInterface";
59 namespace myExtensions {
61 template<typename _AttributeType>
62 class AttributeTestExtension: public CommonAPI::AttributeExtension<_AttributeType> {
63 typedef CommonAPI::AttributeExtension<_AttributeType> __baseClass_t;
66 typedef typename _AttributeType::ValueType ValueType;
67 typedef typename _AttributeType::AttributeAsyncCallback AttributeAsyncCallback;
69 AttributeTestExtension(_AttributeType& baseAttribute) :
70 CommonAPI::AttributeExtension<_AttributeType>(baseAttribute) {}
72 ~AttributeTestExtension() {}
74 bool testExtensionMethod() const {
79 } // namespace myExtensions
81 //####################################################################################################################
84 TEST_F(DBusCommunicationTest, RemoteMethodCallSucceeds) {
85 std::shared_ptr<CommonAPI::Factory> proxyFactory = runtime_->createFactory();
86 ASSERT_TRUE((bool)proxyFactory);
88 auto defaultTestProxy = proxyFactory->buildProxy<commonapi::tests::TestInterfaceProxy>(serviceAddress_);
89 ASSERT_TRUE((bool)defaultTestProxy);
91 std::shared_ptr<CommonAPI::Factory> stubFactory = runtime_->createFactory();
92 ASSERT_TRUE((bool)stubFactory);
94 auto stub = std::make_shared<commonapi::tests::TestInterfaceStubDefault>();
95 bool success = stubFactory->registerService(stub, serviceAddress_);
99 std::string v2 = "Hai :)";
100 CommonAPI::CallStatus stat;
101 defaultTestProxy->testVoidPredefinedTypeMethod(v1, v2, stat);
103 ASSERT_EQ(stat, CommonAPI::CallStatus::SUCCESS);
107 int main(int argc, char** argv) {
108 ::testing::InitGoogleTest(&argc, argv);
109 return RUN_ALL_TESTS();