2 * routingInterfaceTest.cpp
4 * Created on: Dec 10, 2011
8 #include "routingInterfaceTest.h"
10 using ::testing::Field;
11 using ::testing::Property;
12 using ::testing::Matcher;
13 using ::testing::Pointee;
14 using ::testing::AllOf;
15 using ::testing::SafeMatcherCast;
16 using ::testing::MatcherCast;
17 using ::testing::DefaultValue;
20 using ::testing::ElementsAreArray;
21 using ::testing::ElementsAre;
22 using ::testing::NotNull;
24 routingInterfaceTest::routingInterfaceTest()
25 :plistCommandPluginDirs(),
26 pDatabaseHandler(std::string(":memory:")),
27 pRoutingSender(plistRoutingPluginDirs),
28 pCommandSender(plistCommandPluginDirs),
30 pRoutingInterfaceBackdoor(),
31 pCommandInterfaceBackdoor(),
32 pControlReceiver(&pDatabaseHandler,&pRoutingSender,&pCommandSender),
33 pObserver(&pCommandSender,&pRoutingSender)
35 pDatabaseHandler.registerObserver(&pObserver);
36 pRoutingInterfaceBackdoor.unloadPlugins(&pRoutingSender);
37 pRoutingInterfaceBackdoor.injectInterface(&pRoutingSender,&pMockInterface,"mock");
38 pCommandInterfaceBackdoor.unloadPlugins(&pCommandSender);
41 routingInterfaceTest::~routingInterfaceTest()
45 void routingInterfaceTest::SetUp()
47 DLT_REGISTER_APP("Rtest","RoutingInterfacetest");
48 DLT_REGISTER_CONTEXT(AudioManager,"Main","Main Context");
49 DLT_LOG(AudioManager,DLT_LOG_INFO, DLT_STRING("RoutingSendInterface Test started "));
53 void routingInterfaceTest::TearDown()
55 DLT_UNREGISTER_CONTEXT(AudioManager);
58 TEST_F(routingInterfaceTest,abort)
63 am_domainID_t domainID;
65 am_connectionID_t connectionID;
66 std::vector<am_Handle_s>listHandles;
68 pCF.createDomain(domain);
70 domain.busname="mock";
73 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID));
74 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(sink,sinkID));
75 EXPECT_CALL(pMockInterface,asyncConnect(_,_,1,sinkID,CF_ANALOG)).WillOnce(Return(E_OK));
76 ASSERT_EQ(E_OK,pControlReceiver.connect(handle,connectionID,CF_ANALOG,1,2));
77 ASSERT_NE(handle.handle,0);
78 ASSERT_EQ(handle.handleType,H_CONNECT);
79 ASSERT_EQ(E_OK,pControlReceiver.getListHandles(listHandles));
80 ASSERT_TRUE(listHandles[0].handle==handle.handle);
81 ASSERT_TRUE(listHandles[0].handleType==handle.handleType);
82 EXPECT_CALL(pMockInterface,asyncAbort(_)).WillOnce(Return(E_OK));
83 ASSERT_EQ(E_OK,pControlReceiver.abortAction(handle));
86 TEST_F(routingInterfaceTest,abortNonExistent)
88 EXPECT_CALL(pMockInterface,asyncAbort(_)).Times(0);
90 ASSERT_EQ(E_NON_EXISTENT,pControlReceiver.abortAction(handle));
93 TEST_F(routingInterfaceTest,alreadyConnected)
98 am_domainID_t domainID;
100 pCF.createDomain(domain);
102 domain.busname="mock";
105 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID));
106 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(sink,sinkID));
107 EXPECT_CALL(pMockInterface,asyncConnect(_,_,1,sinkID,CF_ANALOG)).WillOnce(Return(E_OK));
109 am_connectionID_t connectionID;
110 ASSERT_EQ(E_OK,pControlReceiver.connect(handle,connectionID,CF_ANALOG,1,2));
111 ASSERT_EQ(E_OK,pDatabaseHandler.changeConnectionFinal(connectionID));
112 ASSERT_EQ(E_ALREADY_EXISTS,pControlReceiver.connect(handle,connectionID,CF_ANALOG,1,2));
113 ASSERT_NE(handle.handle,0);
114 ASSERT_EQ(handle.handleType,H_CONNECT);
117 TEST_F(routingInterfaceTest,setSinkSoundPropertyNoChange)
122 am_domainID_t domainID;
124 am_SoundProperty_s soundProperty;
125 soundProperty.type=SP_TREBLE;
126 soundProperty.value=23;
127 std::vector<am_Handle_s>listHandles;
128 pCF.createSink(sink);
129 pCF.createDomain(domain);
131 domain.busname="mock";
134 sink.listSoundProperties.push_back(soundProperty);
135 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID));
136 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(sink,sinkID));
137 EXPECT_CALL(pMockInterface,asyncSetSinkSoundProperty(_,_,sinkID)).Times(0);
138 ASSERT_EQ(E_NO_CHANGE,pControlReceiver.setSinkSoundProperty(handle,sinkID,soundProperty));
141 TEST_F(routingInterfaceTest,setSourceState)
144 am_sourceID_t sourceID;
146 am_domainID_t domainID;
149 am_SourceState_e state=SS_PAUSED;
150 pCF.createSource(source);
151 pCF.createDomain(domain);
153 domain.busname="mock";
155 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID));
156 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(source,sourceID));
157 EXPECT_CALL(pMockInterface,asyncSetSourceState(_,sourceID,state)).WillOnce(Return(E_OK));
158 ASSERT_EQ(E_OK,pControlReceiver.setSourceState(handle,sourceID,state));
159 ASSERT_NE(handle.handle,0);
160 ASSERT_EQ(handle.handleType,H_SETSOURCESTATE);
163 TEST_F(routingInterfaceTest,setSourceSoundProperty)
166 am_sourceID_t sourceID;
168 am_domainID_t domainID;
170 am_SoundProperty_s soundProperty;
171 std::vector<am_Handle_s>listHandles;
172 pCF.createSource(source);
173 pCF.createDomain(domain);
175 domain.busname="mock";
178 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID));
179 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(source,sourceID));
180 EXPECT_CALL(pMockInterface,asyncSetSourceSoundProperty(_,_,sourceID)).WillOnce(Return(E_OK));
181 ASSERT_EQ(E_OK,pControlReceiver.setSourceSoundProperty(handle,sourceID,soundProperty));
182 ASSERT_NE(handle.handle,0);
183 ASSERT_EQ(handle.handleType,H_SETSOURCESOUNDPROPERTY);
184 ASSERT_EQ(E_OK,pControlReceiver.getListHandles(listHandles));
185 ASSERT_TRUE(listHandles[0].handle==handle.handle);
186 ASSERT_TRUE(listHandles[0].handleType==handle.handleType);
189 TEST_F(routingInterfaceTest,setSinkSoundProperty)
194 am_domainID_t domainID;
196 am_SoundProperty_s soundProperty;
197 std::vector<am_Handle_s>listHandles;
198 pCF.createSink(sink);
199 pCF.createDomain(domain);
201 domain.busname="mock";
204 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID));
205 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(sink,sinkID));
206 EXPECT_CALL(pMockInterface,asyncSetSinkSoundProperty(_,_,sinkID)).WillOnce(Return(E_OK));
207 ASSERT_EQ(E_OK,pControlReceiver.setSinkSoundProperty(handle,sinkID,soundProperty));
208 ASSERT_NE(handle.handle,0);
209 ASSERT_EQ(handle.handleType,H_SETSINKSOUNDPROPERTY);
210 ASSERT_EQ(E_OK,pControlReceiver.getListHandles(listHandles));
211 ASSERT_TRUE(listHandles[0].handle==handle.handle);
212 ASSERT_TRUE(listHandles[0].handleType==handle.handleType);
215 TEST_F(routingInterfaceTest,setSourceVolumeNoChange)
218 am_sourceID_t sourceID;
220 am_domainID_t domainID;
222 am_volume_t volume=34;
223 am_RampType_e rampType=RAMP_DIRECT;
224 am_time_t rampTime=300;
225 std::vector<am_Handle_s>listHandles;
226 pCF.createSource(source);
227 pCF.createDomain(domain);
229 domain.busname="mock";
232 source.volume=volume;
233 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID));
234 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(source,sourceID));
235 EXPECT_CALL(pMockInterface,asyncSetSourceVolume(_,2,volume,rampType,rampTime)).Times(0);
236 ASSERT_EQ(E_NO_CHANGE,pControlReceiver.setSourceVolume(handle,2,volume,rampType,rampTime));
237 ASSERT_EQ(E_OK,pControlReceiver.getListHandles(listHandles));
238 ASSERT_TRUE(listHandles.empty());
241 TEST_F(routingInterfaceTest,setSourceVolume)
244 am_sourceID_t sourceID;
246 am_domainID_t domainID;
248 am_volume_t volume=34;
249 am_RampType_e rampType=RAMP_DIRECT;
250 am_time_t rampTime=300;
251 std::vector<am_Handle_s>listHandles;
252 pCF.createSource(source);
253 pCF.createDomain(domain);
255 domain.busname="mock";
258 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID));
259 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(source,sourceID));
260 EXPECT_CALL(pMockInterface,asyncSetSourceVolume(_,2,volume,rampType,rampTime)).WillOnce(Return(E_OK));
261 ASSERT_EQ(E_OK,pControlReceiver.setSourceVolume(handle,2,volume,rampType,rampTime));
262 ASSERT_NE(handle.handle,0);
263 ASSERT_EQ(handle.handleType,H_SETSOURCEVOLUME);
264 ASSERT_EQ(E_OK,pControlReceiver.getListHandles(listHandles));
265 ASSERT_TRUE(listHandles[0].handle==handle.handle);
266 ASSERT_TRUE(listHandles[0].handleType==handle.handleType);
269 TEST_F(routingInterfaceTest,setSinkVolumeNoChange)
274 am_domainID_t domainID;
276 am_volume_t volume=34;
277 am_RampType_e rampType=RAMP_DIRECT;
278 am_time_t rampTime=300;
279 std::vector<am_Handle_s>listHandles;
280 pCF.createSink(sink);
281 pCF.createDomain(domain);
283 domain.busname="mock";
287 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID));
288 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(sink,sinkID));
289 EXPECT_CALL(pMockInterface,asyncSetSinkVolume(_,2,volume,rampType,rampTime)).Times(0);
290 ASSERT_EQ(E_NO_CHANGE,pControlReceiver.setSinkVolume(handle,2,volume,rampType,rampTime));
291 ASSERT_EQ(E_OK,pControlReceiver.getListHandles(listHandles));
292 ASSERT_TRUE(listHandles.empty());
295 TEST_F(routingInterfaceTest,setSinkVolume)
300 am_domainID_t domainID;
302 am_volume_t volume=34;
303 am_RampType_e rampType=RAMP_DIRECT;
304 am_time_t rampTime=300;
305 std::vector<am_Handle_s>listHandles;
306 pCF.createSink(sink);
307 pCF.createDomain(domain);
309 domain.busname="mock";
312 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID));
313 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(sink,sinkID));
314 EXPECT_CALL(pMockInterface,asyncSetSinkVolume(_,2,volume,rampType,rampTime)).WillOnce(Return(E_OK));
315 ASSERT_EQ(E_OK,pControlReceiver.setSinkVolume(handle,2,volume,rampType,rampTime));
316 ASSERT_NE(handle.handle,0);
317 ASSERT_EQ(handle.handleType,H_SETSINKVOLUME);
318 ASSERT_EQ(E_OK,pControlReceiver.getListHandles(listHandles));
319 ASSERT_TRUE(listHandles[0].handle==handle.handle);
320 ASSERT_TRUE(listHandles[0].handleType==handle.handleType);
323 TEST_F(routingInterfaceTest,connect)
328 am_domainID_t domainID;
330 am_connectionID_t connectionID;
331 std::vector<am_Handle_s>listHandles;
332 pCF.createSink(sink);
333 pCF.createDomain(domain);
335 domain.busname="mock";
338 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID));
339 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(sink,sinkID));
340 EXPECT_CALL(pMockInterface,asyncConnect(_,_,1,sinkID,CF_ANALOG)).WillOnce(Return(E_OK));
341 ASSERT_EQ(E_OK,pControlReceiver.connect(handle,connectionID,CF_ANALOG,1,2));
342 ASSERT_NE(handle.handle,0);
343 ASSERT_EQ(handle.handleType,H_CONNECT);
344 ASSERT_EQ(E_OK,pControlReceiver.getListHandles(listHandles));
345 ASSERT_TRUE(listHandles[0].handle==handle.handle);
346 ASSERT_TRUE(listHandles[0].handleType==handle.handleType);
349 TEST_F(routingInterfaceTest,disconnect)
354 am_domainID_t domainID;
356 am_connectionID_t connectionID;
357 std::vector<am_Handle_s>listHandles;
358 pCF.createSink(sink);
359 pCF.createDomain(domain);
361 domain.busname="mock";
364 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID));
365 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(sink,sinkID));
366 EXPECT_CALL(pMockInterface,asyncConnect(_,_,1,sinkID,CF_ANALOG)).WillOnce(Return(E_OK));
367 ASSERT_EQ(E_OK,pControlReceiver.connect(handle,connectionID,CF_ANALOG,1,2));
368 ASSERT_EQ(E_OK,pDatabaseHandler.changeConnectionFinal(connectionID));
369 EXPECT_CALL(pMockInterface,asyncDisconnect(_,connectionID)).WillOnce(Return(E_OK));
370 ASSERT_EQ(E_OK,pControlReceiver.disconnect(handle,connectionID));
371 ASSERT_NE(handle.handle,0);
372 ASSERT_EQ(handle.handleType,H_DISCONNECT);
373 ASSERT_EQ(E_OK,pControlReceiver.getListHandles(listHandles));
374 ASSERT_TRUE(listHandles[1].handle==handle.handle);
375 ASSERT_TRUE(listHandles[1].handleType==handle.handleType);
378 TEST_F(routingInterfaceTest,nothingTodisconnect)
381 am_connectionID_t connectionID=4;
382 std::vector<am_Handle_s>listHandles;
383 ASSERT_EQ(E_NON_EXISTENT,pControlReceiver.disconnect(handle,connectionID));
384 ASSERT_EQ(E_OK,pControlReceiver.getListHandles(listHandles));
385 ASSERT_TRUE(listHandles.empty());
389 TEST_F(routingInterfaceTest,setSourceStateNoChange)
392 am_sourceID_t sourceID;
394 am_domainID_t domainID;
397 am_SourceState_e state=SS_PAUSED;
398 pCF.createSource(source);
399 pCF.createDomain(domain);
401 domain.busname="mock";
403 source.sourceState=state;
404 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID));
405 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(source,sourceID));
406 EXPECT_CALL(pMockInterface,asyncSetSourceState(_,sourceID,state)).Times(0);
407 ASSERT_EQ(E_NO_CHANGE,pControlReceiver.setSourceState(handle,sourceID,state));
411 int main(int argc, char **argv)
413 ::testing::InitGoogleTest(&argc, argv);
414 return RUN_ALL_TESTS();