public:
NodeContext *nodes(void) { return &_node_ctx; }
+ const NodeContext *nodes(void) const { return &_node_ctx; }
InputContext *inputs(void) { return &_input_ctx; }
+ const InputContext *inputs(void) const { return &_input_ctx; }
OutputContext *outputs(void) { return &_output_ctx; }
+ const OutputContext *outputs(void) const { return &_output_ctx; }
private:
NodeContext _node_ctx;
ASSERT_THROW(g->nodes()->destroy(test_node), std::invalid_argument);
}
+TEST(GraphTest, getters_over_const_instance)
+{
+ auto g = loco::make_graph();
+
+ auto pull = g->nodes()->create<loco::Pull>();
+ auto push = g->nodes()->create<loco::Push>();
+
+ g->inputs()->create()->node(pull);
+ g->outputs()->create()->node(push);
+
+ auto ptr = const_cast<const loco::Graph *>(g.get());
+
+ EXPECT_EQ(ptr->nodes()->size(), 2);
+ EXPECT_EQ(ptr->inputs()->size(), 1);
+ EXPECT_EQ(ptr->inputs()->at(0)->node(), pull);
+ EXPECT_EQ(ptr->outputs()->at(0)->node(), push);
+}
+
TEST(GraphTest, graph_node_enumeration)
{
auto g = loco::make_graph();