#include #include #include #include #include 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); }