2 * Copyright (C) 2011, BMW AG
4 * GeniviAudioMananger AudioManagerDaemon
6 * \file dbuscommandpluginInterfaceTest.cpp
8 * \date 20-Oct-2011 3:42:04 PM
9 * \author Christian Mueller (christian.ei.mueller@bmw.de)
12 * GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)
13 * Copyright (C) 2011, BMW AG Christian Mueller Christian.ei.mueller@bmw.de
15 * This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.
16 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License, version 2.1, for more details.
17 * You should have received a copy of the GNU Lesser General Public License, version 2.1, along with this program; if not, see <http://www.gnu.org/licenses/lgpl-2.1.html>.
18 * Note that the copyright holders assume that the GNU Lesser General Public License, version 2.1, may also be applicable to programs even in cases in which the program is not a library in the technical sense.
19 * Linking AudioManager statically or dynamically with other modules is making a combined work based on AudioManager. You may license such other modules under the GNU Lesser General Public License, version 2.1. If you do not want to license your linked modules under the GNU Lesser General Public License, version 2.1, you may use the program under the following exception.
20 * As a special exception, the copyright holders of AudioManager give you permission to combine AudioManager with software programs or libraries that are released under any license unless such a combination is not permitted by the license of such a software program or library. You may copy and distribute such a system following the terms of the GNU Lesser General Public License, version 2.1, including this special exception, for AudioManager and the licenses of the other code concerned.
21 * Note that people who make modified versions of AudioManager are not obligated to grant this special exception for their modified versions; it is their choice whether to do so. The GNU Lesser General Public License, version 2.1, gives permission to release a modified version without this exception; this exception also makes it possible to release a modified version which carries forward this exception.
23 * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN
26 #include <python2.6/Python.h>
27 #include <dbus/DBusWrapper.h>
28 #include "dbuscommandpluginInterfaceTest.h"
31 #include "../include/DBusCommandSender.h"
32 #include "../include/DBusMessageHandler.h"
33 #include "DbusCommandInterfaceBackdoor.h"
34 #include "MockInterfaces.h"
35 #include "DLTWrapper.h"
38 using namespace testing;
40 //DLT_DECLARE_CONTEXT(DLT_CONTEXT)
42 std::string DBUSCOMMAND = "dbus-send --session --print-reply --dest=org.genivi.audiomanager /org/genivi/audiomanager/CommandInterface org.genivi.audiomanager.CommandInterface.";
44 void* run_the_loop(void* wrapper)
46 DBusWrapper* wrap=(DBusWrapper*)wrapper;
51 dbuscommandpluginInterfaceTest::dbuscommandpluginInterfaceTest()
53 DLTWrapper::instance()->registerApp("dbusTest","dbusTest");
56 dbuscommandpluginInterfaceTest::~dbuscommandpluginInterfaceTest()
61 void dbuscommandpluginInterfaceTest::SetUp()
68 void dbuscommandpluginInterfaceTest::TearDown()
73 ACTION(returnListConnections)
75 std::vector<am::am_MainConnectionType_s> list;
76 am::am_MainConnectionType_s listItem;
77 listItem.mainConnectionID=15;
80 listItem.connectionState=CS_MIN;
82 list.push_back(listItem);
86 ACTION(returnListSinks)
88 std::vector<am::am_SinkType_s> list;
89 am::am_SinkType_s listItem;
90 listItem.availability.availability=A_MIN;
91 listItem.availability.availabilityReason=AR_NOMEDIA;
92 listItem.muteState=MS_UNMUTED;
93 listItem.name="mySink";
94 listItem.sinkClassID=34;
97 list.push_back(listItem);
101 ACTION(returnListSources)
103 std::vector<am::am_SourceType_s> list;
104 am::am_SourceType_s listItem;
105 listItem.availability.availability=A_MAX;
106 listItem.availability.availabilityReason=AR_SAMEMEDIA;
107 listItem.name="MySource";
108 listItem.sourceClassID=12;
109 listItem.sourceID=224;
110 list.push_back(listItem);
111 listItem.name="NextSource";
112 listItem.sourceID=22;
113 list.push_back(listItem);
117 ACTION(returnListMainSinkSoundProperties)
119 std::vector<am::am_MainSoundProperty_s> list;
120 am::am_MainSoundProperty_s listItem;
121 listItem.type=MSP_MAX;
123 list.push_back(listItem);
124 listItem.type=MSP_MIN;
126 list.push_back(listItem);
130 ACTION(returnListSourceClasses)
132 std::vector<am::am_SourceClass_s> list;
133 am::am_SourceClass_s listItem;
134 am::am_ClassProperty_s property;
135 property.classProperty=CP_SINK_TYPE;
137 listItem.name="FirstCLass";
138 listItem.sourceClassID=23;
139 listItem.listClassProperties.push_back(property);
140 list.push_back(listItem);
141 listItem.name="SecondCLass";
142 listItem.sourceClassID=2;
143 listItem.listClassProperties.push_back(property);
144 list.push_back(listItem);
148 ACTION(returnListSinkClasses)
150 std::vector<am::am_SinkClass_s> list;
151 am::am_SinkClass_s listItem;
152 am::am_ClassProperty_s property;
153 property.classProperty=CP_SOURCE_TYPE;
155 listItem.name="FirstCLass";
156 listItem.sinkClassID=2123;
157 listItem.listClassProperties.push_back(property);
158 list.push_back(listItem);
159 listItem.name="SecondCLass";
160 listItem.sinkClassID=23;
161 listItem.listClassProperties.push_back(property);
162 list.push_back(listItem);
166 ACTION(returnListSystemProperties)
168 std::vector<am::am_SystemProperty_s> list;
169 am::am_SystemProperty_s listItem;
170 listItem.type=SYP_TEST;
171 listItem.value=-2245;
172 list.push_back(listItem);
176 ACTION(returnTimingInfo)
178 am::am_timeSync_t time=23;
183 TEST_F(dbuscommandpluginInterfaceTest,Connect)
186 //unfortunatly we need to put all in one testcase because testing with the dbus loop caused problems...
187 DBusWrapper pDBusWrapper;
188 pthread_t ptestThread;
189 std::vector<std::string> plistCommandPluginDirs;
190 plistCommandPluginDirs.push_back(std::string(DEFAULT_PLUGIN_COMMAND_DIR));
192 CommandSender pCommandSender(plistCommandPluginDirs);
193 MockCommandReceiveInterface pReceiveInterface;
195 //this class just creates the thread that will handle the mainloop...
196 pthread_create(&ptestThread,NULL,run_the_loop,(void*)&pDBusWrapper);
198 // ok, here we give the DBusWrapper pointer to the Plugin and start the interface
199 EXPECT_CALL(pReceiveInterface,getDBusConnectionWrapper(_)).WillRepeatedly(DoAll(SetArgReferee<0>(&pDBusWrapper),Return(E_OK)));
200 pCommandSender.startupInterface(&pReceiveInterface);
202 EXPECT_CALL(pReceiveInterface,connect(2,3,_)).WillRepeatedly(DoAll(SetArgReferee<2>(35),Return(E_OK)));
203 system((DBUSCOMMAND + std::string("Connect uint16:2 uint16:3 > /tmp/result.txt ")).c_str());
206 std::ifstream ifs("/tmp/result.txt");
208 int lineCounter=0, result=0;
209 while(std::getline(ifs, line))
213 std::stringstream(line.substr(line.find_first_not_of(" int16 "))) >> result;
214 ASSERT_EQ(result,E_OK);
216 else if (lineCounter==2)
218 std::stringstream(line.substr(line.find_first_not_of(" uint16 "))) >> result;
219 ASSERT_EQ(result,35);
225 std::cout<<"[connect ]"<<std::endl;
227 EXPECT_CALL(pReceiveInterface,disconnect(2)).WillOnce(Return(E_OK));
228 system((DBUSCOMMAND + std::string("Disconnect uint16:2 > /tmp/result.txt ")).c_str());
233 ifs.open("/tmp/result.txt");
234 while(std::getline(ifs, line))
238 std::stringstream(line.substr(line.find_first_not_of(" int16 "))) >> result;
239 ASSERT_EQ(result,E_OK);
245 std::cout<<"[disconnect]"<<std::endl;
247 EXPECT_CALL(pReceiveInterface,setVolume(22,12)).WillOnce(Return(E_OK));
248 system((DBUSCOMMAND + std::string("SetVolume uint16:22 int16:12 > /tmp/result.txt ")).c_str());
253 ifs.open("/tmp/result.txt");
254 while(std::getline(ifs, line))
258 std::stringstream(line.substr(line.find_first_not_of(" int16 "))) >> result;
259 ASSERT_EQ(result,E_OK);
265 std::cout<<"[setVolume ]"<<std::endl;
267 EXPECT_CALL(pReceiveInterface,volumeStep(2,1)).WillOnce(Return(E_OK));
268 system((DBUSCOMMAND + std::string("VolumeStep uint16:2 int16:1 > /tmp/result.txt ")).c_str());
273 ifs.open("/tmp/result.txt");
274 while(std::getline(ifs, line))
278 std::stringstream(line.substr(line.find_first_not_of(" int16 "))) >> result;
279 ASSERT_EQ(result,E_OK);
285 std::cout<<"[volumeStep]"<<std::endl;
287 EXPECT_CALL(pReceiveInterface,setSinkMuteState(1,MS_MIN)).WillOnce(Return(E_OK));
288 system((DBUSCOMMAND + std::string("SetSinkMuteState uint16:1 int16:0 > /tmp/result.txt ")).c_str());
293 ifs.open("/tmp/result.txt");
294 while(std::getline(ifs, line))
298 std::stringstream(line.substr(line.find_first_not_of(" int16 "))) >> result;
299 ASSERT_EQ(result,E_OK);
305 std::cout<<"[sinkmutest]"<<std::endl;
307 EXPECT_CALL(pReceiveInterface,setMainSinkSoundProperty(AllOf(Field(&am_MainSoundProperty_s::value, 3), \
308 Field(&am_MainSoundProperty_s::type,MSP_MIN)),1)).WillOnce(Return(E_ABORTED));
311 PyRun_SimpleStringFlags("import dbus\n"
312 "f = open('/tmp/result.txt','w')\n"
313 "bus = dbus.SessionBus()\n"
314 "retVal=dbus.Bus().call_blocking(\n"
315 "bus_name='org.genivi.audiomanager',\n"
316 "object_path='/org/genivi/audiomanager/CommandInterface',\n"
317 "dbus_interface='org.genivi.audiomanager.CommandInterface',\n"
318 "method='SetMainSinkSoundProperty',\n"
319 "signature='q(nn)',\n"
320 "args=[1,(0,3)],) \n"
321 "f.write(str(retVal));\n"
324 ifs.open("/tmp/result.txt");
325 while(std::getline(ifs, line))
327 std::stringstream(line) >> result;
329 ASSERT_EQ(result,E_ABORTED);
332 std::cout<<"[sinksound ]"<<std::endl;
334 EXPECT_CALL(pReceiveInterface,setMainSourceSoundProperty(AllOf(Field(&am_MainSoundProperty_s::value, 3), \
335 Field(&am_MainSoundProperty_s::type,MSP_MIN)),1)).WillOnce(Return(E_ABORTED));
337 PyRun_SimpleStringFlags("import dbus\n"
338 "f = open('/tmp/result.txt','w')\n"
339 "bus = dbus.SessionBus()\n"
340 "retVal=dbus.Bus().call_blocking(\n"
341 "bus_name='org.genivi.audiomanager',\n"
342 "object_path='/org/genivi/audiomanager/CommandInterface',\n"
343 "dbus_interface='org.genivi.audiomanager.CommandInterface',\n"
344 "method='SetMainSourceSoundProperty',\n"
345 "signature='q(nn)',\n"
346 "args=[1,(0,3)],) \n"
347 "f.write(str(retVal));\n"
350 ifs.open("/tmp/result.txt");
351 while(std::getline(ifs, line))
353 std::stringstream(line) >> result;
355 ASSERT_EQ(result,E_ABORTED);
358 std::cout<<"[sourcesnd ]"<<std::endl;
361 EXPECT_CALL(pReceiveInterface,setSystemProperty(Field(&am_SystemProperty_s::value,2))).WillOnce(Return(E_DATABASE_ERROR));
363 PyRun_SimpleStringFlags("import dbus\n"
364 "f = open('/tmp/result.txt','w')\n"
365 "bus = dbus.SessionBus()\n"
366 "retVal=dbus.Bus().call_blocking(\n"
367 "bus_name='org.genivi.audiomanager',\n"
368 "object_path='/org/genivi/audiomanager/CommandInterface',\n"
369 "dbus_interface='org.genivi.audiomanager.CommandInterface',\n"
370 "method='SetSystemProperty',\n"
371 "signature='(nn)',\n"
373 "f.write(str(retVal));\n"
377 ifs.open("/tmp/result.txt");
378 while(std::getline(ifs, line))
380 std::stringstream(line) >> result;
382 ASSERT_EQ(result,E_DATABASE_ERROR);
385 std::cout<<"[systemprop]"<<std::endl;
387 EXPECT_CALL(pReceiveInterface,getListMainConnections(_)).WillOnce(DoAll(returnListConnections(),Return(E_ABORTED)));
389 PyRun_SimpleStringFlags("import dbus\n"
390 "f = open('/tmp/result.txt','w')\n"
391 "bus = dbus.SessionBus()\n"
392 "retVal=dbus.Bus().call_blocking(\n"
393 "bus_name='org.genivi.audiomanager',\n"
394 "object_path='/org/genivi/audiomanager/CommandInterface',\n"
395 "dbus_interface='org.genivi.audiomanager.CommandInterface',\n"
396 "method='GetListMainConnections',\n"
399 "f.write(str(retVal));\n"
402 ifs.open("/tmp/result.txt");
403 while(std::getline(ifs, line))
405 //we could parse here, but this is the fastest way....
406 ASSERT_EQ(line.compare("(dbus.Int16(9), dbus.Array([dbus.Struct((dbus.UInt16(15), dbus.UInt16(3), dbus.UInt16(4), dbus.Int16(34), dbus.Int16(0)), signature=None)], signature=dbus.Signature('(qqqnn)')))"),0);
410 std::cout<<"[listmainc ]"<<std::endl;
412 EXPECT_CALL(pReceiveInterface,getListMainSinks(_)).WillOnce(DoAll(returnListSinks(),Return(E_ABORTED)));
414 PyRun_SimpleStringFlags("import dbus\n"
415 "f = open('/tmp/result.txt','w')\n"
416 "bus = dbus.SessionBus()\n"
417 "retVal=dbus.Bus().call_blocking(\n"
418 "bus_name='org.genivi.audiomanager',\n"
419 "object_path='/org/genivi/audiomanager/CommandInterface',\n"
420 "dbus_interface='org.genivi.audiomanager.CommandInterface',\n"
421 "method='GetListMainSinks',\n"
424 "f.write(str(retVal));\n"
427 ifs.open("/tmp/result.txt");
428 while(std::getline(ifs, line))
430 //we could parse here, but this is the fastest way....
431 ASSERT_EQ(line.compare("(dbus.Int16(9), dbus.Array([dbus.Struct((dbus.UInt16(24), dbus.String(u'mySink'), dbus.Struct((dbus.Int16(0), dbus.Int16(2)), signature=None), dbus.Int16(124), dbus.Int16(1), dbus.UInt16(34)), signature=None)], signature=dbus.Signature('(qs(nn)nnq)')))"),0);
435 std::cout<<"[listsinks ]"<<std::endl;
437 EXPECT_CALL(pReceiveInterface,getListMainSources(_)).WillOnce(DoAll(returnListSources(),Return(E_ABORTED)));
439 PyRun_SimpleStringFlags("import dbus\n"
440 "f = open('/tmp/result.txt','w')\n"
441 "bus = dbus.SessionBus()\n"
442 "retVal=dbus.Bus().call_blocking(\n"
443 "bus_name='org.genivi.audiomanager',\n"
444 "object_path='/org/genivi/audiomanager/CommandInterface',\n"
445 "dbus_interface='org.genivi.audiomanager.CommandInterface',\n"
446 "method='GetListMainSources',\n"
449 "f.write(str(retVal));\n"
452 ifs.open("/tmp/result.txt");
453 while(std::getline(ifs, line))
455 //we could parse here, but this is the fastest way....
456 ASSERT_EQ(line.compare("(dbus.Int16(9), dbus.Array([dbus.Struct((dbus.UInt16(224), dbus.String(u'MySource'), dbus.Struct((dbus.Int16(3), dbus.Int16(1)), signature=None), dbus.UInt16(12)), signature=None), dbus.Struct((dbus.UInt16(22), dbus.String(u'NextSource'), dbus.Struct((dbus.Int16(3), dbus.Int16(1)), signature=None), dbus.UInt16(12)), signature=None)], signature=dbus.Signature('(qs(nn)q)')))"),0);
460 std::cout<<"[listsource]"<<std::endl;
462 EXPECT_CALL(pReceiveInterface,getListMainSinkSoundProperties(1,_)).WillOnce(DoAll(returnListMainSinkSoundProperties(),Return(E_ABORTED)));
464 PyRun_SimpleStringFlags("import dbus\n"
465 "f = open('/tmp/result.txt','w')\n"
466 "bus = dbus.SessionBus()\n"
467 "retVal=dbus.Bus().call_blocking(\n"
468 "bus_name='org.genivi.audiomanager',\n"
469 "object_path='/org/genivi/audiomanager/CommandInterface',\n"
470 "dbus_interface='org.genivi.audiomanager.CommandInterface',\n"
471 "method='GetListMainSinkSoundProperties',\n"
474 "f.write(str(retVal));\n"
477 ifs.open("/tmp/result.txt");
478 while(std::getline(ifs, line))
480 //we could parse here, but this is the fastest way....
481 ASSERT_EQ(line.compare("(dbus.Int16(9), dbus.Array([dbus.Struct((dbus.Int16(2), dbus.Int16(223)), signature=None), dbus.Struct((dbus.Int16(0), dbus.Int16(2)), signature=None)], signature=dbus.Signature('(nn)')))"),0);
485 std::cout<<"[lMainSiPro]"<<std::endl;
487 EXPECT_CALL(pReceiveInterface,getListMainSourceSoundProperties(1,_)).WillOnce(DoAll(returnListMainSinkSoundProperties(),Return(E_ABORTED)));
489 PyRun_SimpleStringFlags("import dbus\n"
490 "f = open('/tmp/result.txt','w')\n"
491 "bus = dbus.SessionBus()\n"
492 "retVal=dbus.Bus().call_blocking(\n"
493 "bus_name='org.genivi.audiomanager',\n"
494 "object_path='/org/genivi/audiomanager/CommandInterface',\n"
495 "dbus_interface='org.genivi.audiomanager.CommandInterface',\n"
496 "method='GetListMainSourceSoundProperties',\n"
499 "f.write(str(retVal));\n"
502 ifs.open("/tmp/result.txt");
503 while(std::getline(ifs, line))
505 //we could parse here, but this is the fastest way....
506 ASSERT_EQ(line.compare("(dbus.Int16(9), dbus.Array([dbus.Struct((dbus.Int16(2), dbus.Int16(223)), signature=None), dbus.Struct((dbus.Int16(0), dbus.Int16(2)), signature=None)], signature=dbus.Signature('(nn)')))"),0);
510 std::cout<<"[lMainSoPro]"<<std::endl;
512 EXPECT_CALL(pReceiveInterface,getListSourceClasses(_)).WillOnce(DoAll(returnListSourceClasses(),Return(E_ABORTED)));
514 PyRun_SimpleStringFlags("import dbus\n"
515 "f = open('/tmp/result.txt','w')\n"
516 "bus = dbus.SessionBus()\n"
517 "retVal=dbus.Bus().call_blocking(\n"
518 "bus_name='org.genivi.audiomanager',\n"
519 "object_path='/org/genivi/audiomanager/CommandInterface',\n"
520 "dbus_interface='org.genivi.audiomanager.CommandInterface',\n"
521 "method='GetListSourceClasses',\n"
524 "f.write(str(retVal));\n"
527 ifs.open("/tmp/result.txt");
528 while(std::getline(ifs, line))
530 //we could parse here, but this is the fastest way....
531 ASSERT_EQ(line.compare("(dbus.Int16(9), dbus.Array([dbus.Struct((dbus.UInt16(23), dbus.String(u'FirstCLass'), dbus.Array([dbus.Struct((dbus.Int16(1), dbus.Int16(12)), signature=None)], signature=dbus.Signature('(nn)'))), signature=None), dbus.Struct((dbus.UInt16(2), dbus.String(u'SecondCLass'), dbus.Array([dbus.Struct((dbus.Int16(1), dbus.Int16(12)), signature=None), dbus.Struct((dbus.Int16(1), dbus.Int16(12)), signature=None)], signature=dbus.Signature('(nn)'))), signature=None)], signature=dbus.Signature('(qsa(nn))')))"),0);
535 std::cout<<"[lSourceCla]"<<std::endl;
537 EXPECT_CALL(pReceiveInterface,getListSinkClasses(_)).WillOnce(DoAll(returnListSinkClasses(),Return(E_ABORTED)));
539 PyRun_SimpleStringFlags("import dbus\n"
540 "f = open('/tmp/result.txt','w')\n"
541 "bus = dbus.SessionBus()\n"
542 "retVal=dbus.Bus().call_blocking(\n"
543 "bus_name='org.genivi.audiomanager',\n"
544 "object_path='/org/genivi/audiomanager/CommandInterface',\n"
545 "dbus_interface='org.genivi.audiomanager.CommandInterface',\n"
546 "method='GetListSinkClasses',\n"
549 "f.write(str(retVal));\n"
552 ifs.open("/tmp/result.txt");
553 while(std::getline(ifs, line))
555 //we could parse here, but this is the fastest way....
556 ASSERT_EQ(line.compare("(dbus.Int16(9), dbus.Array([dbus.Struct((dbus.UInt16(2123), dbus.String(u'FirstCLass'), dbus.Array([dbus.Struct((dbus.Int16(0), dbus.Int16(122)), signature=None)], signature=dbus.Signature('(nn)'))), signature=None), dbus.Struct((dbus.UInt16(23), dbus.String(u'SecondCLass'), dbus.Array([dbus.Struct((dbus.Int16(0), dbus.Int16(122)), signature=None), dbus.Struct((dbus.Int16(0), dbus.Int16(122)), signature=None)], signature=dbus.Signature('(nn)'))), signature=None)], signature=dbus.Signature('(qsa(nn))')))"),0);
560 std::cout<<"[lSinkClass]"<<std::endl;
562 EXPECT_CALL(pReceiveInterface,getListSystemProperties(_)).WillOnce(DoAll(returnListSystemProperties(),Return(E_ABORTED)));
564 PyRun_SimpleStringFlags("import dbus\n"
565 "f = open('/tmp/result.txt','w')\n"
566 "bus = dbus.SessionBus()\n"
567 "retVal=dbus.Bus().call_blocking(\n"
568 "bus_name='org.genivi.audiomanager',\n"
569 "object_path='/org/genivi/audiomanager/CommandInterface',\n"
570 "dbus_interface='org.genivi.audiomanager.CommandInterface',\n"
571 "method='GetListSystemProperties',\n"
574 "f.write(str(retVal));\n"
577 ifs.open("/tmp/result.txt");
578 while(std::getline(ifs, line))
580 //we could parse here, but this is the fastest way....
581 ASSERT_EQ(line.compare("(dbus.Int16(9), dbus.Array([dbus.Struct((dbus.Int16(0), dbus.Int16(-2245)), signature=None)], signature=dbus.Signature('(nn)')))"),0);
585 std::cout<<"[lSysProp ]"<<std::endl;
587 EXPECT_CALL(pReceiveInterface,getTimingInformation(2,_)).WillOnce(DoAll(returnTimingInfo(),Return(E_ABORTED)));
589 PyRun_SimpleStringFlags("import dbus\n"
590 "f = open('/tmp/result.txt','w')\n"
591 "bus = dbus.SessionBus()\n"
592 "retVal=dbus.Bus().call_blocking(\n"
593 "bus_name='org.genivi.audiomanager',\n"
594 "object_path='/org/genivi/audiomanager/CommandInterface',\n"
595 "dbus_interface='org.genivi.audiomanager.CommandInterface',\n"
596 "method='GetTimingInformation',\n"
599 "f.write(str(retVal));\n"
602 ifs.open("/tmp/result.txt");
603 while(std::getline(ifs, line))
605 //we could parse here, but this is the fastest way....
606 ASSERT_EQ(line.compare("(dbus.Int16(9), dbus.Int16(23))"),0);
610 std::cout<<"[timingInfo]"<<std::endl;
615 int main(int argc, char **argv)
617 ::testing::InitGoogleTest(&argc, argv);
618 return RUN_ALL_TESTS();