src.dualinventive.com/dinet/libdipp/tests/application.cpp

84 lines
1.8 KiB
C++

#include <memory>
#include <iostream>
#include <fstream>
#include <di/Application.h>
#include <gtest/gtest.h>
using namespace Di;
using namespace std;
static int defconfCall;
static int initCall;
static int runCall;
static int stopCall;
static int appnameCall;
static int appversionCall;
class Apptest : public Application {
public:
void loadDefaultConfig(void) {
defconfCall++;
}
int init(void) {
++initCall;
return 0;
}
int run(void) {
return ++runCall;
}
void stop(void) {
stopCall++;
}
std::string getApplicationName(void) {
appnameCall++;
return "testapp";
}
std::string getApplicationVersion(void) {
appversionCall++;
return "0.0.0";
}
};
TEST(Application, dieNoFile) {
Apptest t;
EXPECT_EXIT(t.globalInit(0, nullptr), ::testing::ExitedWithCode(1), "");
EXPECT_EQ(defconfCall, 0);
EXPECT_EQ(initCall, 0);
EXPECT_EQ(runCall, 0);
EXPECT_EQ(stopCall, 0);
EXPECT_EQ(appnameCall, 0);
EXPECT_EQ(appversionCall, 0);
}
TEST(Application, dieNoCustomFile) {
Apptest t;
char *argv[] = {"appname", "configfile.conf"};
EXPECT_EXIT(t.globalInit(2, argv), ::testing::ExitedWithCode(1), "");
EXPECT_EQ(defconfCall, 0);
EXPECT_EQ(initCall, 0);
EXPECT_EQ(runCall, 0);
EXPECT_EQ(stopCall, 0);
EXPECT_EQ(appnameCall, 0);
EXPECT_EQ(appversionCall, 0);
}
TEST(Application, findCustomFile) {
Apptest t;
ofstream testFile;
system("mkdir -p /tmp/di/etc;chmod 777 /tmp/di/etc");
testFile.open("/tmp/di/etc/test_libdipp_application.json", ofstream::out);
testFile << "{}" << endl;
testFile.close();
char *argv[] = {"appname", "/tmp/di/etc/test_libdipp_application.json"};
t.globalInit(2, argv);
EXPECT_EQ(defconfCall, 1);
EXPECT_EQ(initCall, 1);
EXPECT_EQ(runCall, 0);
EXPECT_EQ(stopCall, 0);
EXPECT_EQ(appnameCall, 2);
EXPECT_EQ(appversionCall, 1);
}