diff options
Diffstat (limited to 'AudioManagerDaemon/test/AmControlInterfaceTest')
3 files changed, 0 insertions, 833 deletions
diff --git a/AudioManagerDaemon/test/AmControlInterfaceTest/CAmControlInterfaceTest.cpp b/AudioManagerDaemon/test/AmControlInterfaceTest/CAmControlInterfaceTest.cpp deleted file mode 100644 index 9f58a5a..0000000 --- a/AudioManagerDaemon/test/AmControlInterfaceTest/CAmControlInterfaceTest.cpp +++ /dev/null @@ -1,662 +0,0 @@ -/** - * SPDX license identifier: MPL-2.0 - * - * Copyright (C) 2012, BMW AG - * - * This file is part of GENIVI Project AudioManager. - * - * Contributions are licensed to the GENIVI Alliance under one or more - * Contribution License Agreements. - * - * \copyright - * This Source Code Form is subject to the terms of the - * Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with - * this file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * - * \author Christian Linke, christian.linke@bmw.de BMW 2011,2012 - * - * For further information see http://www.genivi.org/. - * - */ - -#include "CAmControlInterfaceTest.h" -#include <algorithm> -#include <string> -#include <vector> -#include <set> -#include "CAmDltWrapper.h" - -using namespace am; -using namespace testing; - -DLT_DECLARE_CONTEXT(AudioManager) - -ACTION(returnResyncConnection) -{ - std::vector<am_Connection_s> listConnections; - am_Connection_s conn; - conn.sinkID=1; - conn.sourceID=1; - conn.connectionFormat=CF_GENIVI_ANALOG; - listConnections.push_back(conn); - arg1=listConnections; -} - -CAmControlInterfaceTest::CAmControlInterfaceTest() : - pSocketHandler(), // - plistCommandPluginDirs(), // - plistRoutingPluginDirs(), // - pDatabaseHandler(), // - pRoutingSender(plistRoutingPluginDirs), //RoutingReceiver - pCommandSender(plistCommandPluginDirs), // - pMockControlInterface(), // - pMockRoutingInterface(), // - pRoutingInterfaceBackdoor(), // - pCommandInterfaceBackdoor(), // - pControlInterfaceBackdoor(), // - pControlSender(), // - pRouter(&pDatabaseHandler,&pControlSender), // - pDatabaseObserver(&pCommandSender, &pRoutingSender, &pSocketHandler), // - pControlReceiver(&pDatabaseHandler, &pRoutingSender, &pCommandSender, &pSocketHandler, &pRouter), // - pRoutingReceiver(&pDatabaseHandler, &pRoutingSender, &pControlSender, &pSocketHandler) -{ - CAmDltWrapper::instance(0)->registerApp("AudioManagerDeamon", "AudioManagerDeamon"); - CAmDltWrapper::instance()->registerContext(AudioManager, "Main", "Main Context"); - logInfo("The Audiomanager is started"); - pDatabaseHandler.registerObserver(&pDatabaseObserver); - pControlInterfaceBackdoor.replaceController(&pControlSender, &pMockControlInterface); - pRoutingInterfaceBackdoor.injectInterface(&pRoutingSender, &pMockRoutingInterface, "mock"); - -} - -CAmControlInterfaceTest::~CAmControlInterfaceTest() -{ -} - -void CAmControlInterfaceTest::SetUp() -{ - logInfo("RoutingSendInterface Test started"); -} - -void CAmControlInterfaceTest::TearDown() -{ -} - -TEST_F(CAmControlInterfaceTest,registerDomain) -{ - - am_Domain_s domain; - am_domainID_t domainID; - pCF.createDomain(domain); - - //When we run this test, we expect the call on the control interface - EXPECT_CALL(pMockControlInterface,hookSystemRegisterDomain(_,_)).WillRepeatedly(DoAll(SetArgReferee<1>(2), Return(E_OK))); - ASSERT_EQ(E_OK, pRoutingReceiver.registerDomain(domain,domainID)); - ASSERT_EQ(domainID, 2); -} - -TEST_F(CAmControlInterfaceTest,deregisterDomain) -{ - am_domainID_t domainID = 34; - - //When we run this test, we expect the call on the control interface - EXPECT_CALL(pMockControlInterface,hookSystemDeregisterDomain(34)).WillRepeatedly(Return(E_OK)); - ASSERT_EQ(E_OK, pRoutingReceiver.deregisterDomain(domainID)); -} - -TEST_F(CAmControlInterfaceTest,registerSink) -{ - am_Sink_s sink; - am_sinkID_t sinkID; - pCF.createSink(sink); - - //When we run this test, we expect the call on the control interface - EXPECT_CALL(pMockControlInterface,hookSystemRegisterSink(_,_)).WillRepeatedly(DoAll(SetArgReferee<1>(2), Return(E_OK))); - ASSERT_EQ(E_OK, pRoutingReceiver.registerSink(sink,sinkID)); - ASSERT_EQ(sinkID, 2); -} - -TEST_F(CAmControlInterfaceTest,deregisterSink) -{ - am_sinkID_t sinkID = 12; - - //When we run this test, we expect the call on the control interface - EXPECT_CALL(pMockControlInterface,hookSystemDeregisterSink(12)).WillRepeatedly(Return(E_OK)); - ASSERT_EQ(E_OK, pRoutingReceiver.deregisterSink(sinkID)); -} - -TEST_F(CAmControlInterfaceTest,registerSource) -{ - am_Source_s source; - am_sourceID_t sourceID; - pCF.createSource(source); - - //When we run this test, we expect the call on the control interface - EXPECT_CALL(pMockControlInterface,hookSystemRegisterSource(_,_)).WillRepeatedly(DoAll(SetArgReferee<1>(2), Return(E_OK))); - ASSERT_EQ(E_OK, pRoutingReceiver.registerSource(source,sourceID)); - ASSERT_EQ(sourceID, 2); -} - -TEST_F(CAmControlInterfaceTest,deregisterSource) -{ - am_sourceID_t sourceID = 12; - - //When we run this test, we expect the call on the control interface - EXPECT_CALL(pMockControlInterface,hookSystemDeregisterSource(12)).WillRepeatedly(Return(E_OK)); - ASSERT_EQ(E_OK, pRoutingReceiver.deregisterSource(sourceID)); -} - -TEST_F(CAmControlInterfaceTest,registerGateway) -{ - am_Gateway_s gateway; - am_gatewayID_t gatewayID; - pCF.createGateway(gateway); - - //When we run this test, we expect the call on the control interface - EXPECT_CALL(pMockControlInterface,hookSystemRegisterGateway(_,_)).WillRepeatedly(DoAll(SetArgReferee<1>(2), Return(E_OK))); - ASSERT_EQ(E_OK, pRoutingReceiver.registerGateway(gateway,gatewayID)); - ASSERT_EQ(gatewayID, 2); -} - -TEST_F(CAmControlInterfaceTest,deregisterGateway) -{ - am_gatewayID_t gatewayID = 12; - - //When we run this test, we expect the call on the control interface - EXPECT_CALL(pMockControlInterface,hookSystemDeregisterGateway(12)).WillRepeatedly(Return(E_OK)); - ASSERT_EQ(E_OK, pRoutingReceiver.deregisterGateway(gatewayID)); -} - -TEST_F(CAmControlInterfaceTest,ackConnect) -{ - am_connectionID_t connectionID; - am_Sink_s sink; - am_sinkID_t sinkID; - am_Domain_s domain; - am_domainID_t domainID; - std::vector<am_Connection_s> connectionList; - std::vector<am_Handle_s> handlesList; - am_Handle_s handle; - pCF.createSink(sink); - pCF.createDomain(domain); - domain.name = "mock"; - domain.busname = "mock"; - sink.sinkID = 2; - sink.domainID = DYNAMIC_ID_BOUNDARY; - - //prepare the stage - ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID)); - ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID)); - - //when asyncConnect is called, we expect a call on the routingInterface - EXPECT_CALL(pMockRoutingInterface,asyncConnect(_,1,2,2,CF_GENIVI_STEREO)).WillOnce(Return(E_OK)); - ASSERT_EQ(E_OK, pControlReceiver.connect(handle,connectionID,CF_GENIVI_STEREO,2,2)); - - //The handle should have the correct type - ASSERT_EQ(handle.handleType, H_CONNECT); - ASSERT_EQ(handle.handle, 1); - ASSERT_EQ(connectionID, 1); - - //The list of handles shall have the handle inside - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_EQ(handlesList[0].handle, handle.handle); - ASSERT_EQ(handlesList[0].handleType, handle.handleType); - - //we check the list of connections - but it must be empty because the ack did not arrive yet - ASSERT_EQ(E_OK, pDatabaseHandler.getListConnections(connectionList)); - ASSERT_TRUE(connectionList.empty()); - - //finally we answer via the RoutingInterface and expect a call on the controlInterface - EXPECT_CALL(pMockControlInterface,cbAckConnect(_,E_OK)).Times(1); - pRoutingReceiver.ackConnect(handle, connectionID, E_OK); - - //the list of handles must be empty now - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_TRUE(handlesList.empty()); - - //but the connection must be in the connectionlist - ASSERT_EQ(E_OK, pDatabaseHandler.getListConnections(connectionList)); - ASSERT_TRUE(!connectionList.empty()); - - //no we try the same, but do expect a no_change answer directly and no call because connection already exists - //ASSERT_EQ(E_ALREADY_EXISTS, pControlReceiver.connect(handle,connectionID,CF_GENIVI_STEREO,2,2)); - //needed to be removed because logic changed here -} - -TEST_F(CAmControlInterfaceTest,ackDisconnect) -{ - am_connectionID_t connectionID; - am_Sink_s sink; - am_sinkID_t sinkID; - am_Domain_s domain; - am_domainID_t domainID; - std::vector<am_Connection_s> connectionList; - std::vector<am_Handle_s> handlesList; - am_Handle_s handle; - pCF.createSink(sink); - pCF.createDomain(domain); - domain.name = "mock"; - domain.busname = "mock"; - sink.sinkID = 2; - sink.domainID = DYNAMIC_ID_BOUNDARY; - - //prepare the stage - ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID)); - ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID)); - - //now we first need to connect, we expect a call on the routing interface - EXPECT_CALL(pMockRoutingInterface,asyncConnect(_,1,2,2,CF_GENIVI_STEREO)).WillOnce(Return(E_OK)); - ASSERT_EQ(E_OK, pControlReceiver.connect(handle,connectionID,CF_GENIVI_STEREO,2,2)); - - //answer with an ack to insert the connection in the database - EXPECT_CALL(pMockControlInterface,cbAckConnect(_,E_OK)).Times(1); - pRoutingReceiver.ackConnect(handle, connectionID, E_OK); - - //now we can start to disconnect and expect a call on the routing interface - EXPECT_CALL(pMockRoutingInterface,asyncDisconnect(_,1)).WillOnce(Return(E_OK)); - ASSERT_EQ(E_OK, pControlReceiver.disconnect(handle,1)); - - //during the disconnection, the connection is still in the list! - ASSERT_EQ(E_OK, pDatabaseHandler.getListConnections(connectionList)); - ASSERT_TRUE(!connectionList.empty()); - - //then we fire the ack and expect a call on the controlInterface - EXPECT_CALL(pMockControlInterface,cbAckDisconnect(_,E_OK)).Times(1); - pRoutingReceiver.ackDisconnect(handle, connectionID, E_OK); - - //make sure the handle is gone - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_TRUE(handlesList.empty()); - - //make sure the connection is gone - ASSERT_EQ(E_OK, pDatabaseHandler.getListConnections(connectionList)); - ASSERT_TRUE(connectionList.empty()); - - //Now let's try to disconnect what is not existing... - ASSERT_EQ(E_NON_EXISTENT, pControlReceiver.disconnect(handle,2)); -} - -TEST_F(CAmControlInterfaceTest,ackDisconnectFailAndRetry) -{ - logInfo("ackDisconnectFailAndRetry test started"); - am_connectionID_t connectionID; - am_Sink_s sink; - am_sinkID_t sinkID; - am_Domain_s domain; - am_domainID_t domainID; - std::vector<am_Connection_s> connectionList; - std::vector<am_Handle_s> handlesList; - am_Handle_s handle; - pCF.createSink(sink); - pCF.createDomain(domain); - domain.name = "mock"; - domain.busname = "mock"; - sink.sinkID = 2; - sink.domainID = DYNAMIC_ID_BOUNDARY; - - //prepare the stage - ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID)); - ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID)); - - //now we first need to connect, we expect a call on the routing interface - EXPECT_CALL(pMockRoutingInterface,asyncConnect(_,1,2,2,CF_GENIVI_STEREO)).WillOnce(Return(E_OK)); - ASSERT_EQ(E_OK, pControlReceiver.connect(handle,connectionID,CF_GENIVI_STEREO,2,2)); - - //answer with an ack to insert the connection in the database - EXPECT_CALL(pMockControlInterface,cbAckConnect(_,E_OK)).Times(1); - pRoutingReceiver.ackConnect(handle, connectionID, E_OK); - - //now we can start to disconnect and expect a call on the routing interface - EXPECT_CALL(pMockRoutingInterface,asyncDisconnect(_,1)).WillOnce(Return(E_OK)); - ASSERT_EQ(E_OK, pControlReceiver.disconnect(handle,1)); - - //during the disconnection, the connection is still in the list! - ASSERT_EQ(E_OK, pDatabaseHandler.getListConnections(connectionList)); - ASSERT_TRUE(!connectionList.empty()); - - //then we fire the ack and expect a call on the controlInterface - EXPECT_CALL(pMockControlInterface,cbAckDisconnect(_,E_NON_EXISTENT)).Times(1); - pRoutingReceiver.ackDisconnect(handle, connectionID+1, E_NON_EXISTENT); - - //make sure the handle is gone - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_TRUE(handlesList.empty()); - - //make sure the connection is still there - ASSERT_EQ(E_OK, pDatabaseHandler.getListConnections(connectionList)); - ASSERT_FALSE(connectionList.empty()); - - ASSERT_TRUE(pDatabaseHandler.existConnectionID(1)); - - //Now let's try to disconnect now - EXPECT_CALL(pMockRoutingInterface,asyncDisconnect(_,1)).WillOnce(Return(E_OK)); - ASSERT_EQ(E_OK, pControlReceiver.disconnect(handle,1)); - logInfo("ackDisconnectFailAndRetry test finished"); -} - -TEST_F(CAmControlInterfaceTest,setSourceState) -{ - - am_Source_s source; - am_sourceID_t sourceID; - am_Domain_s domain; - am_domainID_t domainID; - std::vector<am_Handle_s> handlesList; - am_Handle_s handle; - am_SourceState_e state; - pCF.createSource(source); - pCF.createDomain(domain); - domain.name = "mock"; - domain.busname = "mock"; - source.sourceID = 2; - source.domainID = DYNAMIC_ID_BOUNDARY; - - //prepare the stage - ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID)); - ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID)); - - //we set the sourcestate and expect a call on the routingInterface - EXPECT_CALL(pMockRoutingInterface,asyncSetSourceState(_,2,SS_PAUSED)).WillOnce(Return(E_OK)); - ASSERT_EQ(E_OK, pControlReceiver.setSourceState(handle,source.sourceID,SS_PAUSED)); - - //we want our handle in the list and let the type be the right one - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_EQ(handlesList[0].handle, handle.handle); - ASSERT_EQ(handlesList[0].handleType, H_SETSOURCESTATE); - - //the state must be unchanged because did not get the ack - ASSERT_EQ(E_OK, pDatabaseHandler.getSoureState(source.sourceID,state)); - ASSERT_EQ(state, SS_ON); - - //now we sent out the ack and expect a call on the controlInterface - EXPECT_CALL(pMockControlInterface,cbAckSetSourceState(_,E_OK)).Times(1); - pRoutingReceiver.ackSetSourceState(handle, E_OK); - - //finally we need the sourcestate to be changed - ASSERT_EQ(E_OK, pDatabaseHandler.getSoureState(source.sourceID,state)); - ASSERT_EQ(state, SS_PAUSED); - - //make sure the handle is gone - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_TRUE(handlesList.empty()); - - //we try again but expect a no change error - //ASSERT_EQ(E_NO_CHANGE, pControlReceiver.setSourceState(handle,source.sourceID,SS_PAUSED)); - //needed to be removed because logic changed here -} - -TEST_F(CAmControlInterfaceTest,SetSinkVolumeChange) -{ - am_Sink_s sink; - am_sinkID_t sinkID; - am_Domain_s domain; - am_domainID_t domainID; - am_volume_t volume; - std::vector<am_Handle_s> handlesList; - am_Handle_s handle; - pCF.createSink(sink); - pCF.createDomain(domain); - domain.name = "mock"; - domain.busname = "mock"; - sink.sinkID = 2; - sink.domainID = DYNAMIC_ID_BOUNDARY; - sink.volume = 10; - - //setup environment, we need a domain and a sink - ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID)); - ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID)); - - //set the volume and expect a call on the routing interface - EXPECT_CALL(pMockRoutingInterface,asyncSetSinkVolume(_,2,11,RAMP_GENIVI_DIRECT,23)).WillOnce(Return(E_OK)); - ASSERT_EQ(E_OK, pControlReceiver.setSinkVolume(handle,sinkID,11,RAMP_GENIVI_DIRECT,23)); - - //check the list of handles. The handle must be in there and have the right type - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_EQ(handlesList[0].handle, handle.handle); - ASSERT_EQ(handlesList[0].handleType, H_SETSINKVOLUME); - - //now we read out the volume, but we expect no change because the ack did not arrive yet - ASSERT_EQ(E_OK, pDatabaseHandler.getSinkVolume(sinkID,volume)); - ASSERT_EQ(sink.volume, volume); - - //lets send the answer and expect a call on the controlInterface - EXPECT_CALL(pMockControlInterface,cbAckSetSinkVolumeChange(_,11,E_OK)).Times(1); - pRoutingReceiver.ackSetSinkVolumeChange(handle, 11, E_OK); - - //finally, the new value must be in the database - ASSERT_EQ(E_OK, pDatabaseHandler.getSinkVolume(sinkID,volume)); - ASSERT_EQ(11, volume); - - //and the handle must be destroyed - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_TRUE(handlesList.empty()); - - //Now we try again, but the value is unchanged - //ASSERT_EQ(E_NO_CHANGE, pControlReceiver.setSinkVolume(handle,sinkID,11,RAMP_GENIVI_DIRECT,23)); - //needed to be removed because logic changed here -} - -TEST_F(CAmControlInterfaceTest,ackSetSourceVolumeChange) -{ - am_Source_s source; - am_sourceID_t sourceID; - am_Domain_s domain; - am_domainID_t domainID; - am_volume_t volume; - std::vector<am_Handle_s> handlesList; - am_Handle_s handle; - pCF.createSource(source); - pCF.createDomain(domain); - domain.name = "mock"; - domain.busname = "mock"; - source.sourceID = 2; - source.domainID = DYNAMIC_ID_BOUNDARY; - source.volume = 12; - - //prepare the scene - ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID)); - ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID)); - - //change the sinkVolume, expect a call on the routingInterface - EXPECT_CALL(pMockRoutingInterface,asyncSetSourceVolume(_,2,11,RAMP_GENIVI_DIRECT,23)).WillOnce(Return(E_OK)); - ASSERT_EQ(E_OK, pControlReceiver.setSourceVolume(handle,source.sourceID,11,RAMP_GENIVI_DIRECT,23)); - - //check the list of handles. The handle must be in there and have the right type - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_EQ(handlesList[0].handle, handle.handle); - ASSERT_EQ(handlesList[0].handleType, H_SETSOURCEVOLUME); - - //now we read out the volume, but we expect no change because the ack did not arrive yet - ASSERT_EQ(E_OK, pDatabaseHandler.getSourceVolume(sourceID,volume)); - ASSERT_EQ(source.volume, volume); - - //lets send the answer and expect a call on the controlInterface - EXPECT_CALL(pMockControlInterface,cbAckSetSourceVolumeChange(_,11,E_OK)).Times(1); - pRoutingReceiver.ackSetSourceVolumeChange(handle, 11, E_OK); - - //finally, the new value must be in the database - ASSERT_EQ(E_OK, pDatabaseHandler.getSourceVolume(sourceID,volume)); - ASSERT_EQ(11, volume); - - //and the handle must be destroyed - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_TRUE(handlesList.empty()); - - //Now we try again, but the value is unchanged - //ASSERT_EQ(E_NO_CHANGE, pControlReceiver.setSourceVolume(handle,source.sourceID,11,RAMP_GENIVI_DIRECT,23)); - //needed to be removed because logic changed here -} - -TEST_F(CAmControlInterfaceTest,ackSetSinkSoundProperty) -{ - am_Sink_s sink; - am_sinkID_t sinkID; - am_Domain_s domain; - am_domainID_t domainID; - std::vector<am_Handle_s> handlesList; - am_Handle_s handle; - am_SoundProperty_s soundProperty; - int16_t oldvalue; - pCF.createSink(sink); - pCF.createDomain(domain); - domain.name = "mock"; - domain.busname = "mock"; - sink.sinkID = 2; - sink.domainID = DYNAMIC_ID_BOUNDARY; - soundProperty.type = SP_GENIVI_BASS; - soundProperty.value = 244; - - //setup environment, we need a domain and a sink - ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID)); - ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID)); - - //change the soundproperty, expect a call on the routinginterface - EXPECT_CALL(pMockRoutingInterface,asyncSetSinkSoundProperty(_,2,_)).WillOnce(Return(E_OK)); - ASSERT_EQ(E_OK, pControlReceiver.setSinkSoundProperty(handle,sink.sinkID,soundProperty)); - - //check the list of handles. The handle must be in there and have the right type - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_EQ(handlesList[0].handle, handle.handle); - ASSERT_EQ(handlesList[0].handleType, H_SETSINKSOUNDPROPERTY); - - //read out this property. There is no change, because the ack did not arrive yet. - ASSERT_EQ(E_OK, pDatabaseHandler.getSinkSoundPropertyValue(2,SP_GENIVI_BASS,oldvalue)); - ASSERT_EQ(sink.listSoundProperties[0].value, oldvalue); - - //lets send the answer and expect a call on the controlInterface - EXPECT_CALL(pMockControlInterface,cbAckSetSinkSoundProperty(_,E_OK)).Times(1); - pRoutingReceiver.ackSetSinkSoundProperty(handle, E_OK); - - //finally, the new value must be in the database - ASSERT_EQ(E_OK, pDatabaseHandler.getSinkSoundPropertyValue(sinkID,SP_GENIVI_BASS,oldvalue)); - ASSERT_EQ(soundProperty.value, oldvalue); - - //and the handle must be destroyed - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_TRUE(handlesList.empty()); - - //Now we try again, but the value is unchanged - //ASSERT_EQ(E_NO_CHANGE, pControlReceiver.setSinkSoundProperty(handle,sink.sinkID,soundProperty)); - //needed to be removed because logic changed here -} - -TEST_F(CAmControlInterfaceTest,ackSetSourceSoundProperty) -{ - am_Source_s source; - am_sourceID_t sourceID; - am_Domain_s domain; - am_domainID_t domainID; - std::vector<am_Handle_s> handlesList; - am_Handle_s handle; - am_SoundProperty_s soundProperty; - int16_t oldvalue; - pCF.createSource(source); - pCF.createDomain(domain); - domain.name = "mock"; - domain.busname = "mock"; - source.sourceID = 2; - source.domainID = DYNAMIC_ID_BOUNDARY; - soundProperty.type = SP_GENIVI_BASS; - soundProperty.value = 244; - - //prepare the scene - ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID)); - ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID)); - - //we trigger the change and wait for a call on the routinginterface - EXPECT_CALL(pMockRoutingInterface,asyncSetSourceSoundProperty(_,2,_)).WillOnce(Return(E_OK)); - ASSERT_EQ(E_OK, pControlReceiver.setSourceSoundProperty(handle,source.sourceID,soundProperty)); - - //check the list of handles. The handle must be in there and have the right type - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_EQ(handlesList[0].handle, handle.handle); - ASSERT_EQ(handlesList[0].handleType, H_SETSOURCESOUNDPROPERTY); - - //read out this property. There is no change, because the ack did not arrive yet. - ASSERT_EQ(E_OK, pDatabaseHandler.getSourceSoundPropertyValue(2,SP_GENIVI_BASS,oldvalue)); - ASSERT_EQ(source.listSoundProperties[0].value, oldvalue); - - //lets send the answer and expect a call on the controlInterface - EXPECT_CALL(pMockControlInterface,cbAckSetSourceSoundProperty(_,E_OK)).Times(1); - pRoutingReceiver.ackSetSourceSoundProperty(handle, E_OK); - - //finally, the new value must be in the database - ASSERT_EQ(E_OK, pDatabaseHandler.getSourceSoundPropertyValue(sourceID,SP_GENIVI_BASS,oldvalue)); - ASSERT_EQ(soundProperty.value, oldvalue); - - //and the handle must be destroyed - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_TRUE(handlesList.empty()); - - //Now we try again, but the value is unchanged - //ASSERT_EQ(E_NO_CHANGE, pControlReceiver.setSourceSoundProperty(handle,source.sourceID,soundProperty)); - //needed to be removed because logic changed here -} - -TEST_F(CAmControlInterfaceTest,crossFading) -{ - //todo: implement crossfading test -} - -TEST_F(CAmControlInterfaceTest,resyncConnectionsTest) -{ - am_Domain_s domain; - am_domainID_t domainID; - pCF.createDomain(domain); - domain.name = "mock"; - domain.busname = "mock"; - - //prepare the scene - ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID)); - - std::vector<am_Connection_s> listConnections; - - EXPECT_CALL(pMockRoutingInterface,resyncConnectionState(domainID,_)).WillOnce(DoAll(returnResyncConnection(), Return(E_OK))); - ASSERT_EQ(am_Error_e::E_OK,pControlReceiver.resyncConnectionState(domainID,listConnections)); - ASSERT_EQ(listConnections[0].sinkID,1); - ASSERT_EQ(listConnections[0].sourceID,1); - ASSERT_EQ(listConnections[0].connectionFormat,CF_GENIVI_ANALOG); -} - -TEST_F(CAmControlInterfaceTest,ackConnectNotPossible) -{ - am_connectionID_t connectionID; - am_Sink_s sink; - am_sinkID_t sinkID; - am_Domain_s domain; - am_domainID_t domainID; - std::vector<am_Connection_s> connectionList; - std::vector<am_Handle_s> handlesList; - am_Handle_s handle; - pCF.createSink(sink); - pCF.createDomain(domain); - domain.name = "mock"; - domain.busname = "mock"; - sink.sinkID = 2; - sink.domainID = DYNAMIC_ID_BOUNDARY; - - //prepare the stage - ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain,domainID)); - ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID)); - - //when asyncConnect is called, we expect a call on the routingInterface - EXPECT_CALL(pMockRoutingInterface,asyncConnect(_,1,2,2,CF_GENIVI_STEREO)).WillOnce(Return(E_COMMUNICATION)); - ASSERT_EQ(E_COMMUNICATION, pControlReceiver.connect(handle,connectionID,CF_GENIVI_STEREO,2,2)); - - //The list of handles shall be empty - ASSERT_EQ(E_OK, pControlReceiver.getListHandles(handlesList)); - ASSERT_TRUE(handlesList.empty()); - - - ASSERT_EQ(E_OK, pDatabaseHandler.getListConnections(connectionList)); - ASSERT_TRUE(connectionList.empty()); - -} - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} - diff --git a/AudioManagerDaemon/test/AmControlInterfaceTest/CAmControlInterfaceTest.h b/AudioManagerDaemon/test/AmControlInterfaceTest/CAmControlInterfaceTest.h deleted file mode 100644 index b7fa27a..0000000 --- a/AudioManagerDaemon/test/AmControlInterfaceTest/CAmControlInterfaceTest.h +++ /dev/null @@ -1,76 +0,0 @@ -/** - * SPDX license identifier: MPL-2.0 - * - * Copyright (C) 2012, BMW AG - * - * This file is part of GENIVI Project AudioManager. - * - * Contributions are licensed to the GENIVI Alliance under one or more - * Contribution License Agreements. - * - * \copyright - * This Source Code Form is subject to the terms of the - * Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with - * this file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * - * \author Christian Linke, christian.linke@bmw.de BMW 2011,2012 - * - * For further information see http://www.genivi.org/. - * - */ - -#ifndef ROUTINGINTERFACETEST_H_ -#define ROUTINGINTERFACETEST_H_ - -#include "gtest/gtest.h" -#include "gmock/gmock.h" - -//#include "CAmDatabaseHandlerSQLite.h" -#include "CAmDatabaseHandlerMap.h" -#include "CAmControlReceiver.h" -#include "CAmRoutingReceiver.h" -#include "CAmDatabaseObserver.h" -#include "CAmControlSender.h" -#include "CAmRoutingSender.h" -#include "CAmRouter.h" -#include "../IAmRoutingBackdoor.h" -#include "../IAmCommandBackdoor.h" -#include "../IAmControlBackdoor.h" -#include "../CAmCommonFunctions.h" -#include "../MockIAmRoutingSend.h" -#include "../MockIAmControlSend.h" -#include "CAmSocketHandler.h" - -namespace am -{ - -class CAmControlInterfaceTest: public ::testing::Test -{ -public: - CAmControlInterfaceTest(); - ~CAmControlInterfaceTest(); - CAmSocketHandler pSocketHandler; - std::vector<std::string> plistCommandPluginDirs; - std::vector<std::string> plistRoutingPluginDirs; - CAmDatabaseHandlerMap pDatabaseHandler; - CAmRoutingSender pRoutingSender; - CAmCommandSender pCommandSender; - MockIAmControlSend pMockControlInterface; - MockIAmRoutingSend pMockRoutingInterface; - IAmRoutingBackdoor pRoutingInterfaceBackdoor; - IAmCommandBackdoor pCommandInterfaceBackdoor; - IAmControlBackdoor pControlInterfaceBackdoor; - CAmControlSender pControlSender; - CAmRouter pRouter; - CAmDatabaseObserver pDatabaseObserver; - CAmControlReceiver pControlReceiver; - CAmRoutingReceiver pRoutingReceiver; - CAmCommonFunctions pCF; - void SetUp(); - void TearDown(); -}; - -} - -#endif /* ROUTINGINTERFACETEST_H_ */ diff --git a/AudioManagerDaemon/test/AmControlInterfaceTest/CMakeLists.txt b/AudioManagerDaemon/test/AmControlInterfaceTest/CMakeLists.txt deleted file mode 100644 index b21ca91..0000000 --- a/AudioManagerDaemon/test/AmControlInterfaceTest/CMakeLists.txt +++ /dev/null @@ -1,95 +0,0 @@ -# Copyright (C) 2012, BMW AG -# -# This file is part of GENIVI Project AudioManager. -# -# Contributions are licensed to the GENIVI Alliance under one or more -# Contribution License Agreements. -# -# copyright -# This Source Code Form is subject to the terms of the -# Mozilla Public License, v. 2.0. if a copy of the MPL was not distributed with -# this file, You can obtain one at http://mozilla.org/MPL/2.0/. -# -# author Christian Linke, christian.linke@bmw.de BMW 2011,2012 -# -# For further information see http://www.genivi.org/. -# - -cmake_minimum_required(VERSION 2.8.8) - -project(AmControlInterfaceTest) - -set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUNIT_TEST=1 -DDLT_CONTEXT=AudioManager") - -set (AM_LINK_LIBS - ${CMAKE_DL_LIBS} - AudioManagerUtilities - rt) - -IF (WITH_CAPI_WRAPPER) - set (AM_LINK_LIBS - ${AM_LINK_LIBS} - -Wl,--as-needed CommonAPI - ) -ENDIF (WITH_CAPI_WRAPPER) - -if(WITH_DATABASE_STORAGE) - pkg_check_modules(SQLITE REQUIRED sqlite3) - set (AM_LINK_LIBS - ${AM_LINK_LIBS} - ${SQLITE_LIBRARIES}) -endif(WITH_DATABASE_STORAGE) - -if(WITH_DLT) - pkg_check_modules(DLT REQUIRED automotive-dlt>=2.2.0) - set (AM_LINK_LIBS - ${AM_LINK_LIBS} - ${DLT_LIBRARIES}) -endif(WITH_DLT) - -INCLUDE_DIRECTORIES( - ${CMAKE_CURRENT_BINARY_DIR} - ${AUDIO_INCLUDE_FOLDER} - ${STD_INCLUDE_DIRS} - ${INCLUDE_FOLDER} - ${GOOGLE_TEST_INCLUDE_DIR} - ${GMOCK_INCLUDE_DIR}) - -if(WITH_DLT) - INCLUDE_DIRECTORIES( - ${INCLUDE_DIRECTORIES} - ${DLT_INCLUDE_DIRS}) -endif(WITH_DLT) - - -file(GLOB CONTROL_INTERFACE_SRCS_CXX - "${AUDIOMANAGER_DAEMON_FOLDER}/src/CAmDatabaseHandlerMap.cpp" - "${AUDIOMANAGER_DAEMON_FOLDER}/src/CAmDatabaseObserver.cpp" - "${AUDIOMANAGER_DAEMON_FOLDER}/src/CAmRoutingSender.cpp" - "${AUDIOMANAGER_DAEMON_FOLDER}/src/CAmRoutingReceiver.cpp" - "${AUDIOMANAGER_DAEMON_FOLDER}/src/CAmCommandSender.cpp" - "${AUDIOMANAGER_DAEMON_FOLDER}/src/CAmCommandReceiver.cpp" - "${AUDIOMANAGER_DAEMON_FOLDER}/src/CAmControlReceiver.cpp" - "${AUDIOMANAGER_DAEMON_FOLDER}/src/CAmControlSender.cpp" - "${AUDIOMANAGER_DAEMON_FOLDER}/src/CAmRouter.cpp" - "../CAmCommonFunctions.cpp" - "*.cpp" -) - -add_executable(AmControlInterfaceTest ${CONTROL_INTERFACE_SRCS_CXX}) - -TARGET_LINK_LIBRARIES(AmControlInterfaceTest - ${AM_LINK_LIBS} - gtest - gmock) - -ADD_DEPENDENCIES(AmControlInterfaceTest gtest gmock AudioManagerUtilities) - -INSTALL(TARGETS AmControlInterfaceTest - DESTINATION ${TEST_EXECUTABLE_INSTALL_PATH} - PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ - COMPONENT tests) - - - - |