23#include <system_error>
25#include "gtest/gtest.h"
38static void startIndiSetProp(
ProcessController & indiSetProp,
const std::vector<std::string>& args) {
40 std::string indiSetPropPath = INDI_SETPROP_PATH;
42 indiSetProp.
start(indiSetPropPath, args);
45static 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");
61 std::string fakeDriverPath = FAKEDRIVER_PATH;
65 fprintf(stderr,
"indiserver started\n");
68 fprintf(stderr,
"fake driver started\n");
70 driverIsAskedProps(fakeDriver);
74TEST(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'>");
102TEST(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'>");
128TEST(TestIndiSetProperties, SetLastProperty) {
132 startFakeDev1(indiServer, fakeDriver);
135 startIndiSetProp(indiSetProp, {
"-p", std::to_string(indiServer.
getTcpPort()),
"-v",
"fakedev1.testnumber" + std::to_string(
PROP_COUNT - 1) +
".content=8" });
137 driverIsAskedProps(fakeDriver);
143 fakeDriver.
cnx.
expectXml(
"<newNumberVector device='fakedev1' name='testnumber" + std::to_string(
PROP_COUNT - 1) +
"'>");
156TEST(TestIndiSetProperties, SetLastPropertyTyped) {
160 startFakeDev1(indiServer, fakeDriver);
163 startIndiSetProp(indiSetProp, {
"-p", std::to_string(indiServer.
getTcpPort()),
"-v",
"-n",
"fakedev1.testnumber" + std::to_string(
PROP_COUNT - 1) +
".content=8" });
169 fakeDriver.
cnx.
expectXml(
"<newNumberVector device='fakedev1' name='testnumber" + std::to_string(
PROP_COUNT - 1) +
"'>");
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)