Skip to content
This repository has been archived by the owner on Jan 28, 2021. It is now read-only.

Commit

Permalink
Add a test for reading a DevString RW forwarded attribute (tango-cont…
Browse files Browse the repository at this point in the history
  • Loading branch information
bourtemb committed Jan 11, 2019
1 parent 07eea09 commit 8b50924
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 2 deletions.
13 changes: 13 additions & 0 deletions cpp_test_suite/cpp_test_ds/DevTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ void DevTest::init_device()
PollLong_attr_num = 0;
PollString_spec_attr_num = 0;
attr_asyn_write_val = 42;
attr_string_rw = Tango::string_dup("The incredible initial string!");

Short_attr_except = false;
if (tg->is_svr_starting() == true || tg->is_device_restarting(device_name) == true)
Expand Down Expand Up @@ -948,6 +949,12 @@ void DevTest::write_State_attr_rw(Tango::WAttribute &att)
att.get_write_value(attr_state_rw);
}

void DevTest::write_String_attr_rw(Tango::WAttribute &att)
{
cout << "In write_String_attr_rw for attribute " << att.get_name() << endl;
att.get_write_value(attr_string_rw);
}

void DevTest::write_Float_attr_w(Tango::WAttribute &att)
{
cout << "In write_Float_attr_w for attribute " << att.get_name() << endl;
Expand Down Expand Up @@ -1473,6 +1480,12 @@ void DevTest::read_State_attr_rw(Tango::Attribute &att)
att.set_value(&attr_state_rw);
}

void DevTest::read_String_attr_rw(Tango::Attribute &att)
{
cout << "[DevTest::read_attr] attribute name String_attr_rw" << endl;
att.set_value(&attr_string_rw);
}

void DevTest::read_attr_asyn(Tango::Attribute &att)
{
cout << "[DevTest::read_attr] attribute attr_asyn" << endl;
Expand Down
3 changes: 3 additions & 0 deletions cpp_test_suite/cpp_test_ds/DevTest.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ public :
void read_ULong_attr_rw(Tango::Attribute &att);
void read_ULong64_attr_rw(Tango::Attribute &att);
void read_State_attr_rw(Tango::Attribute &att);
void read_String_attr_rw(Tango::Attribute &att);
void read_attr_asyn(Tango::Attribute &att);
void read_attr_asyn_to(Tango::Attribute &att);
void read_attr_asyn_except(Tango::Attribute &att);
Expand Down Expand Up @@ -162,6 +163,7 @@ public :
void write_ULong_attr_rw(Tango::WAttribute &att);
void write_ULong64_attr_rw(Tango::WAttribute &att);
void write_State_attr_rw(Tango::WAttribute &att);
void write_String_attr_rw(Tango::WAttribute &att);
void write_Short_attr_w(Tango::WAttribute &att);
void write_Short_attr_w2(Tango::WAttribute &att);
void write_Long_attr_w(Tango::WAttribute &att);
Expand Down Expand Up @@ -258,6 +260,7 @@ protected :
Tango::DevULong attr_ulong_rw;
Tango::DevULong64 attr_ulong64_rw;
Tango::DevState attr_state_rw;
Tango::DevString attr_string_rw;
Tango::DevLong attr_long;
Tango::DevLong64 attr_long64;
Tango::DevDouble attr_db_array[3];
Expand Down
1 change: 1 addition & 0 deletions cpp_test_suite/cpp_test_ds/DevTestClass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -846,6 +846,7 @@ void DevTestClass::attribute_factory(vector<Tango::Attr *> &att_list)
att_list.push_back(new ULong_attr_rwAttr());
att_list.push_back(new ULong64_attr_rwAttr());
att_list.push_back(new State_attr_rwAttr());
att_list.push_back(new String_attr_rwAttr());

att_list.push_back(new Long64_spec_attr_rwAttr());
att_list.push_back(new ULong_spec_attr_rwAttr());
Expand Down
12 changes: 12 additions & 0 deletions cpp_test_suite/cpp_test_ds/DevTestClass.h
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,18 @@ class State_attr_rwAttr: public Tango::Attr
{(static_cast<DevTest *>(dev))->write_State_attr_rw(att);}
};

class String_attr_rwAttr: public Tango::Attr
{
public:
String_attr_rwAttr():Attr("String_attr_rw", Tango::DEV_STRING, Tango::READ_WRITE) {};
~String_attr_rwAttr() {};

virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<DevTest *>(dev))->read_String_attr_rw(att);}
virtual void write(Tango::DeviceImpl *dev,Tango::WAttribute &att)
{(static_cast<DevTest *>(dev))->write_String_attr_rw(att);}
};


class Short_attr_wAttr: public Tango::Attr
{
Expand Down
3 changes: 3 additions & 0 deletions cpp_test_suite/cpp_test_ds/fwd_ds/FwdTestClass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,9 @@ void FwdTestClass::attribute_factory(vector<Tango::Attr *> &att_list)

FwdAttrImaStr *att4 = new FwdAttrImaStr("fwd_ima_string_rw");
att_list.push_back(att4);

FwdAttrScaStr *att5 = new FwdAttrScaStr("fwd_string_rw");
att_list.push_back(att5);

/*----- PROTECTED REGION END -----*/ // FwdTestClass::attribute_factory_before
// Create a list of static attributes
Expand Down
8 changes: 7 additions & 1 deletion cpp_test_suite/new_tests/conf_devtest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -478,7 +478,13 @@ int main(int argc, char **argv) {
db_data.push_back(fwd_att4);
db_data.push_back(root_att4);


Tango::DbDatum fwd_att5("fwd_string_rw");
Tango::DbDatum root_att5("__root_att");
fwd_att5 << (short) 1;
r_name = device1_name + "/string_attr_rw";;
root_att5 << r_name;
db_data.push_back(fwd_att5);
db_data.push_back(root_att5);

try {
db->put_device_attribute_property(fwd_dev_name, db_data);
Expand Down
11 changes: 10 additions & 1 deletion cpp_test_suite/new_tests/cxx_fwd_att.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ class FwdAttTestSuite: public CxxTest::TestSuite

void test_reading_forwarded_attribute(void)
{
DeviceAttribute short_attr, string_attr, sp_db, ima_str;
DeviceAttribute short_attr, string_attr, sp_db, ima_str, string_rw_attr;

// read attributes

Expand Down Expand Up @@ -317,6 +317,15 @@ class FwdAttTestSuite: public CxxTest::TestSuite
TS_ASSERT(v_str[0] == "Alors la, pour une surprise");
TS_ASSERT(v_str[1] == "c'est une surprise");
TS_ASSERT(v_str[2] == "Not initialised");

TS_ASSERT_THROWS_NOTHING(string_rw_attr = fwd_device->read_attribute("fwd_string_rw"));
string string_rw_str;
string_rw_attr >> string_rw_str;
TS_ASSERT(string_rw_attr.name == "fwd_string_rw");
TS_ASSERT(string_rw_attr.quality == Tango::ATTR_VALID);
TS_ASSERT(string_rw_attr.dim_x == 1);
TS_ASSERT(string_rw_attr.dim_y == 0);
TS_ASSERT(string_rw_str == "The incredible initial string!");
}

// Test attribute writing
Expand Down

0 comments on commit 8b50924

Please sign in to comment.