|
|
@@ -10,6 +10,11 @@ struct element_stub {
|
|
|
intrusive_node<element_stub> node1;
|
|
|
};
|
|
|
|
|
|
+struct twonode_stub {
|
|
|
+ twonode_stub() : node1(this), node2(this) { }
|
|
|
+ intrusive_node<twonode_stub> node1, node2;
|
|
|
+};
|
|
|
+
|
|
|
class intrusive_list_TestSuite : public CxxTest::TestSuite {
|
|
|
public:
|
|
|
void test_erases_on_destruction() {
|
|
|
@@ -49,4 +54,15 @@ public:
|
|
|
TS_ASSERT( list1.empty() );
|
|
|
TS_ASSERT_EQUALS( list2.size(), 1 );
|
|
|
}
|
|
|
+
|
|
|
+ void test_element_with_multiple_nodes_can_be_in_multiple_lists() {
|
|
|
+ intrusive_list<twonode_stub> list1 { &twonode_stub::node1 };
|
|
|
+ intrusive_list<twonode_stub> list2 { &twonode_stub::node2 };
|
|
|
+ twonode_stub stub;
|
|
|
+ list1.push_back( & stub );
|
|
|
+ list2.push_back( & stub );
|
|
|
+ TS_ASSERT_EQUALS( list1.size(), 1 );
|
|
|
+ TS_ASSERT_EQUALS( list2.size(), 1 );
|
|
|
+ TS_ASSERT_EQUALS( &list1.front(), &list2.front() );
|
|
|
+ }
|
|
|
};
|