@@ -89,22 +89,53 @@ void BaseTestFeature::testDataArrayFeature() {
8989 CPPUNIT_ASSERT_THROW (f.data (a), UninitializedEntity);
9090
9191 Feature rp = tag.createFeature (data_array, nix::LinkType::Tagged);
92+ tag.hasFeature (rp.id ());
93+ tag.getFeature (rp.id ());
94+ Feature ft2 = tag.getFeature (data_array.name ());
95+ CPPUNIT_ASSERT (ft2 && ft2.dataArray ().name () == data_array.name ());
96+ CPPUNIT_ASSERT (ft2 && ft2.id () == rp.id ());
97+
9298 DataArray da_2 = block.createDataArray (" array2" , " Test" ,
9399 DataType::Double, nix::NDSize ({ 0 }));
100+ CPPUNIT_ASSERT (rp.dataArray ().id () == data_array.id ());
94101 CPPUNIT_ASSERT (rp.data ().id () == data_array.id ());
95102 rp.data (da_2);
96- CPPUNIT_ASSERT (rp.data ().id () == da_2.id ());
103+ CPPUNIT_ASSERT (rp.dataArray ().id () == da_2.id ());
104+ CPPUNIT_ASSERT_THROW (rp.dataFrame (), std::runtime_error);
97105 block.deleteDataArray (da_2.id ());
98106 // make sure link is gone with deleted data array
99- CPPUNIT_ASSERT (rp.data () == nix::none);
107+ CPPUNIT_ASSERT (rp.dataArray () == nix::none);
100108 CPPUNIT_ASSERT_THROW (rp.data (" " ), EmptyString);
101109 CPPUNIT_ASSERT_THROW (rp.data (" worng_id" ), std::runtime_error);
102110 tag.deleteFeature (rp.id ());
103111}
104112
105113
106114void BaseTestFeature::testDataFrameFeature () {
107- Feature ft = tag.createFeature (data_frame, nix::LinkType::Indexed);
115+ DataFrame df;
116+ Feature ft;
117+ CPPUNIT_ASSERT_THROW (tag.createFeature (df, nix::LinkType::Tagged), UninitializedEntity);
118+ CPPUNIT_ASSERT_THROW (ft.data (df), UninitializedEntity);
119+ std::vector<nix::Column> cols = {
120+ {" bool" , " " , nix::DataType::Bool},
121+ {" int32" , " V" , nix::DataType::Int32}};
122+ df = block.createDataFrame (" df" , " test_df" , cols);
123+ ft = tag.createFeature (df, nix::LinkType::Untagged);
124+ ft.data (df.name ());
125+ block.deleteDataFrame (df);
126+ CPPUNIT_ASSERT_THROW (ft.data (df), UninitializedEntity);
127+ CPPUNIT_ASSERT (ft.dataFrame () == nix::none);
128+ CPPUNIT_ASSERT_THROW (ft.data (" " ), EmptyString);
129+ CPPUNIT_ASSERT_THROW (ft.data (" worng_id" ), std::runtime_error);
130+ CPPUNIT_ASSERT_THROW (ft.dataArray (), std::runtime_error);
131+ CPPUNIT_ASSERT_THROW (ft.data (), std::runtime_error);
132+
133+ ft = tag.createFeature (data_frame, nix::LinkType::Indexed);
134+
135+ DataFrame df2 = ft.dataFrame ();
136+ Feature ft2 = tag.getFeature (data_frame.name ());
137+ CPPUNIT_ASSERT (ft2 && ft2.dataFrame ().name () == data_frame.name ());
138+ CPPUNIT_ASSERT (ft2 && ft2.id () == ft.id ());
108139 CPPUNIT_ASSERT (ft.targetType () == nix::TargetType::DataFrame && ft.linkType () == nix::LinkType::Indexed);
109140 tag.deleteFeature (ft.id ());
110141
0 commit comments