class VirtualTableTests : public testing::Test {};
-TEST(VirtualTableTests, time_row_at) {
+TEST(VirtualTableTests, time_row_at)
+{
Time result = { -1, -1, -1 };
VirtualRow<Time> time;
EXPECT_NE(result.seconds, -1);
}
-TEST(VirtualTableTests, time_row_arry_op) {
+TEST(VirtualTableTests, time_row_arry_op)
+{
Time result = { -1, -1, -1 };
VirtualRow<Time> time;
EXPECT_NE(result.seconds, -1);
}
-TEST(VirtualTableTests, processes_table) {
+TEST(VirtualTableTests, processes_table)
+{
Processes result;
VirtualTable<Processes> processes;
EXPECT_TRUE(processes.size() > 0);
}
}
-TEST(VirtualTableTests, policy_int_table) {
+TEST(VirtualTableTests, policy_int_table)
+{
VirtualTable<Policy<int>> table;
EXPECT_TRUE(table.size() > 0);
}
}
-TEST(VirtualTableTests, policy_str_table) {
+TEST(VirtualTableTests, policy_int_filter)
+{
+ VirtualTable<Policy<int>> table;
+ EXPECT_TRUE(table.size() > 0);
+
+ auto row = table.filter(&Policy<int>::name, "sample-int-policy");
+ auto value = row[&Policy<int>::value];
+ EXPECT_TRUE(value > 0);
+ EXPECT_EQ(row[&Policy<int>::name], "sample-int-policy");
+}
+
+TEST(VirtualTableTests, policy_str_table)
+{
VirtualTable<Policy<std::string>> table;
EXPECT_TRUE(table.size() > 0);
INFO(VIST_CLIENT) << "\t value: " << policy.value;
}
}
+
+TEST(VirtualTableTests, policy_str_filter)
+{
+ VirtualTable<Policy<std::string>> table;
+ EXPECT_TRUE(table.size() > 0);
+
+ auto row = table.filter(&Policy<std::string>::name, "sample-str-policy");
+ auto value = row[&Policy<std::string>::value];
+ EXPECT_TRUE(!value.empty());
+ EXPECT_EQ(row[&Policy<std::string>::name], "sample-str-policy");
+}
using Iter = typename std::vector<VirtualRow<T>>::iterator;
using CIter = typename std::vector<VirtualRow<T>>::const_iterator;
- inline Iter begin() { return dataset.begin(); }
- inline CIter begin() const { return dataset.cbegin(); }
- inline Iter end() { return dataset.end(); }
- inline CIter end() const { return dataset.end(); }
+ inline Iter begin() { return rows.begin(); }
+ inline CIter begin() const { return rows.cbegin(); }
+ inline Iter end() { return rows.end(); }
+ inline CIter end() const { return rows.end(); }
- inline std::size_t size() const { return dataset.size(); }
+ inline std::size_t size() const { return rows.size(); }
+
+ template<typename Struct, typename Member>
+ VirtualRow<T>& filter(Member Struct::*field, const std::string& value)
+ {
+ for (auto& row : this->rows)
+ if (row[field] == value)
+ return row;
+ }
private:
- std::vector<VirtualRow<T>> dataset;
+ std::vector<VirtualRow<T>> rows;
};
} // namespace vist