Browse Source

Adding test case that shows element belonging to multiple lists using different nodes.

Samuel Jaffe 9 years ago
parent
commit
e058932fb6
1 changed files with 16 additions and 0 deletions
  1. 16 0
      intrusive_list.t.h

+ 16 - 0
intrusive_list.t.h

@@ -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() );
+  }
 };