Skip to content
Snippets Groups Projects
Commit 81f13810 authored by Sergey Yakubov's avatar Sergey Yakubov
Browse files

worker error codes, unittests for data broker creation

parent 434c3ebd
No related branches found
No related tags found
No related merge requests found
......@@ -7,18 +7,21 @@
namespace hidra2 {
class DataBroker {
public:
inline virtual int connect()=0;
enum class WorkerErrorCode {
ERR__NO_ERROR,
ERR__MEMORY_ERROR,
ERR__EMPTY_DATASOURCE
};
class DataBrokerFactory{
class DataBroker {
public:
static std::unique_ptr<DataBroker> create(std::string source_name) noexcept;
virtual WorkerErrorCode Connect()=0;
};
class DataBrokerFactory {
public:
static std::unique_ptr<DataBroker> Create(const std::string &source_name, WorkerErrorCode* return_code) noexcept;
};
}
#endif //HIDRA2_DATASOURCE_H
......@@ -3,19 +3,24 @@
namespace hidra2 {
std::unique_ptr<DataBroker> DataBrokerFactory::Create(const std::string &source_name,
WorkerErrorCode* return_code) noexcept {
std::unique_ptr<DataBroker> DataBrokerFactory::create(std::string source_name) noexcept {
std::unique_ptr<DataBroker> p;
try {
p = (std::unique_ptr<DataBroker>)new FolderDataBroker(source_name);
}
catch (...){
if (source_name.empty()) {
*return_code = WorkerErrorCode::ERR__EMPTY_DATASOURCE;
return nullptr;
}
std::unique_ptr<DataBroker> p = nullptr;
try {
p = (std::unique_ptr<DataBroker>) new FolderDataBroker(source_name);
*return_code = WorkerErrorCode::ERR__NO_ERROR;
} catch (...) { // we do not test this part
*return_code = WorkerErrorCode::ERR__MEMORY_ERROR;
}
return p;
};
}
#include "folder_data_broker.h"
#include <iostream>
namespace hidra2 {
FolderDataBroker::FolderDataBroker(std::string source_name)
: source_name_{source_name} {
FolderDataBroker::FolderDataBroker(const std::string &source_name) : source_name_{source_name},
io_{nullptr} {
}
int FolderDataBroker::connect() {
return 0;
WorkerErrorCode FolderDataBroker::Connect() {
return WorkerErrorCode::ERR__NO_ERROR;
}
void FolderDataBroker::set_io_(void* io) {
io_ = io;
}
}
\ No newline at end of file
......@@ -9,12 +9,16 @@ namespace hidra2 {
class FolderDataBroker final: public hidra2::DataBroker {
public:
FolderDataBroker(std::string source_name);
int connect() override;
private:
explicit FolderDataBroker(const std::string& source_name);
WorkerErrorCode Connect() override;
void set_io_(void* io);
private:
std::string source_name_;
void* io_;
};
}
#endif //HIDRA2_FOLDERDATABROKER_H
......@@ -4,17 +4,47 @@
#include "../src/folder_data_broker.h"
using hidra2::DataBrokerFactory;
using hidra2::DataBroker;
using hidra2::FolderDataBroker;
using hidra2::WorkerErrorCode;
namespace {
TEST(WorkerAPI, CanCreateFolderDataSource) {
{
auto data_broker = DataBrokerFactory::create("path/to/file");
TEST(DataBrokerFactoryTests, CreateFolderDataSource) {
WorkerErrorCode return_code;
auto data_broker = DataBrokerFactory::Create("path/to/file", &return_code);
EXPECT_EQ(return_code, WorkerErrorCode::ERR__NO_ERROR);
EXPECT_NE(dynamic_cast<FolderDataBroker*>(data_broker.release()), nullptr);
}
TEST(DataBrokerFactoryTests, FailCreateDataSourceWithEmptySource) {
WorkerErrorCode return_code;
auto data_broker = DataBrokerFactory::Create("", &return_code);
EXPECT_EQ(return_code, WorkerErrorCode::ERR__EMPTY_DATASOURCE);
EXPECT_EQ(data_broker.release(), nullptr);
}
class FolderDataBrokerTests : public ::testing::Test {
public:
FolderDataBroker* data_broker;
void SetUp() override {
data_broker = new FolderDataBroker("/path/to/file");
data_broker->set_io_(nullptr);
}
void TearDown() override {
delete data_broker;
data_broker = nullptr;
}
SUCCEED();
// EXPECT_NE(dynamic_cast<FolderDataBroker*>(data_broker.release()),nullptr);
};
TEST_F(FolderDataBrokerTests, ConnectPreparesFileList){
auto return_code= data_broker->Connect();
EXPECT_EQ(return_code, WorkerErrorCode::ERR__NO_ERROR);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment