2 * Copyright (C) 2012, BMW AG
4 * This file is part of GENIVI Project AudioManager.
6 * Contributions are licensed to the GENIVI Alliance under one or more
7 * Contribution License Agreements.
10 * This Source Code Form is subject to the terms of the
11 * Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with
12 * this file, You can obtain one at http://mozilla.org/MPL/2.0/.
15 * \author Christian Mueller, christian.ei.mueller@bmw.de BMW 2011,2012
17 * For further information see http://www.genivi.org/.
21 #include "CAmDatabaseHandlerTest.h"
26 #include "shared/CAmDltWrapper.h"
29 using namespace testing;
31 //extern int GetRandomNumber(int nLow, int nHigh);
32 //extern bool equalSoundProperty (const am_SoundProperty_s a, const am_SoundProperty_s b);
33 extern bool equalMainSoundProperty(const am_MainSoundProperty_s a, const am_MainSoundProperty_s b);
34 //extern bool equalRoutingElement(const am_RoutingElement_s a, const am_RoutingElement_s b);
35 extern bool equalClassProperties(const am_ClassProperty_s a, const am_ClassProperty_s b);
36 extern std::string int2string(int i);
38 CAmDatabaseHandlerTest::CAmDatabaseHandlerTest() :
39 plistRoutingPluginDirs(), //
40 plistCommandPluginDirs(), //
42 pDatabaseHandler(std::string(":memory:")), //
43 pRoutingSender(plistRoutingPluginDirs), //
44 pCommandSender(plistCommandPluginDirs), //
46 pRoutingInterfaceBackdoor(), //
47 pCommandInterfaceBackdoor(), //
48 pControlSender(""), //
49 pRouter(&pDatabaseHandler, &pControlSender), //
50 pControlReceiver(&pDatabaseHandler, &pRoutingSender, &pCommandSender, &pSocketHandler, &pRouter), //
51 pObserver(&pCommandSender,&pRoutingSender, &pSocketHandler)
53 pDatabaseHandler.registerObserver(&pObserver);
54 pCommandInterfaceBackdoor.injectInterface(&pCommandSender, &pMockInterface);
57 CAmDatabaseHandlerTest::~CAmDatabaseHandlerTest()
61 void CAmDatabaseHandlerTest::createMainConnectionSetup()
63 //fill the connection database
64 am_Connection_s connection;
67 std::vector<am_connectionID_t> connectionList;
69 //we create 9 sources and sinks:
73 for (uint16_t i = 1; i < 10; i++)
75 am_sinkID_t forgetSink;
76 am_sourceID_t forgetSource;
77 am_connectionID_t connectionID;
81 sink.name = "sink" + int2string(i);
83 pCF.createSource(source);
85 source.name = "source" + int2string(i);
88 connection.sinkID = i;
89 connection.sourceID = i;
90 connection.delay = -1;
91 connection.connectionFormat = CF_GENIVI_ANALOG;
92 connection.connectionID = 0;
94 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,forgetSink));
95 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,forgetSource));
96 ASSERT_EQ(E_OK, pDatabaseHandler.enterConnectionDB(connection,connectionID));
97 ASSERT_EQ(E_OK, pDatabaseHandler.changeConnectionFinal(connectionID));
98 connectionList.push_back(connectionID);
102 //create a mainConnection
103 am_MainConnection_s mainConnection;
104 am_mainConnectionID_t mainConnectionID;
105 std::vector<am_MainConnection_s> mainConnectionList;
106 mainConnection.listConnectionID = connectionList;
107 mainConnection.mainConnectionID = 0;
108 mainConnection.sinkID = 1;
109 mainConnection.sourceID = 1;
110 mainConnection.connectionState = CS_CONNECTED;
111 mainConnection.delay = -1;
113 //enter mainconnection in database
116 ASSERT_EQ(E_OK, pDatabaseHandler.enterMainConnectionDB(mainConnection,mainConnectionID));
117 ASSERT_NE(0, mainConnectionID);
119 //read out the mainconnections and check if they are equal to the data written.
120 ASSERT_EQ(E_OK, pDatabaseHandler.getListMainConnections(mainConnectionList));
122 std::vector<am_MainConnection_s>::iterator listIterator = mainConnectionList.begin();
123 for (; listIterator < mainConnectionList.end(); ++listIterator)
125 if (listIterator->mainConnectionID == mainConnectionID)
127 equal = equal && (listIterator->connectionState == mainConnection.connectionState) && (listIterator->sinkID == mainConnection.sinkID) && (listIterator->sourceID == mainConnection.sourceID) && (listIterator->delay == mainConnection.delay) && (std::equal(listIterator->listConnectionID.begin(), listIterator->listConnectionID.end(), connectionList.begin()));
130 ASSERT_EQ(true, equal);
133 void CAmDatabaseHandlerTest::SetUp()
137 void CAmDatabaseHandlerTest::TearDown()
141 TEST_F(CAmDatabaseHandlerTest,getMainConnectionInfo)
143 //fill the connection database
144 am_Connection_s connection;
147 std::vector<am_connectionID_t> connectionList;
149 //we create 9 sources and sinks:
153 for (uint16_t i = 1; i < 10; i++)
155 am_sinkID_t forgetSink;
156 am_sourceID_t forgetSource;
157 am_connectionID_t connectionID;
159 pCF.createSink(sink);
161 sink.name = "sink" + int2string(i);
163 pCF.createSource(source);
165 source.name = "source" + int2string(i);
168 connection.sinkID = i;
169 connection.sourceID = i;
170 connection.delay = -1;
171 connection.connectionFormat = CF_GENIVI_ANALOG;
172 connection.connectionID = 0;
174 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,forgetSink));
175 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,forgetSource));
176 ASSERT_EQ(E_OK, pDatabaseHandler.enterConnectionDB(connection,connectionID));
177 ASSERT_EQ(E_OK, pDatabaseHandler.changeConnectionFinal(connectionID));
178 connectionList.push_back(connectionID);
182 //create a mainConnection
183 am_MainConnection_s mainConnection;
184 am_mainConnectionID_t mainConnectionID;
185 std::vector<am_MainConnection_s> mainConnectionList;
186 mainConnection.listConnectionID = connectionList;
187 mainConnection.mainConnectionID = 0;
188 mainConnection.sinkID = 1;
189 mainConnection.sourceID = 1;
190 mainConnection.connectionState = CS_CONNECTED;
191 mainConnection.delay = -1;
193 //enter mainconnection in database
196 ASSERT_EQ(E_OK, pDatabaseHandler.enterMainConnectionDB(mainConnection,mainConnectionID));
197 ASSERT_NE(0, mainConnectionID);
199 //read out the mainconnections and check if they are equal to the data written.
200 ASSERT_EQ(E_OK, pDatabaseHandler.getListMainConnections(mainConnectionList));
202 std::vector<am_MainConnection_s>::iterator listIterator = mainConnectionList.begin();
203 for (; listIterator < mainConnectionList.end(); ++listIterator)
205 if (listIterator->mainConnectionID == mainConnectionID)
207 equal = equal && (listIterator->connectionState == mainConnection.connectionState) && (listIterator->sinkID == mainConnection.sinkID) && (listIterator->sourceID == mainConnection.sourceID) && (listIterator->delay == mainConnection.delay) && (std::equal(listIterator->listConnectionID.begin(), listIterator->listConnectionID.end(), connectionList.begin()));
209 }ASSERT_EQ(true, equal);
211 am_MainConnection_s mainConnectionT;
212 ASSERT_EQ(E_OK, pDatabaseHandler.getMainConnectionInfoDB(mainConnectionID,mainConnectionT));
213 ASSERT_TRUE( (mainConnection.connectionState==mainConnectionT.connectionState) && (mainConnection.delay==mainConnectionT.delay) && (std::equal(mainConnection.listConnectionID.begin(),mainConnection.listConnectionID.end(),mainConnectionT.listConnectionID.begin())) && (mainConnection.sinkID==mainConnectionT.sinkID) && (mainConnection.sourceID==mainConnectionT.sourceID) && (mainConnectionID==mainConnectionT.mainConnectionID));
217 TEST_F(CAmDatabaseHandlerTest,getSinKInfo)
219 //fill the connection database
220 am_Sink_s staticSink, firstDynamicSink, secondDynamicSink;
221 am_sinkID_t staticSinkID, firstDynamicSinkID, secondDynamicSinkID;
222 std::vector<am_Sink_s> sinkList;
224 pCF.createSink(staticSink);
225 staticSink.sinkID = 4;
228 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(staticSink,staticSinkID))
229 << "ERROR: database error";
230 ASSERT_EQ(staticSink.sinkID,staticSinkID)
231 << "ERROR: ID not the one given in staticSink";
233 pCF.createSink(firstDynamicSink);
234 firstDynamicSink.name = "firstdynamic";
235 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(firstDynamicSink,firstDynamicSinkID))
236 << "ERROR: database error";
237 ASSERT_EQ(firstDynamicSinkID,DYNAMIC_ID_BOUNDARY)
238 << "ERROR: ID not the one given in firstDynamicSink";
240 pCF.createSink(secondDynamicSink);
241 secondDynamicSink.name = "seconddynamic";
243 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(secondDynamicSink,secondDynamicSinkID))
244 << "ERROR: database error";
245 ASSERT_NEAR(secondDynamicSinkID,DYNAMIC_ID_BOUNDARY,10)
246 << "ERROR: ID not the one given in secondDynamicSink";
248 //now read back and check the returns agains the given values
249 ASSERT_EQ(E_OK,pDatabaseHandler.getListSinks(sinkList))
250 << "ERROR: database error";
253 std::vector<am_Sink_s>::iterator listIterator = sinkList.begin();
254 for (; listIterator < sinkList.end(); ++listIterator)
256 if (listIterator->sinkID == staticSinkID)
258 equal = equal && pCF.compareSink(listIterator, staticSink);
261 if (listIterator->sinkID == firstDynamicSinkID)
263 equal = equal && pCF.compareSink(listIterator, firstDynamicSink);
266 if (listIterator->sinkID == secondDynamicSinkID)
268 equal = equal && pCF.compareSink(listIterator, secondDynamicSink);
270 }ASSERT_EQ(true, equal);
273 ASSERT_EQ(E_OK, pDatabaseHandler.getSinkInfoDB(secondDynamicSinkID,sinkData));
274 ASSERT_TRUE( (secondDynamicSink.available.availability == sinkData.available.availability) && (secondDynamicSink.available.availabilityReason == sinkData.available.availabilityReason) && (secondDynamicSink.sinkClassID == sinkData.sinkClassID) && (secondDynamicSink.domainID == sinkData.domainID) && (secondDynamicSink.visible == sinkData.visible) && (secondDynamicSink.name.compare(sinkData.name) == 0) && (secondDynamicSink.volume == sinkData.volume) && std::equal(secondDynamicSink.listConnectionFormats.begin(), secondDynamicSink.listConnectionFormats.end(), sinkData.listConnectionFormats.begin()) && std::equal(secondDynamicSink.listMainSoundProperties.begin(), secondDynamicSink.listMainSoundProperties.end(), sinkData.listMainSoundProperties.begin(), equalMainSoundProperty));
278 TEST_F(CAmDatabaseHandlerTest,getSourceInfo)
280 //fill the connection database
281 am_Source_s staticSource, firstDynamicSource, secondDynamicSource;
282 am_sourceID_t staticSourceID, firstDynamicSourceID, secondDynamicSourceID;
283 std::vector<am_Source_s> sourceList;
285 pCF.createSource(staticSource);
286 staticSource.sourceID = 4;
287 staticSource.name = "Static";
290 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(staticSource,staticSourceID))
291 << "ERROR: database error";
292 ASSERT_EQ(staticSource.sourceID,staticSourceID)
293 << "ERROR: ID not the one given in staticSource";
295 pCF.createSource(firstDynamicSource);
296 firstDynamicSource.name = "firstDynamicSource";
298 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(firstDynamicSource,firstDynamicSourceID))
299 << "ERROR: database error";
300 ASSERT_EQ(firstDynamicSourceID,DYNAMIC_ID_BOUNDARY)
301 << "ERROR: ID not the one given in firstDynamicSink";
303 pCF.createSource(secondDynamicSource);
304 secondDynamicSource.name = "secondDynamicSource";
306 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(secondDynamicSource,secondDynamicSourceID))
307 << "ERROR: database error";
308 ASSERT_NEAR(secondDynamicSourceID,DYNAMIC_ID_BOUNDARY,10)
309 << "ERROR: ID not the one given in secondDynamicSink";
311 //now read back and check the returns agains the given values
312 ASSERT_EQ(E_OK,pDatabaseHandler.getListSources(sourceList))
313 << "ERROR: database error";
316 std::vector<am_Source_s>::iterator listIterator = sourceList.begin();
317 for (; listIterator < sourceList.end(); ++listIterator)
319 if (listIterator->sourceID == staticSourceID)
321 equal = equal && pCF.compareSource(listIterator, staticSource);
324 if (listIterator->sourceID == firstDynamicSourceID)
326 equal = equal && pCF.compareSource(listIterator, firstDynamicSource);
329 if (listIterator->sourceID == secondDynamicSourceID)
331 equal = equal && pCF.compareSource(listIterator, secondDynamicSource);
334 }ASSERT_EQ(true, equal);
336 am_Source_s sourceData;
337 ASSERT_EQ(E_OK, pDatabaseHandler.getSourceInfoDB(secondDynamicSourceID,sourceData));
339 (secondDynamicSource.available.availability == sourceData.available.availability) && (secondDynamicSource.available.availabilityReason == sourceData.available.availabilityReason) && (secondDynamicSource.sourceClassID == sourceData.sourceClassID) && (secondDynamicSource.domainID == sourceData.domainID) && (secondDynamicSource.interruptState == sourceData.interruptState) && (secondDynamicSource.visible == sourceData.visible) && (secondDynamicSource.name.compare(sourceData.name) == 0) && (secondDynamicSource.volume == sourceData.volume) && std::equal(secondDynamicSource.listConnectionFormats.begin(), secondDynamicSource.listConnectionFormats.end(), sourceData.listConnectionFormats.begin()) && std::equal(secondDynamicSource.listMainSoundProperties.begin(), secondDynamicSource.listMainSoundProperties.end(), sourceData.listMainSoundProperties.begin(), equalMainSoundProperty));
343 TEST_F(CAmDatabaseHandlerTest, peekSourceID)
346 std::string sourceName("myClassID");
347 am_sourceClass_t sourceClassID, peekID;
348 am_SourceClass_s sourceClass;
349 am_ClassProperty_s classProperty;
350 classProperty.classProperty = CP_GENIVI_SOURCE_TYPE;
351 classProperty.value = 13;
352 sourceClass.name = sourceName;
353 sourceClass.sourceClassID = 0;
354 sourceClass.listClassProperties.push_back(classProperty);
356 //first we peek without an existing class
357 ASSERT_EQ(E_NON_EXISTENT, pDatabaseHandler.peekSourceClassID(sourceName,sourceClassID));
359 //now we enter the class into the database
360 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceClassDB(sourceClassID,sourceClass));
362 //first we peek without an existing class
363 ASSERT_EQ(E_OK, pDatabaseHandler.peekSourceClassID(sourceName,peekID));
364 ASSERT_EQ(sourceClassID, peekID);
367 TEST_F(CAmDatabaseHandlerTest, peekSinkID)
370 std::string sinkName("myClassID");
371 am_sinkClass_t sinkClassID, peekID;
372 am_SinkClass_s sinkClass;
373 am_ClassProperty_s classProperty;
374 classProperty.classProperty = CP_GENIVI_SOURCE_TYPE;
375 classProperty.value = 13;
376 sinkClass.name = sinkName;
377 sinkClass.sinkClassID = 0;
378 sinkClass.listClassProperties.push_back(classProperty);
380 //first we peek without an existing class
381 ASSERT_EQ(E_NON_EXISTENT, pDatabaseHandler.peekSinkClassID(sinkName,sinkClassID));
383 //now we enter the class into the database
384 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkClassDB(sinkClass,sinkClassID));
386 //first we peek without an existing class
387 ASSERT_EQ(E_OK, pDatabaseHandler.peekSinkClassID(sinkName,peekID));
388 ASSERT_EQ(sinkClassID, peekID);
391 TEST_F(CAmDatabaseHandlerTest,crossfaders)
396 am_Crossfader_s crossfader;
397 am_crossfaderID_t crossfaderID;
398 am_Sink_s sinkA, sinkB;
400 am_sourceID_t sourceID;
401 am_sinkID_t sinkAID, sinkBID;
402 pCF.createSink(sinkA);
403 pCF.createSink(sinkB);
404 sinkB.name = "sinkB";
405 pCF.createSource(source);
407 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
408 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sinkA,sinkAID));
409 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sinkB,sinkBID));
411 crossfader.crossfaderID = 0;
412 crossfader.hotSink = HS_SINKA;
413 crossfader.sinkID_A = sinkAID;
414 crossfader.sinkID_B = sinkBID;
415 crossfader.sourceID = sourceID;
416 crossfader.name = "Crossfader";
417 crossfader.hotSink = HS_UNKNOWN;
419 std::vector<am_Crossfader_s> listCrossfaders;
421 ASSERT_EQ(E_OK, pDatabaseHandler.enterCrossfaderDB(crossfader,crossfaderID));
422 ASSERT_EQ(E_OK, pDatabaseHandler.getListCrossfaders(listCrossfaders));
423 ASSERT_EQ(crossfader.sinkID_A, listCrossfaders[0].sinkID_A);
424 ASSERT_EQ(crossfader.sinkID_B, listCrossfaders[0].sinkID_B);
425 ASSERT_EQ(crossfader.sourceID, listCrossfaders[0].sourceID);
426 ASSERT_EQ(crossfader.hotSink, listCrossfaders[0].hotSink);
427 ASSERT_EQ(100, listCrossfaders[0].crossfaderID);
428 ASSERT_EQ(crossfader.name.compare(listCrossfaders[0].name), 0);
431 TEST_F(CAmDatabaseHandlerTest,crossfadersGetFromDomain)
436 am_Crossfader_s crossfader;
437 am_crossfaderID_t crossfaderID;
438 am_Sink_s sinkA, sinkB;
440 am_sourceID_t sourceID;
441 am_sinkID_t sinkAID, sinkBID;
442 am_domainID_t domainID;
444 pCF.createSink(sinkA);
445 pCF.createSink(sinkB);
446 pCF.createDomain(domain);
447 sinkB.name = "sinkB";
448 pCF.createSource(source);
449 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID));
450 source.domainID = domainID;
451 sinkA.domainID = domainID;
452 sinkB.domainID = domainID;
454 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
455 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sinkA,sinkAID));
456 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sinkB,sinkBID));
458 crossfader.crossfaderID = 0;
459 crossfader.hotSink = HS_SINKA;
460 crossfader.sinkID_A = sinkAID;
461 crossfader.sinkID_B = sinkBID;
462 crossfader.sourceID = sourceID;
463 crossfader.name = "Crossfader";
464 crossfader.hotSink = HS_UNKNOWN;
466 std::vector<am_crossfaderID_t> listCrossfaders;
468 ASSERT_EQ(E_OK, pDatabaseHandler.enterCrossfaderDB(crossfader,crossfaderID));
469 ASSERT_EQ(E_OK, pDatabaseHandler.getListCrossfadersOfDomain(source.domainID,listCrossfaders));
470 ASSERT_EQ(100, listCrossfaders[0]);
474 TEST_F(CAmDatabaseHandlerTest,sourceState)
477 am_sourceID_t sourceID;
478 std::vector<am_Source_s> listSources;
479 pCF.createSource(source);
480 source.sourceState = SS_OFF;
484 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
486 //change the source state
487 ASSERT_EQ(E_OK, pDatabaseHandler.changeSourceState(sourceID,SS_ON));
489 //read out the changed values
490 ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources));
491 ASSERT_EQ(listSources[0].sourceState, SS_ON);
494 TEST_F(CAmDatabaseHandlerTest,sinkVolumeChange)
498 std::vector<am_Sink_s> listSinks;
499 pCF.createSink(sink);
504 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
506 //change the volume and check the read out
507 ASSERT_EQ(E_OK, pDatabaseHandler.changeSinkVolume(sinkID,34));
508 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinks(listSinks));
509 ASSERT_EQ(listSinks[0].volume, 34);
512 TEST_F(CAmDatabaseHandlerTest,sourceVolumeChange)
515 am_sourceID_t sourceID;
516 std::vector<am_Source_s> listSources;
517 pCF.createSource(source);
522 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
524 //change the volume and check the read out
525 ASSERT_EQ(E_OK, pDatabaseHandler.changeSourceVolume(sourceID,34));
526 ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources));
527 ASSERT_EQ(listSources[0].volume, 34);
530 TEST_F(CAmDatabaseHandlerTest, peekSource)
532 std::vector<am_Source_s> listSources;
533 am_sourceID_t sourceID, source2ID, source3ID;
535 pCF.createSource(source);
537 //peek a source that does not exits
539 ASSERT_EQ(E_OK, pDatabaseHandler.peekSource(std::string("newsource"),sourceID));
541 //make sure it is not in the list
542 ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources));
543 ASSERT_TRUE(listSources.empty());
544 ASSERT_EQ(sourceID, 100);
546 //now enter the source with the same name and make sure it does not get a new ID
547 source.name = "newsource";
549 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,source2ID));
550 ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources));
551 ASSERT_EQ(sourceID, source2ID);
552 ASSERT_TRUE(listSources[0].sourceID==sourceID);
554 //now we peek again. This time, the source exists
555 ASSERT_EQ(E_OK, pDatabaseHandler.peekSource(source.name,source3ID));
556 ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources));
557 ASSERT_TRUE(listSources.size()==1);
558 ASSERT_EQ(source3ID, source2ID);
561 TEST_F(CAmDatabaseHandlerTest, peekSourceDouble)
563 std::vector<am_Source_s> listSources;
564 am_sourceID_t sourceID;
565 am_sourceID_t source2ID;
566 am_sourceID_t source3ID;
568 pCF.createSource(source);
570 //peek a source that does not exits
572 ASSERT_EQ(E_OK, pDatabaseHandler.peekSource(std::string("newsource"),sourceID));
574 //peek a second source that does not exits
576 ASSERT_EQ(E_OK, pDatabaseHandler.peekSource(std::string("newsource2"),source2ID));
578 //make sure they are is not in the list
579 ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources));
580 ASSERT_TRUE(listSources.empty());
581 ASSERT_EQ(sourceID, 100);
582 source.name = "newsource";
584 //now enter the source with the same name than the first peek and make sure it does not get a new ID
586 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,source3ID));
587 ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources));
588 ASSERT_EQ(sourceID, source3ID);
589 ASSERT_TRUE(listSources[0].sourceID==sourceID);
592 TEST_F(CAmDatabaseHandlerTest, peekSink)
594 std::vector<am_Sink_s> listSinks;
595 am_sinkID_t sinkID, sink2ID, sink3ID;
597 pCF.createSink(sink);
599 //peek a sink that does not exits
601 ASSERT_EQ(E_OK, pDatabaseHandler.peekSink(std::string("newsink"),sinkID));
603 //make sure it is not in the list
604 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinks(listSinks));
605 ASSERT_TRUE(listSinks.empty());
606 ASSERT_EQ(sinkID, 100);
607 sink.name = "newsink";
609 //now enter the source with the same name and make sure it does not get a new ID
611 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sink2ID));
612 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinks(listSinks));
613 ASSERT_EQ(sinkID, sink2ID);
614 ASSERT_TRUE(listSinks[0].sinkID==sinkID);
616 //now we peek again, this time, the sink exists
617 ASSERT_EQ(E_OK, pDatabaseHandler.peekSink(sink.name,sink3ID));
618 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinks(listSinks));
619 ASSERT_TRUE(listSinks.size()==1);
620 ASSERT_EQ(sink3ID, sink2ID);
623 TEST_F(CAmDatabaseHandlerTest, peekSinkDouble)
625 std::vector<am_Sink_s> listSinks;
630 pCF.createSink(sink);
632 //peek a sink that does not exits
634 ASSERT_EQ(E_OK, pDatabaseHandler.peekSink(std::string("newsink"),sinkID));
638 ASSERT_EQ(E_OK, pDatabaseHandler.peekSink(std::string("nextsink"),sink2ID));
640 //make sure they are is not in the list
641 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinks(listSinks));
642 ASSERT_TRUE(listSinks.empty());
643 ASSERT_EQ(sinkID, 100);
644 sink.name = "newsink";
646 //now enter the sink with the same name than the first peek and make sure it does not get a new ID
648 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sink3ID));
649 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinks(listSinks));
650 ASSERT_EQ(sinkID, sink3ID);
651 ASSERT_TRUE(listSinks[0].sinkID==sinkID);
654 TEST_F(CAmDatabaseHandlerTest,changeConnectionTimingInformationCheckMainConnection)
656 std::vector<am_Connection_s> connectionList;
657 std::vector<am_MainConnectionType_s> mainList;
659 //prepare the test, it is one mainconnection, so we expect one callback
660 createMainConnectionSetup();
662 //first get all visible mainconnections and make sure, the delay is set to -1 for the first entry
663 ASSERT_EQ(E_OK, pDatabaseHandler.getListVisibleMainConnections(mainList));
664 ASSERT_EQ(mainList[0].delay, -1);
666 //no go through all connections and set the delay time to 24 for each connection
667 ASSERT_EQ(E_OK, pDatabaseHandler.getListConnections(connectionList));
668 std::vector<am_Connection_s>::iterator iteratorConnectionList = connectionList.begin();
669 for (; iteratorConnectionList < connectionList.end(); ++iteratorConnectionList)
671 ASSERT_EQ(E_OK, pDatabaseHandler.changeConnectionTimingInformation(iteratorConnectionList->sinkID,24));
674 //we read the result again and expect that the value is now different from -1
675 ASSERT_EQ(E_OK, pDatabaseHandler.getListVisibleMainConnections(mainList));
676 ASSERT_EQ(mainList[0].delay, 216);
679 TEST_F(CAmDatabaseHandlerTest,changeConnectionTimingInformation)
681 am_Connection_s connection;
682 am_connectionID_t connectionID;
683 std::vector<am_Connection_s> connectionList;
684 pCF.createConnection(connection);
687 ASSERT_EQ(E_OK, pDatabaseHandler.enterConnectionDB(connection,connectionID));
688 ASSERT_EQ(E_OK, pDatabaseHandler.changeConnectionFinal(connectionID));
690 //change the timing and check it
691 ASSERT_EQ(E_OK, pDatabaseHandler.changeConnectionTimingInformation(connectionID,24));
692 ASSERT_EQ(E_OK, pDatabaseHandler.getListConnections(connectionList));
693 ASSERT_TRUE(connectionList[0].delay==24);
696 TEST_F(CAmDatabaseHandlerTest,getSinkClassOfSink)
698 std::vector<am_SinkClass_s> sinkClassList;
699 std::vector<am_ClassProperty_s> classPropertyList;
700 am_SinkClass_s sinkClass, returnClass;
701 am_ClassProperty_s classProperty;
702 am_sinkClass_t sinkClassID;
705 classProperty.classProperty = CP_GENIVI_SINK_TYPE;
706 classProperty.value = 1;
707 classPropertyList.push_back(classProperty);
708 classProperty.classProperty = CP_GENIVI_SOURCE_TYPE;
709 classProperty.value = 4;
710 classPropertyList.push_back(classProperty);
711 sinkClass.name = "test";
712 sinkClass.sinkClassID = 4;
713 sinkClass.listClassProperties = classPropertyList;
714 pCF.createSink(sink);
715 sink.sinkClassID = 4;
719 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
721 //enter a new sinkclass, read out again and check
723 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkClassDB(sinkClass,sinkClassID));
724 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinkClasses(sinkClassList));
725 ASSERT_EQ(sinkClassList[0].name, sinkClass.name);
726 ASSERT_EQ(sinkClassList[0].sinkClassID, 4);
727 ASSERT_TRUE(std::equal(sinkClassList[0].listClassProperties.begin(),sinkClassList[0].listClassProperties.end(),classPropertyList.begin(),equalClassProperties));
728 ASSERT_EQ(E_OK, pDatabaseHandler.getSinkClassInfoDB(sinkID,returnClass));
729 ASSERT_EQ(sinkClassList[0].name, returnClass.name);
730 ASSERT_EQ(sinkClassList[0].sinkClassID, returnClass.sinkClassID);
731 ASSERT_TRUE(std::equal(sinkClassList[0].listClassProperties.begin(),sinkClassList[0].listClassProperties.end(),returnClass.listClassProperties.begin(),equalClassProperties));
734 TEST_F(CAmDatabaseHandlerTest,getSourceClassOfSource)
736 std::vector<am_SourceClass_s> sourceClassList;
737 std::vector<am_ClassProperty_s> classPropertyList;
738 am_SourceClass_s sourceClass, sinkSourceClass;
739 am_ClassProperty_s classProperty;
740 am_sourceClass_t sourceClassID;
742 am_sourceID_t sourceID;
743 classProperty.classProperty = CP_GENIVI_SINK_TYPE;
744 classProperty.value = 1;
745 classPropertyList.push_back(classProperty);
746 classProperty.classProperty = CP_GENIVI_SOURCE_TYPE;
747 classProperty.value = 4;
748 classPropertyList.push_back(classProperty);
749 sourceClass.name = "test";
750 sourceClass.sourceClassID = 1;
751 sourceClass.listClassProperties = classPropertyList;
752 pCF.createSource(source);
755 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
757 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceClassDB(sourceClassID,sourceClass));
758 ASSERT_EQ(E_OK, pDatabaseHandler.getListSourceClasses(sourceClassList));
759 ASSERT_EQ(sourceClassList[0].name, sourceClass.name);
760 ASSERT_EQ(sourceClassList[0].sourceClassID, 1);
761 ASSERT_TRUE(std::equal(sourceClassList[0].listClassProperties.begin(),sourceClassList[0].listClassProperties.end(),classPropertyList.begin(),equalClassProperties));
762 ASSERT_EQ(E_OK, pDatabaseHandler.getSourceClassInfoDB(sourceID,sinkSourceClass));
763 ASSERT_EQ(sourceClassList[0].name, sinkSourceClass.name);
764 ASSERT_EQ(sourceClassList[0].sourceClassID, sinkSourceClass.sourceClassID);
765 ASSERT_TRUE(std::equal(sourceClassList[0].listClassProperties.begin(),sourceClassList[0].listClassProperties.end(),sinkSourceClass.listClassProperties.begin(),equalClassProperties));
768 TEST_F(CAmDatabaseHandlerTest,removeSourceClass)
770 std::vector<am_SourceClass_s> sourceClassList;
771 std::vector<am_ClassProperty_s> classPropertyList;
772 am_SourceClass_s sourceClass;
773 am_ClassProperty_s classProperty;
774 am_sourceClass_t sourceClassID;
775 classProperty.classProperty = CP_GENIVI_SINK_TYPE;
776 classProperty.value = 1;
777 classPropertyList.push_back(classProperty);
778 classProperty.classProperty = CP_GENIVI_SOURCE_TYPE;
779 classProperty.value = 4;
780 classPropertyList.push_back(classProperty);
781 sourceClass.name = "test";
782 sourceClass.sourceClassID = 3;
783 sourceClass.listClassProperties = classPropertyList;
786 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceClassDB(sourceClassID,sourceClass));
787 ASSERT_EQ(E_OK, pDatabaseHandler.getListSourceClasses(sourceClassList));
788 ASSERT_EQ(sourceClassList[0].name, sourceClass.name);
789 ASSERT_EQ(sourceClassList[0].sourceClassID, 3);
790 ASSERT_TRUE(std::equal(sourceClassList[0].listClassProperties.begin(),sourceClassList[0].listClassProperties.end(),classPropertyList.begin(),equalClassProperties));
791 ASSERT_EQ(E_OK, pDatabaseHandler.removeSourceClassDB(3));
792 ASSERT_EQ(E_OK, pDatabaseHandler.getListSourceClasses(sourceClassList));
793 ASSERT_TRUE(sourceClassList.empty());
796 TEST_F(CAmDatabaseHandlerTest,updateSourceClass)
798 std::vector<am_SourceClass_s> sourceClassList;
799 std::vector<am_ClassProperty_s> classPropertyList, changedPropertyList;
800 am_SourceClass_s sourceClass, changedClass;
801 am_ClassProperty_s classProperty;
802 am_sourceClass_t sourceClassID;
803 classProperty.classProperty = CP_GENIVI_SINK_TYPE;
804 classProperty.value = 1;
805 classPropertyList.push_back(classProperty);
806 classProperty.classProperty = CP_GENIVI_SOURCE_TYPE;
807 classProperty.value = 4;
808 classPropertyList.push_back(classProperty);
809 sourceClass.name = "test";
810 sourceClass.sourceClassID = 0;
811 sourceClass.listClassProperties = classPropertyList;
812 changedClass = sourceClass;
813 changedClass.listClassProperties[1].value = 6;
814 changedPropertyList = changedClass.listClassProperties;
816 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceClassDB(sourceClassID,sourceClass));
817 changedClass.sourceClassID = sourceClassID;
818 ASSERT_EQ(E_OK, pDatabaseHandler.getListSourceClasses(sourceClassList));
819 ASSERT_EQ(sourceClassList[0].name, sourceClass.name);
820 ASSERT_EQ(sourceClassList[0].sourceClassID, 100);
821 ASSERT_TRUE(std::equal(sourceClassList[0].listClassProperties.begin(),sourceClassList[0].listClassProperties.end(),classPropertyList.begin(),equalClassProperties));
822 ASSERT_EQ(E_OK, pDatabaseHandler.changeSourceClassInfoDB(changedClass));
823 ASSERT_EQ(E_OK, pDatabaseHandler.getListSourceClasses(sourceClassList));
824 ASSERT_EQ(sourceClassList[0].name, sourceClass.name);
825 ASSERT_EQ(sourceClassList[0].sourceClassID, 100);
826 ASSERT_TRUE(std::equal(sourceClassList[0].listClassProperties.begin(),sourceClassList[0].listClassProperties.end(),changedPropertyList.begin(),equalClassProperties));
829 TEST_F(CAmDatabaseHandlerTest,enterSourceClass)
831 std::vector<am_SourceClass_s> sourceClassList;
832 std::vector<am_ClassProperty_s> classPropertyList;
833 am_SourceClass_s sourceClass;
834 am_ClassProperty_s classProperty;
835 am_sourceClass_t sourceClassID;
836 classProperty.classProperty = CP_GENIVI_SINK_TYPE;
837 classProperty.value = 1;
838 classPropertyList.push_back(classProperty);
839 classProperty.classProperty = CP_GENIVI_SOURCE_TYPE;
840 classProperty.value = 4;
841 classPropertyList.push_back(classProperty);
842 sourceClass.name = "test";
843 sourceClass.sourceClassID = 0;
844 sourceClass.listClassProperties = classPropertyList;
847 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceClassDB(sourceClassID,sourceClass));
848 ASSERT_EQ(E_OK, pDatabaseHandler.getListSourceClasses(sourceClassList));
849 ASSERT_EQ(sourceClassList[0].name, sourceClass.name);
850 ASSERT_EQ(sourceClassList[0].sourceClassID, 100);
851 ASSERT_TRUE(std::equal(sourceClassList[0].listClassProperties.begin(),sourceClassList[0].listClassProperties.end(),classPropertyList.begin(),equalClassProperties));
854 TEST_F(CAmDatabaseHandlerTest,enterSourceClassStatic)
856 std::vector<am_SourceClass_s> sourceClassList;
857 std::vector<am_ClassProperty_s> classPropertyList;
858 am_SourceClass_s sourceClass;
859 am_ClassProperty_s classProperty;
860 am_sourceClass_t sourceClassID;
861 classProperty.classProperty = CP_GENIVI_SINK_TYPE;
862 classProperty.value = 1;
863 classPropertyList.push_back(classProperty);
864 classProperty.classProperty = CP_GENIVI_SOURCE_TYPE;
865 classProperty.value = 4;
866 classPropertyList.push_back(classProperty);
867 sourceClass.name = "test";
868 sourceClass.sourceClassID = 3;
869 sourceClass.listClassProperties = classPropertyList;
872 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceClassDB(sourceClassID,sourceClass));
873 ASSERT_EQ(E_OK, pDatabaseHandler.getListSourceClasses(sourceClassList));
874 ASSERT_EQ(sourceClassList[0].name, sourceClass.name);
875 ASSERT_EQ(sourceClassList[0].sourceClassID, 3);
876 ASSERT_TRUE(std::equal(sourceClassList[0].listClassProperties.begin(),sourceClassList[0].listClassProperties.end(),classPropertyList.begin(),equalClassProperties));
879 TEST_F(CAmDatabaseHandlerTest,removeSinkClass)
881 std::vector<am_SinkClass_s> sinkClassList;
882 std::vector<am_ClassProperty_s> classPropertyList;
883 am_SinkClass_s sinkClass;
884 am_ClassProperty_s classProperty;
885 am_sinkClass_t sinkClassID;
886 classProperty.classProperty = CP_GENIVI_SINK_TYPE;
887 classProperty.value = 1;
888 classPropertyList.push_back(classProperty);
889 classProperty.classProperty = CP_GENIVI_SOURCE_TYPE;
890 classProperty.value = 4;
891 classPropertyList.push_back(classProperty);
892 sinkClass.name = "test";
893 sinkClass.sinkClassID = 0;
894 sinkClass.listClassProperties = classPropertyList;
897 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkClassDB(sinkClass,sinkClassID));
898 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinkClasses(sinkClassList));
899 ASSERT_EQ(sinkClassList[0].name, sinkClass.name);
900 ASSERT_EQ(sinkClassList[0].sinkClassID, 100);
901 ASSERT_TRUE(std::equal(sinkClassList[0].listClassProperties.begin(),sinkClassList[0].listClassProperties.end(),classPropertyList.begin(),equalClassProperties));
902 ASSERT_EQ(E_OK, pDatabaseHandler.removeSinkClassDB(sinkClassID));
903 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinkClasses(sinkClassList));
904 ASSERT_TRUE(sinkClassList.empty());
907 TEST_F(CAmDatabaseHandlerTest,updateSinkClass)
909 std::vector<am_SinkClass_s> sinkClassList;
910 std::vector<am_ClassProperty_s> classPropertyList, changedPropertyList;
911 am_SinkClass_s sinkClass, changedClass;
912 am_ClassProperty_s classProperty;
913 am_sinkClass_t sinkClassID;
914 classProperty.classProperty = CP_GENIVI_SINK_TYPE;
915 classProperty.value = 1;
916 classPropertyList.push_back(classProperty);
917 classProperty.classProperty = CP_GENIVI_SOURCE_TYPE;
918 classProperty.value = 4;
919 classPropertyList.push_back(classProperty);
920 sinkClass.name = "test";
921 sinkClass.sinkClassID = 0;
922 sinkClass.listClassProperties = classPropertyList;
923 changedClass = sinkClass;
924 changedClass.listClassProperties[1].value = 6;
925 changedPropertyList = changedClass.listClassProperties;
927 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkClassDB(sinkClass,sinkClassID));
928 changedClass.sinkClassID = sinkClassID;
929 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinkClasses(sinkClassList));
930 ASSERT_EQ(sinkClassList[0].name, sinkClass.name);
931 ASSERT_EQ(sinkClassList[0].sinkClassID, 100);
932 ASSERT_TRUE(std::equal(sinkClassList[0].listClassProperties.begin(),sinkClassList[0].listClassProperties.end(),classPropertyList.begin(),equalClassProperties));
933 ASSERT_EQ(E_OK, pDatabaseHandler.changeSinkClassInfoDB(changedClass));
934 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinkClasses(sinkClassList));
935 ASSERT_EQ(sinkClassList[0].name, sinkClass.name);
936 ASSERT_EQ(sinkClassList[0].sinkClassID, 100);
937 ASSERT_TRUE(std::equal(sinkClassList[0].listClassProperties.begin(),sinkClassList[0].listClassProperties.end(),changedPropertyList.begin(),equalClassProperties));
940 TEST_F(CAmDatabaseHandlerTest,enterSinkClass)
942 std::vector<am_SinkClass_s> sinkClassList;
943 std::vector<am_ClassProperty_s> classPropertyList;
944 am_SinkClass_s sinkClass;
945 am_ClassProperty_s classProperty;
946 am_sinkClass_t sinkClassID;
947 classProperty.classProperty = CP_GENIVI_SINK_TYPE;
948 classProperty.value = 1;
949 classPropertyList.push_back(classProperty);
950 classProperty.classProperty = CP_GENIVI_SOURCE_TYPE;
951 classProperty.value = 4;
952 classPropertyList.push_back(classProperty);
953 sinkClass.name = "test";
954 sinkClass.sinkClassID = 0;
955 sinkClass.listClassProperties = classPropertyList;
958 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkClassDB(sinkClass,sinkClassID));
959 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinkClasses(sinkClassList));
960 ASSERT_EQ(sinkClassList[0].name, sinkClass.name);
961 ASSERT_EQ(sinkClassList[0].sinkClassID, 100);
962 ASSERT_TRUE(std::equal(sinkClassList[0].listClassProperties.begin(),sinkClassList[0].listClassProperties.end(),classPropertyList.begin(),equalClassProperties));
965 TEST_F(CAmDatabaseHandlerTest,enterSinkClassStatic)
967 std::vector<am_SinkClass_s> sinkClassList;
968 std::vector<am_ClassProperty_s> classPropertyList;
969 am_SinkClass_s sinkClass;
970 am_ClassProperty_s classProperty;
971 am_sinkClass_t sinkClassID;
972 classProperty.classProperty = CP_GENIVI_SINK_TYPE;
973 classProperty.value = 1;
974 classPropertyList.push_back(classProperty);
975 classProperty.classProperty = CP_GENIVI_SOURCE_TYPE;
976 classProperty.value = 4;
977 classPropertyList.push_back(classProperty);
978 sinkClass.name = "test";
979 sinkClass.sinkClassID = 4;
980 sinkClass.listClassProperties = classPropertyList;
983 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkClassDB(sinkClass,sinkClassID));
984 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinkClasses(sinkClassList));
985 ASSERT_EQ(sinkClassList[0].name, sinkClass.name);
986 ASSERT_EQ(sinkClassList[0].sinkClassID, 4);
987 ASSERT_TRUE(std::equal(sinkClassList[0].listClassProperties.begin(),sinkClassList[0].listClassProperties.end(),classPropertyList.begin(),equalClassProperties));
990 TEST_F(CAmDatabaseHandlerTest, changeSystemProperty)
992 std::vector<am_SystemProperty_s> listSystemProperties, listReturn;
993 am_SystemProperty_s systemProperty;
995 systemProperty.type = SYP_UNKNOWN;
996 systemProperty.value = 33;
997 listSystemProperties.push_back(systemProperty);
998 ASSERT_EQ(E_OK, pDatabaseHandler.enterSystemProperties(listSystemProperties));
999 systemProperty.value = 444;
1000 ASSERT_EQ(E_OK, pDatabaseHandler.changeSystemPropertyDB(systemProperty));
1001 ASSERT_EQ(E_OK, pDatabaseHandler.getListSystemProperties(listReturn));
1002 ASSERT_EQ(listReturn[0].type, systemProperty.type);
1003 ASSERT_EQ(listReturn[0].value, systemProperty.value);
1006 TEST_F(CAmDatabaseHandlerTest, systemProperties)
1008 std::vector<am_SystemProperty_s> listSystemProperties, listReturn;
1009 am_SystemProperty_s systemProperty;
1011 systemProperty.type = SYP_UNKNOWN;
1012 systemProperty.value = 33;
1013 listSystemProperties.push_back(systemProperty);
1015 ASSERT_EQ(E_OK, pDatabaseHandler.enterSystemProperties(listSystemProperties));
1016 ASSERT_EQ(E_OK, pDatabaseHandler.getListSystemProperties(listReturn));
1017 ASSERT_EQ(listReturn[0].type, systemProperty.type);
1018 ASSERT_EQ(listReturn[0].value, systemProperty.value);
1021 TEST_F(CAmDatabaseHandlerTest,enterSourcesCorrect)
1023 //fill the connection database
1024 am_Source_s staticSource, firstDynamicSource, secondDynamicSource;
1025 am_sourceID_t staticSourceID, firstDynamicSourceID, secondDynamicSourceID;
1026 std::vector<am_Source_s> sourceList;
1028 pCF.createSource(staticSource);
1029 staticSource.sourceID = 4;
1030 staticSource.name = "Static";
1033 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(staticSource,staticSourceID))
1034 << "ERROR: database error";
1035 ASSERT_EQ(staticSource.sourceID,staticSourceID)
1036 << "ERROR: ID not the one given in staticSource";
1038 pCF.createSource(firstDynamicSource);
1039 firstDynamicSource.name = "firstDynamicSource";
1041 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(firstDynamicSource,firstDynamicSourceID))
1042 << "ERROR: database error";
1043 ASSERT_EQ(firstDynamicSourceID,DYNAMIC_ID_BOUNDARY)
1044 << "ERROR: ID not the one given in firstDynamicSink";
1046 pCF.createSource(secondDynamicSource);
1047 secondDynamicSource.name = "secondDynamicSource";
1049 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(secondDynamicSource,secondDynamicSourceID))
1050 << "ERROR: database error";
1051 ASSERT_NEAR(secondDynamicSourceID,DYNAMIC_ID_BOUNDARY,10)
1052 << "ERROR: ID not the one given in secondDynamicSink";
1054 //now read back and check the returns agains the given values
1055 ASSERT_EQ(E_OK,pDatabaseHandler.getListSources(sourceList))
1056 << "ERROR: database error";
1059 std::vector<am_Source_s>::iterator listIterator = sourceList.begin();
1060 for (; listIterator < sourceList.end(); ++listIterator)
1062 if (listIterator->sourceID == staticSourceID)
1064 equal = equal && pCF.compareSource(listIterator, staticSource);
1067 if (listIterator->sourceID == firstDynamicSourceID)
1069 equal = equal && pCF.compareSource(listIterator, firstDynamicSource);
1072 if (listIterator->sourceID == secondDynamicSourceID)
1074 equal = equal && pCF.compareSource(listIterator, secondDynamicSource);
1078 ASSERT_EQ(true, equal);
1081 TEST_F(CAmDatabaseHandlerTest, changeSourceMainSoundProperty)
1083 std::vector<am_Source_s> listSources;
1085 am_sourceID_t sourceID;
1086 pCF.createSource(source);
1087 am_MainSoundProperty_s property;
1088 property.type = MSP_UNKNOWN;
1089 property.value = 33;
1091 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1093 ASSERT_EQ(E_OK, pDatabaseHandler.changeMainSourceSoundPropertyDB(property,sourceID));
1094 ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources));
1095 std::vector<am_MainSoundProperty_s>::iterator listIterator = listSources[0].listMainSoundProperties.begin();
1096 for (; listIterator < listSources[0].listMainSoundProperties.end(); ++listIterator)
1098 if (listIterator->type == property.type)
1100 ASSERT_EQ(listIterator->value, property.value);
1105 TEST_F(CAmDatabaseHandlerTest, changeSinkMuteState)
1107 std::vector<am_Sink_s> listSinks;
1110 pCF.createSink(sink);
1111 am_MuteState_e muteState = MS_MUTED;
1113 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1115 ASSERT_EQ(E_OK, pDatabaseHandler.changeSinkMuteStateDB(muteState,sinkID));
1116 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinks(listSinks));
1117 ASSERT_EQ(muteState, listSinks[0].muteState);
1120 TEST_F(CAmDatabaseHandlerTest, changeSinkMainSoundProperty)
1122 std::vector<am_Sink_s> listSinks;
1125 pCF.createSink(sink);
1126 am_MainSoundProperty_s property;
1127 property.type = MSP_UNKNOWN;
1128 property.value = 33;
1131 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1133 ASSERT_EQ(E_OK, pDatabaseHandler.changeMainSinkSoundPropertyDB(property,sinkID));
1134 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinks(listSinks));
1135 std::vector<am_MainSoundProperty_s>::iterator listIterator = listSinks[0].listMainSoundProperties.begin();
1136 for (; listIterator < listSinks[0].listMainSoundProperties.end(); ++listIterator)
1138 if (listIterator->type == property.type)
1140 ASSERT_EQ(listIterator->value, property.value);
1145 TEST_F(CAmDatabaseHandlerTest, peekDomain)
1147 std::vector<am_Domain_s> listDomains;
1149 am_domainID_t domainID;
1150 am_domainID_t domain2ID;
1151 pCF.createDomain(domain);
1152 ASSERT_EQ(E_OK, pDatabaseHandler.peekDomain(std::string("newdomain"),domainID));
1153 ASSERT_EQ(E_OK, pDatabaseHandler.getListDomains(listDomains));
1154 ASSERT_TRUE(listDomains.empty());
1155 ASSERT_EQ(domainID, 1);
1156 domain.name = "newdomain";
1157 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domain2ID));
1158 ASSERT_EQ(E_OK, pDatabaseHandler.getListDomains(listDomains));
1159 ASSERT_EQ(domainID, domain2ID);
1160 ASSERT_TRUE(listDomains[0].domainID==domainID);
1163 TEST_F(CAmDatabaseHandlerTest, peekDomainFirstEntered)
1165 std::vector<am_Domain_s> listDomains;
1167 am_domainID_t domainID;
1168 am_domainID_t domain2ID;
1169 pCF.createDomain(domain);
1170 domain.name = "newdomain";
1171 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID));
1172 ASSERT_EQ(E_OK, pDatabaseHandler.peekDomain(std::string("newdomain"),domain2ID));
1173 ASSERT_EQ(domainID, domain2ID);
1174 ASSERT_EQ(E_OK, pDatabaseHandler.getListDomains(listDomains));
1175 ASSERT_TRUE(listDomains.size()==1);
1178 TEST_F(CAmDatabaseHandlerTest, changeDomainState)
1180 std::vector<am_Domain_s> listDomains;
1182 am_domainID_t domainID;
1183 pCF.createDomain(domain);
1184 am_DomainState_e newState = DS_INDEPENDENT_STARTUP;
1185 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID));
1186 ASSERT_EQ(E_OK, pDatabaseHandler.changDomainStateDB(newState,domainID));
1187 ASSERT_EQ(E_OK, pDatabaseHandler.getListDomains(listDomains));
1188 ASSERT_EQ(newState, listDomains[0].state);
1191 TEST_F(CAmDatabaseHandlerTest, changeMainConnectionState)
1193 std::vector<am_MainConnection_s> listMainConnections;
1194 createMainConnectionSetup();
1196 ASSERT_EQ(E_OK, pDatabaseHandler.changeMainConnectionStateDB(1,CS_DISCONNECTING));
1197 ASSERT_EQ(E_OK, pDatabaseHandler.getListMainConnections(listMainConnections));
1198 ASSERT_EQ(CS_DISCONNECTING, listMainConnections[0].connectionState);
1201 TEST_F(CAmDatabaseHandlerTest, changeSinkAvailability)
1203 std::vector<am_Sink_s> listSinks;
1206 pCF.createSink(sink);
1207 am_Availability_s availability;
1208 availability.availability = A_UNKNOWN;
1209 availability.availabilityReason = AR_GENIVI_TEMPERATURE;
1212 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1213 ASSERT_EQ(E_OK, pDatabaseHandler.changeSinkAvailabilityDB(availability,sinkID));
1214 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinks(listSinks));
1215 ASSERT_EQ(availability.availability, listSinks[0].available.availability);
1216 ASSERT_EQ(availability.availabilityReason, listSinks[0].available.availabilityReason);
1219 TEST_F(CAmDatabaseHandlerTest, changeSourceAvailability)
1221 std::vector<am_Source_s> listSources;
1223 am_sourceID_t sourceID;
1224 pCF.createSource(source);
1225 am_Availability_s availability;
1226 availability.availability = A_UNKNOWN;
1227 availability.availabilityReason = AR_GENIVI_TEMPERATURE;
1228 source.visible = true;
1231 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1232 ASSERT_EQ(E_OK, pDatabaseHandler.changeSourceAvailabilityDB(availability,sourceID));
1233 ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources));
1234 ASSERT_EQ(availability.availability, listSources[0].available.availability);
1235 ASSERT_EQ(availability.availabilityReason, listSources[0].available.availabilityReason);
1238 TEST_F(CAmDatabaseHandlerTest,changeMainConnectionRoute)
1240 std::vector<am_MainConnection_s> originalList;
1241 std::vector<am_MainConnection_s> newList;
1242 createMainConnectionSetup();
1243 //fill the connection database
1244 am_Connection_s connection;
1247 std::vector<am_connectionID_t> listConnectionID;
1251 for (uint16_t i = 1; i < 10; i++)
1253 am_sinkID_t forgetSink;
1254 am_sourceID_t forgetSource;
1255 am_connectionID_t connectionID;
1257 connection.sinkID = i + 20;
1258 connection.sourceID = i + 20;
1259 connection.delay = -1;
1260 connection.connectionFormat = CF_GENIVI_ANALOG;
1261 connection.connectionID = 0;
1263 pCF.createSink(sink);
1264 sink.sinkID = i + 20;
1265 sink.name = "sink" + int2string(i + 20);
1267 pCF.createSource(source);
1268 source.sourceID = i + 20;
1269 source.name = "source" + int2string(i + 30);
1270 source.domainID = 4;
1272 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,forgetSink));
1273 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,forgetSource));
1274 ASSERT_EQ(E_OK, pDatabaseHandler.enterConnectionDB(connection,connectionID));
1275 listConnectionID.push_back(connectionID);
1276 ASSERT_EQ(E_OK, pDatabaseHandler.getListMainConnections(originalList));
1280 ASSERT_EQ(E_OK, pDatabaseHandler.changeMainConnectionRouteDB(1,listConnectionID));
1281 ASSERT_EQ(E_OK, pDatabaseHandler.getListMainConnections(newList));
1282 ASSERT_FALSE(std::equal(newList[0].listConnectionID.begin(),newList[0].listConnectionID.end(),originalList[0].listConnectionID.begin()));
1285 TEST_F(CAmDatabaseHandlerTest,changeMainSinkVolume)
1289 am_mainVolume_t newVol = 20;
1290 std::vector<am_Sink_s> listSinks;
1291 pCF.createSink(sink);
1294 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1296 ASSERT_EQ(E_OK, pDatabaseHandler.changeSinkMainVolumeDB(newVol,sinkID));
1297 ASSERT_EQ(E_OK, pDatabaseHandler.getListSinks(listSinks));
1298 ASSERT_EQ(listSinks[0].mainVolume, newVol);
1301 TEST_F(CAmDatabaseHandlerTest,getMainSourceSoundProperties)
1304 am_sourceID_t sourceID;
1305 pCF.createSource(source);
1306 std::vector<am_MainSoundProperty_s> mainSoundProperties = source.listMainSoundProperties;
1307 std::vector<am_MainSoundProperty_s> listMainSoundProperties;
1310 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1311 ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSourceSoundProperties(sourceID,listMainSoundProperties));
1312 ASSERT_TRUE(std::equal(mainSoundProperties.begin(),mainSoundProperties.end(),listMainSoundProperties.begin(),equalMainSoundProperty));
1315 TEST_F(CAmDatabaseHandlerTest,getMainSinkSoundProperties)
1319 pCF.createSink(sink);
1320 std::vector<am_MainSoundProperty_s> mainSoundProperties = sink.listMainSoundProperties;
1321 std::vector<am_MainSoundProperty_s> listMainSoundProperties;
1324 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1325 ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSinkSoundProperties(sinkID,listMainSoundProperties));
1326 ASSERT_TRUE(std::equal(mainSoundProperties.begin(),mainSoundProperties.end(),listMainSoundProperties.begin(),equalMainSoundProperty));
1329 TEST_F(CAmDatabaseHandlerTest,getMainSources)
1331 am_Source_s source, source1, source2;
1332 am_sourceID_t sourceID;
1333 pCF.createSource(source);
1334 pCF.createSource(source1);
1335 pCF.createSource(source2);
1336 source1.name = "source1";
1337 source2.name = "source2";
1339 source1.visible = false;
1340 std::vector<am_SourceType_s> listMainSources;
1341 std::vector<am_Source_s> listSources;
1345 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1346 source.sourceID = sourceID;
1347 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source1,sourceID));
1348 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source2,sourceID));
1349 source2.sourceID = sourceID;
1350 ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSources(listMainSources));
1351 listSources.push_back(source);
1352 listSources.push_back(source2);
1353 std::vector<am_SourceType_s>::iterator listIterator = listMainSources.begin();
1354 for (; listIterator < listMainSources.end(); ++listIterator)
1356 equal = equal && pCF.compareSinkMainSource(listIterator, listSources);
1361 TEST_F(CAmDatabaseHandlerTest,getMainSinks)
1363 am_Sink_s sink, sink1, sink2;
1365 pCF.createSink(sink);
1366 pCF.createSink(sink1);
1367 pCF.createSink(sink2);
1368 sink1.name = "sink1";
1369 sink2.name = "sink2";
1371 sink1.visible = false;
1372 std::vector<am_SinkType_s> listMainSinks;
1373 std::vector<am_Sink_s> listSinks;
1376 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1377 sink.sinkID = sinkID;
1378 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink1,sinkID));
1379 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink2,sinkID));
1380 sink2.sinkID = sinkID;
1381 ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSinks(listMainSinks));
1382 listSinks.push_back(sink);
1383 listSinks.push_back(sink2);
1384 std::vector<am_SinkType_s>::iterator listIterator = listMainSinks.begin();
1385 for (; listIterator < listMainSinks.end(); ++listIterator)
1387 equal = equal && pCF.compareSinkMainSink(listIterator, listSinks);
1392 TEST_F(CAmDatabaseHandlerTest,getVisibleMainConnections)
1394 createMainConnectionSetup();
1395 std::vector<am_MainConnectionType_s> listVisibleMainConnections;
1396 std::vector<am_MainConnection_s> listMainConnections;
1397 ASSERT_EQ(E_OK, pDatabaseHandler.getListVisibleMainConnections(listVisibleMainConnections));
1398 ASSERT_EQ(E_OK, pDatabaseHandler.getListMainConnections(listMainConnections));
1399 ASSERT_EQ(listMainConnections[0].mainConnectionID, listVisibleMainConnections[0].mainConnectionID);
1400 ASSERT_EQ(listMainConnections[0].connectionState, listVisibleMainConnections[0].connectionState);
1401 ASSERT_EQ(listMainConnections[0].delay, listVisibleMainConnections[0].delay);
1402 ASSERT_EQ(listMainConnections[0].sinkID, listVisibleMainConnections[0].sinkID);
1403 ASSERT_EQ(listMainConnections[0].sourceID, listVisibleMainConnections[0].sourceID);
1406 TEST_F(CAmDatabaseHandlerTest,getListSourcesOfDomain)
1408 am_Source_s source, source2;
1410 am_domainID_t domainID;
1411 am_sourceID_t sourceID;
1412 std::vector<am_sourceID_t> sourceList, sourceCheckList;
1413 pCF.createSource(source);
1414 source.sourceID = 1;
1415 source.name = "testSource";
1416 source.domainID = 1;
1417 pCF.createSource(source2);
1418 source2.sourceID = 0;
1419 source2.name = "testSource2";
1420 source2.domainID = 5;
1421 pCF.createDomain(domain);
1422 sourceCheckList.push_back(1); //sink.sinkID);
1425 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID));
1426 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(source,sourceID))
1427 << "ERROR: database error";
1428 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(source2,sourceID))
1429 << "ERROR: database error";
1430 ASSERT_EQ(E_NON_EXISTENT,pDatabaseHandler.getListSourcesOfDomain(2,sourceList))
1431 << "ERROR: database error";ASSERT_TRUE(sourceList.empty());
1432 ASSERT_EQ(E_OK,pDatabaseHandler.getListSourcesOfDomain(1,sourceList))
1433 << "ERROR: database error";
1434 ASSERT_TRUE(std::equal(sourceList.begin(),sourceList.end(),sourceCheckList.begin()) && !sourceList.empty());
1437 TEST_F(CAmDatabaseHandlerTest,getListSinksOfDomain)
1439 am_Sink_s sink, sink2;
1441 am_domainID_t domainID;
1443 std::vector<am_sinkID_t> sinkList, sinkCheckList;
1444 pCF.createSink(sink);
1447 pCF.createSink(sink2);
1449 sink2.name = "sink2";
1450 pCF.createDomain(domain);
1451 sinkCheckList.push_back(1); //sink.sinkID);
1454 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID));
1455 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(sink,sinkID))
1456 << "ERROR: database error";
1457 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(sink2,sinkID))
1458 << "ERROR: database error";
1459 ASSERT_EQ(E_NON_EXISTENT,pDatabaseHandler.getListSinksOfDomain(2,sinkList))
1460 << "ERROR: database error";ASSERT_TRUE(sinkList.empty());
1461 ASSERT_EQ(E_OK,pDatabaseHandler.getListSinksOfDomain(1,sinkList))
1462 << "ERROR: database error";
1463 ASSERT_TRUE(std::equal(sinkList.begin(),sinkList.end(),sinkCheckList.begin()) && !sinkList.empty());
1466 TEST_F(CAmDatabaseHandlerTest,getListGatewaysOfDomain)
1470 am_Gateway_s gateway, gateway2;
1471 am_gatewayID_t gatewayID;
1472 am_domainID_t domainID;
1474 std::vector<am_gatewayID_t> gatewayList, gatewayCheckList;
1475 pCF.createGateway(gateway);
1476 gateway.gatewayID = 1;
1477 gateway.name = "testGateway";
1478 gateway.controlDomainID = 1;
1479 gateway.sourceID = 1;
1481 gateway.domainSinkID = 1;
1482 gateway.domainSourceID = 1;
1483 pCF.createGateway(gateway2);
1484 gateway2.gatewayID = 2;
1485 gateway2.name = "testGateway2";
1486 gateway2.controlDomainID = 4;
1487 gateway2.sourceID = 1;
1488 gateway2.sinkID = 1;
1489 gateway2.domainSinkID = 1;
1490 gateway2.domainSourceID = 1;
1491 pCF.createDomain(domain);
1492 gatewayCheckList.push_back(gateway.gatewayID);
1496 am_sourceID_t sourceID;
1497 pCF.createSink(sink);
1498 pCF.createSource(source);
1500 source.sourceID = 1;
1501 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1502 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1503 ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID));
1504 ASSERT_EQ(E_OK,pDatabaseHandler.enterGatewayDB(gateway,gatewayID))
1505 << "ERROR: database error";
1506 ASSERT_EQ(E_OK,pDatabaseHandler.enterGatewayDB(gateway2,gatewayID))
1507 << "ERROR: database error";
1508 ASSERT_EQ(E_NON_EXISTENT,pDatabaseHandler.getListGatewaysOfDomain(2,gatewayList))
1509 << "ERROR: database error";ASSERT_TRUE(gatewayList.empty());
1510 ASSERT_EQ(E_OK,pDatabaseHandler.getListGatewaysOfDomain(1,gatewayList))
1511 << "ERROR: database error";
1512 ASSERT_TRUE(std::equal(gatewayList.begin(),gatewayList.end(),gatewayCheckList.begin()) && !gatewayList.empty());
1515 TEST_F(CAmDatabaseHandlerTest,removeDomain)
1518 am_domainID_t domainID;
1519 std::vector<am_Domain_s> listDomains;
1520 pCF.createDomain(domain);
1521 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID))
1522 << "ERROR: database error";
1523 ASSERT_EQ(E_OK,pDatabaseHandler.removeDomainDB(domainID))
1524 << "ERROR: database error";
1525 ASSERT_EQ(E_OK,pDatabaseHandler.getListDomains(listDomains))
1526 << "ERROR: database error";
1527 ASSERT_TRUE(listDomains.empty());
1530 TEST_F(CAmDatabaseHandlerTest,removeGateway)
1534 am_Gateway_s gateway;
1535 am_gatewayID_t gatewayID;
1536 std::vector<am_Gateway_s> listGateways;
1537 pCF.createGateway(gateway);
1541 am_sourceID_t sourceID;
1542 pCF.createSink(sink);
1543 pCF.createSource(source);
1545 source.sourceID = 2;
1546 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1547 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1548 ASSERT_EQ(E_OK,pDatabaseHandler.enterGatewayDB(gateway,gatewayID))
1549 << "ERROR: database error";
1550 ASSERT_EQ(E_OK,pDatabaseHandler.removeGatewayDB(gatewayID))
1551 << "ERROR: database error";
1552 ASSERT_EQ(E_OK,pDatabaseHandler.getListGateways(listGateways))
1553 << "ERROR: database error";
1554 ASSERT_TRUE(listGateways.empty());
1557 TEST_F(CAmDatabaseHandlerTest,removeSink)
1561 std::vector<am_Sink_s> listSinks;
1562 pCF.createSink(sink);
1564 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(sink,sinkID))
1565 << "ERROR: database error";
1566 ASSERT_EQ(E_OK,pDatabaseHandler.removeSinkDB(sinkID))
1567 << "ERROR: database error";
1568 ASSERT_EQ(E_OK,pDatabaseHandler.getListSinks(listSinks))
1569 << "ERROR: database error";
1570 ASSERT_TRUE(listSinks.empty());
1573 TEST_F(CAmDatabaseHandlerTest,removeSource)
1575 //fill the connection database
1577 am_sourceID_t sourceID;
1578 std::vector<am_Source_s> listSources;
1579 pCF.createSource(source);
1582 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(source,sourceID))
1583 << "ERROR: database error";
1584 ASSERT_EQ(E_OK,pDatabaseHandler.removeSourceDB(sourceID))
1585 << "ERROR: database error";
1586 ASSERT_EQ(E_OK,pDatabaseHandler.getListSources(listSources))
1587 << "ERROR: database error";
1588 ASSERT_TRUE(listSources.empty());
1591 TEST_F(CAmDatabaseHandlerTest, removeMainConnection)
1593 createMainConnectionSetup();
1596 ASSERT_EQ(E_OK,pDatabaseHandler.removeMainConnectionDB(1))
1597 << "ERROR: database error";
1600 TEST_F(CAmDatabaseHandlerTest,removeNonexistentMainConnectionFail)
1602 ASSERT_EQ(E_NON_EXISTENT,pDatabaseHandler.removeMainConnectionDB(34))
1603 << "ERROR: database error";
1606 TEST_F(CAmDatabaseHandlerTest,removeNonexistentSource)
1608 ASSERT_EQ(E_NON_EXISTENT,pDatabaseHandler.removeSourceDB(3))
1609 << "ERROR: database error";
1612 TEST_F(CAmDatabaseHandlerTest,removeNonexistentSink)
1614 ASSERT_EQ(E_NON_EXISTENT,pDatabaseHandler.removeSinkDB(2))
1615 << "ERROR: database error";
1618 TEST_F(CAmDatabaseHandlerTest,removeNonexistentGateway)
1620 ASSERT_EQ(E_NON_EXISTENT,pDatabaseHandler.removeGatewayDB(12))
1621 << "ERROR: database error";
1624 TEST_F(CAmDatabaseHandlerTest,registerGatewayCorrect)
1628 //initialize gateway
1629 std::vector<am_Gateway_s> returnList;
1630 am_Gateway_s gateway, gateway1, gateway2;
1631 am_gatewayID_t gatewayID = 0, gatewayID1 = 0, gatewayID2 = 0;
1633 pCF.createGateway(gateway);
1634 pCF.createGateway(gateway1);
1635 gateway1.gatewayID = 20;
1636 pCF.createGateway(gateway2);
1640 am_sourceID_t sourceID;
1641 pCF.createSink(sink);
1642 pCF.createSource(source);
1644 source.sourceID = 2;
1645 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1646 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1647 ASSERT_EQ(E_OK,pDatabaseHandler.enterGatewayDB(gateway,gatewayID))
1648 << "ERROR: database error";
1649 ASSERT_EQ(100,gatewayID)
1650 << "ERROR: domainID zero";
1652 ASSERT_EQ(E_OK,pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1))
1653 << "ERROR: database error";
1654 ASSERT_EQ(gateway1.gatewayID,gatewayID1)
1655 << "ERROR: domainID zero";
1657 ASSERT_EQ(E_OK,pDatabaseHandler.enterGatewayDB(gateway2,gatewayID2))
1658 << "ERROR: database error";
1659 ASSERT_EQ(101,gatewayID2)
1660 << "ERROR: domainID zero";
1662 //now check if we read out the correct values
1663 ASSERT_EQ(E_OK, pDatabaseHandler.getListGateways(returnList));
1665 std::vector<am_Gateway_s>::iterator listIterator = returnList.begin();
1667 for (; listIterator < returnList.end(); ++listIterator)
1669 if (listIterator->gatewayID == gatewayID)
1671 equal = equal && pCF.compareGateway(listIterator, gateway);
1674 if (listIterator->gatewayID == gatewayID1)
1676 equal = equal && pCF.compareGateway(listIterator, gateway1);
1679 if (listIterator->gatewayID == gatewayID2)
1681 equal = equal && pCF.compareGateway(listIterator, gateway2);
1685 ASSERT_EQ(true, equal);
1688 TEST_F(CAmDatabaseHandlerTest,getGatewayInfo)
1692 //initialize gateway
1693 std::vector<am_Gateway_s> returnList;
1694 am_Gateway_s gateway, gateway1, gateway2;
1695 am_gatewayID_t gatewayID = 0, gatewayID1 = 0, gatewayID2 = 0;
1697 pCF.createGateway(gateway);
1698 pCF.createGateway(gateway1);
1699 gateway1.gatewayID = 20;
1700 pCF.createGateway(gateway2);
1704 am_sourceID_t sourceID;
1705 pCF.createSink(sink);
1706 pCF.createSource(source);
1708 source.sourceID = 2;
1709 ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID));
1710 ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID));
1711 ASSERT_EQ(E_OK,pDatabaseHandler.enterGatewayDB(gateway,gatewayID))
1712 << "ERROR: database error";
1713 ASSERT_EQ(100,gatewayID)
1714 << "ERROR: domainID zero";
1716 ASSERT_EQ(E_OK,pDatabaseHandler.enterGatewayDB(gateway1,gatewayID1))
1717 << "ERROR: database error";
1718 ASSERT_EQ(gateway1.gatewayID,gatewayID1)
1719 << "ERROR: domainID zero";
1721 ASSERT_EQ(E_OK,pDatabaseHandler.enterGatewayDB(gateway2,gatewayID2))
1722 << "ERROR: database error";
1723 ASSERT_EQ(101,gatewayID2)
1724 << "ERROR: domainID zero";
1726 //now check if we read out the correct values
1727 ASSERT_EQ(E_OK, pDatabaseHandler.getListGateways(returnList));
1729 std::vector<am_Gateway_s>::iterator listIterator = returnList.begin();
1731 for (; listIterator < returnList.end(); ++listIterator)
1733 if (listIterator->gatewayID == gatewayID)
1735 equal = equal && pCF.compareGateway(listIterator, gateway);
1738 if (listIterator->gatewayID == gatewayID1)
1740 equal = equal && pCF.compareGateway(listIterator, gateway1);
1743 if (listIterator->gatewayID == gatewayID2)
1745 equal = equal && pCF.compareGateway(listIterator, gateway2);
1749 ASSERT_EQ(true, equal);
1751 am_Gateway_s gatewayInfo;
1752 ASSERT_EQ(E_OK, pDatabaseHandler.getGatewayInfoDB(20,gatewayInfo));
1753 ASSERT_TRUE(pCF.compareGateway1(gateway1,gatewayInfo));
1757 TEST_F(CAmDatabaseHandlerTest,enterSinkThatAlreadyExistFail)
1759 //fill the connection database
1760 am_Sink_s staticSink, SecondSink;
1761 am_sinkID_t staticSinkID, SecondSinkID;
1763 pCF.createSink(staticSink);
1764 staticSink.sinkID = 43;
1765 staticSink.name = "Static";
1768 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(staticSink,staticSinkID))
1769 << "ERROR: database error";
1770 ASSERT_EQ(staticSink.sinkID,staticSinkID)
1771 << "ERROR: ID not the one given in staticSink";
1773 pCF.createSink(SecondSink);
1774 SecondSink.sinkID = 43;
1775 SecondSink.name = "SecondSink";
1777 ASSERT_EQ(E_ALREADY_EXISTS,pDatabaseHandler.enterSinkDB(SecondSink,SecondSinkID))
1778 << "ERROR: database error";
1781 TEST_F(CAmDatabaseHandlerTest,enterSourcesThatAlreadyExistFail)
1783 //fill the connection database
1784 am_Source_s staticSource, SecondSource;
1785 am_sourceID_t staticSourceID, SecondSourceID;
1786 pCF.createSource(staticSource);
1787 staticSource.sourceID = 4;
1790 ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(staticSource,staticSourceID))
1791 << "ERROR: database error";
1792 ASSERT_EQ(staticSource.sourceID,staticSourceID)
1793 << "ERROR: ID not the one given in staticSource";
1795 pCF.createSource(SecondSource);
1796 SecondSource.sourceID = 4;
1798 ASSERT_EQ(E_ALREADY_EXISTS,pDatabaseHandler.enterSourceDB(SecondSource,SecondSourceID))
1799 << "ERROR: database error";
1802 TEST_F(CAmDatabaseHandlerTest,registerDomainCorrect)
1805 std::vector<am_Domain_s> returnList;
1807 am_domainID_t domainID = 0;
1808 pCF.createDomain(domain);
1810 ASSERT_EQ(E_OK,pDatabaseHandler.enterDomainDB(domain,domainID))
1811 << "ERROR: database error";
1812 ASSERT_NE(0,domainID)
1813 << "ERROR: domainID zero";
1815 //now check if we read out the correct values
1816 ASSERT_EQ(E_OK, pDatabaseHandler.getListDomains(returnList));
1818 std::vector<am_Domain_s>::iterator listIterator = returnList.begin();
1819 for (; listIterator < returnList.end(); ++listIterator)
1821 if (listIterator->domainID == domainID)
1823 equal = equal && (listIterator->name.compare(domain.name) == 0) && (listIterator->busname.compare(domain.busname) == 0) && (listIterator->complete == domain.complete) && (listIterator->early == domain.early) && (listIterator->state == domain.state);
1826 ASSERT_EQ(true, equal);
1829 TEST_F(CAmDatabaseHandlerTest,registerConnectionCorrect)
1831 am_Connection_s connection;
1832 am_connectionID_t connectionID;
1833 std::vector<am_Connection_s> returnList;
1834 pCF.createConnection(connection);
1836 ASSERT_EQ(E_OK,pDatabaseHandler.enterConnectionDB(connection,connectionID))
1837 << "ERROR: database error";;
1838 ASSERT_NE(0,connectionID)
1839 << "ERROR: connectionID zero";
1841 //now check if we read out the correct values
1842 ASSERT_EQ(E_OK, pDatabaseHandler.changeConnectionFinal(connectionID));
1843 ASSERT_EQ(E_OK, pDatabaseHandler.getListConnections(returnList));
1845 std::vector<am_Connection_s>::iterator listIterator = returnList.begin();
1846 for (; listIterator < returnList.end(); ++listIterator)
1848 if (listIterator->connectionID == connectionID)
1850 equal = (listIterator->sourceID == connection.sourceID) && (listIterator->sinkID == connection.sinkID) && (listIterator->delay == connection.delay) && (listIterator->connectionFormat = connection.connectionFormat);
1853 ASSERT_EQ(true, equal);
1856 TEST_F(CAmDatabaseHandlerTest,enterMainConnectionCorrect)
1858 createMainConnectionSetup();
1861 TEST_F(CAmDatabaseHandlerTest,enterSinksCorrect)
1863 //fill the connection database
1864 am_Sink_s staticSink, firstDynamicSink, secondDynamicSink;
1865 am_sinkID_t staticSinkID, firstDynamicSinkID, secondDynamicSinkID;
1866 std::vector<am_Sink_s> sinkList;
1868 pCF.createSink(staticSink);
1869 staticSink.sinkID = 4;
1872 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(staticSink,staticSinkID))
1873 << "ERROR: database error";
1874 ASSERT_EQ(staticSink.sinkID,staticSinkID)
1875 << "ERROR: ID not the one given in staticSink";
1877 pCF.createSink(firstDynamicSink);
1878 firstDynamicSink.name = "firstdynamic";
1879 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(firstDynamicSink,firstDynamicSinkID))
1880 << "ERROR: database error";
1881 ASSERT_EQ(firstDynamicSinkID,DYNAMIC_ID_BOUNDARY)
1882 << "ERROR: ID not the one given in firstDynamicSink";
1884 pCF.createSink(secondDynamicSink);
1885 secondDynamicSink.name = "seconddynamic";
1887 ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(secondDynamicSink,secondDynamicSinkID))
1888 << "ERROR: database error";
1889 ASSERT_NEAR(secondDynamicSinkID,DYNAMIC_ID_BOUNDARY,10)
1890 << "ERROR: ID not the one given in secondDynamicSink";
1892 //now read back and check the returns agains the given values
1893 ASSERT_EQ(E_OK,pDatabaseHandler.getListSinks(sinkList))
1894 << "ERROR: database error";
1897 std::vector<am_Sink_s>::iterator listIterator = sinkList.begin();
1898 for (; listIterator < sinkList.end(); ++listIterator)
1900 if (listIterator->sinkID == staticSinkID)
1902 equal = equal && pCF.compareSink(listIterator, staticSink);
1905 if (listIterator->sinkID == firstDynamicSinkID)
1907 equal = equal && pCF.compareSink(listIterator, firstDynamicSink);
1910 if (listIterator->sinkID == secondDynamicSinkID)
1912 equal = equal && pCF.compareSink(listIterator, secondDynamicSink);
1915 ASSERT_EQ(true, equal);
1918 //Commented out - gives always a warning..
1919 //TEST_F(databaseTest,registerDomainFailonID0)
1921 // am_Domain_s domain;
1922 // am_domainID_t domainID=5;
1923 // pCF.createDomain(domain);
1924 // domain.domainID=1;
1925 // ASSERT_DEATH(pDatabaseHandler.enterDomainDB(domain,domainID),"Assertion `domainData.domainID==0'");
1928 int main(int argc, char **argv)
1930 CAmDltWrapper::instance()->registerApp("databse", "databasetest");
1931 logInfo("Database Test started ");
1932 ::testing::InitGoogleTest(&argc, argv);
1933 return RUN_ALL_TESTS();