22 #include <sys/types.h>
23 #include <system_error>
25 #include "gtest/gtest.h"
36 #define PROP_COUNT 100
38 static void startIndiSetProp(
ProcessController & indiSetProp,
const std::vector<std::string>& args) {
40 std::string indiSetPropPath =
getTestExePath(
"../tools/indi_setprop");
42 indiSetProp.
start(indiSetPropPath, args);
45 static void driverIsAskedProps(
DriverMock & fakeDriver) {
46 fakeDriver.
cnx.
expectXml(
"<getProperties version='1.7'/>");
47 fprintf(stderr,
"getProperties received\n");
50 fakeDriver.
cnx.
send(
"<defNumberVector device='fakedev1' name='testnumber" +
std::to_string(i) +
"' label='test label' group='test_group' state='Idle' perm='rw' timeout='100' timestamp='2018-01-01T00:00:00'>\n");
51 fakeDriver.
cnx.
send(
"<defNumber name='content' label='content' min='0' max='100' step='1'>50</defNumber>\n");
52 fakeDriver.
cnx.
send(
"</defNumberVector>\n");
65 fprintf(stderr,
"indiserver started\n");
68 fprintf(stderr,
"fake driver started\n");
70 driverIsAskedProps(fakeDriver);
74 TEST(TestIndiSetProperties, SetFirstPropertyUntyped) {
78 startFakeDev1(indiServer, fakeDriver);
81 startIndiSetProp(indiSetProp, {
"-p",
std::to_string(indiServer.
getTcpPort()),
"-v",
"fakedev1.testnumber0.content=8" });
83 driverIsAskedProps(fakeDriver);
89 fakeDriver.
cnx.
expectXml(
"<newNumberVector device='fakedev1' name='testnumber0'>");
102 TEST(TestIndiSetProperties, SetFirstPropertyTyped) {
106 startFakeDev1(indiServer, fakeDriver);
109 startIndiSetProp(indiSetProp, {
"-p",
std::to_string(indiServer.
getTcpPort()),
"-v",
"-n",
"fakedev1.testnumber0.content=8" });
115 fakeDriver.
cnx.
expectXml(
"<newNumberVector device='fakedev1' name='testnumber0'>");
128 TEST(TestIndiSetProperties, SetLastProperty) {
132 startFakeDev1(indiServer, fakeDriver);
137 driverIsAskedProps(fakeDriver);
156 TEST(TestIndiSetProperties, SetLastPropertyTyped) {
160 startFakeDev1(indiServer, fakeDriver);
TEST(TestIndiSetProperties, SetFirstPropertyUntyped)
void expect(const std::string &content)
void send(const std::string &content)
void expectXml(const std::string &xml)
void startDriver(const std::string &driver)
void expectExitCode(int e)
void start(const std::string &path, const std::vector< std::string > &args)
void waitProcessEnd(int expectedExitCode)
NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string(const NLOHMANN_BASIC_JSON_TPL &j)
user-defined to_string function for JSON values
std::string getTestExePath(const std::string &str)