JD2022-TU1/main/unittests/gameplay/Managers/DataProviders/DataProvider.cpp

130 lines
No EOL
4.7 KiB
C++

#include "precompiled_unittests_gameplay.h"
#include "DataProvider_Testable.h"
#include "DataProviderClient_Empty.h"
#include "../../../core/AdaptersInterfaces/System_Adapter_Empty.h"
#include "../tests/gtest.h"
namespace ITF
{
// gtest & gmock use namespace testing
using namespace testing;
///////////////////////////////////////////////////////////////////////
TEST(DataProvider, test_addDataDescriptorWithRefreshDurationShouldCallRefreshDataDescriptor)
///////////////////////////////////////////////////////////////////////
{
// Setup
CREATE_CLASS_SINGLETON(SystemAdapter_Empty); // needed for data provider remove client
// Arrange
f32 dt = 0.1f;
u32 nbUpdate = 3;
DataProvider_Testable dataProvider;
DataProviderClient_Empty client;
dataProvider.addDataDescriptor(client.getTestData(), dt * (f32)nbUpdate);
// Act - assert
EXPECT_BTRUE(dataProvider.addClient(&client));
dataProvider.update(dt);
EXPECT_NOT_NULL(dataProvider.m_refreshDataDescForTest); // a refresh is done for the first time
dataProvider.m_refreshDataDescForTest = NULL;
dataProvider.update(dt);
EXPECT_NULL(dataProvider.m_refreshDataDescForTest); // On this update RefreshDataDescriptor should not be called because we don't have enough dt
for(u32 u = 0 ; u < nbUpdate ; ++u)
{
dataProvider.update(dt);
}
EXPECT_NOT_NULL(dataProvider.m_refreshDataDescForTest); // On this update RefreshDataDescriptor should be called
// TearDown
dataProvider.removeClient(&client);
DESTROY_CLASS_SINGLETON(SystemAdapter_Empty);
}
///////////////////////////////////////////////////////////////////////
TEST(DataProvider, test_getDataDescriptorWithStringIdShouldSuccess)
///////////////////////////////////////////////////////////////////////
{
// Arrange
DataProvider_Testable dataProvider;
StringID dataName("SONGNAME");
// Act
DataProvider::DataDesc* setDatadesc = dataProvider.addDataDescriptor(dataName);
DataProvider::DataDesc* getDatadesc = dataProvider.getDataDescriptor(dataName);
EXPECT_NOT_NULL(getDatadesc);
EXPECT_EQ(setDatadesc, getDatadesc);
}
///////////////////////////////////////////////////////////////////////
TEST(DataProvider, test_getDataDescriptorWithStringShouldSuccess)
///////////////////////////////////////////////////////////////////////
{
// Arrange
DataProvider_Testable dataProvider;
const char* dataName = "SONGNAME";
// Act
DataProvider::DataDesc* setDatadesc = dataProvider.addDataDescriptor(dataName);
DataProvider::DataDesc* getDatadesc = dataProvider.getDataDescriptor(dataName);
EXPECT_NOT_NULL(getDatadesc);
EXPECT_EQ(setDatadesc, getDatadesc);
}
///////////////////////////////////////////////////////////////////////
TEST(DataProvider, test_getDataDescriptorWhithUnknownShouldReturnNull)
///////////////////////////////////////////////////////////////////////
{
// Arrange
DataProvider_Testable dataProvider;
StringID dataName("SONGNAME");
// Act
DataProvider::DataDesc* getDatadesc = dataProvider.getDataDescriptor(dataName);
// Assert
EXPECT_NULL(getDatadesc);
}
///////////////////////////////////////////////////////////////////////
TEST(DataProvider, test_addClientWithNullShouldReturnFalse)
///////////////////////////////////////////////////////////////////////
{
// Arrange
DataProvider dataProvider;
// Act - assert
EXPECT_BFALSE(dataProvider.addClient(NULL));
}
///////////////////////////////////////////////////////////////////////
TEST(DataProvider, test_addAndRemoveClientShouldSuccess)
///////////////////////////////////////////////////////////////////////
{
// Setup
CREATE_CLASS_SINGLETON(SystemAdapter_Empty); // needed for data provider remove client
// Arrange
DataProvider_Testable dataProvider;
DataProviderClient_Empty client;
dataProvider.addDataDescriptor(client.getTestData());
// Act - assert
EXPECT_BTRUE(dataProvider.addClient(&client));
ITF_VECTOR<IDataProviderClient*> clients;
dataProvider.getClients(clients);
EXPECT_NE(-1, clients.find(&client)); // Check if the client is properly added
dataProvider.removeClient(&client);
clients.clear();
dataProvider.getClients(clients);
EXPECT_EQ(-1, clients.find(&client)); // Check if the client is properly removed
// TearDown
DESTROY_CLASS_SINGLETON(SystemAdapter_Empty);
}
}