| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| |
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
| <head> |
| <meta name="generator" content= |
| "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> |
| |
| <title>Associative-Container Regression Tests</title> |
| <meta http-equiv="Content-Type" content= |
| "text/html; charset=us-ascii" /> |
| </head> |
| |
| <body> |
| <div id="page"> |
| <h1>Associative-Container Regression Tests</h1> |
| |
| <h2><a name="assoc_desc" id="assoc_desc">Description</a></h2> |
| |
| <p>The library contains a single comprehensive regression test. |
| For a given container type in <tt>pb_ds</tt>, the test creates |
| an object of the container type and an object of the |
| corresponding STL type (<i>e.g.</i>, <tt>std::set</tt>). It |
| then performs a random sequence of methods with random |
| arguments (<i>e.g.</i>, inserts, erases, and so forth) on both |
| objects. At each operation, the test checks the return value of |
| the method, and optionally both compares <tt>pb_ds</tt>'s |
| object with the STL's object as well as performing other |
| consistency checks on <tt>pb_ds</tt>'s object (<i>e.g.</i>, |
| order preservation, when applicable, or node invariants, when |
| applicable).</p> |
| |
| <p>Additionally, the test integrally checks exception safety |
| and resource leaks. This is done as follows. A special |
| allocator type, written for the purpose of the test, both |
| randomly throws an exceptions when allocations are performed, |
| and tracks allocations and de-allocations. The exceptions thrown |
| at allocations simulate memory-allocation failures; the |
| tracking mechanism checks for memory-related bugs (<i>e.g.</i>, |
| resource leaks and multiple de-allocations). Both |
| <tt>pb_ds</tt>'s containers and the containers' value-types are |
| configured to use this allocator.</p> |
| |
| <p>Due to compiler constraints, the test is split into the |
| several sources, each checking only some containers.</p> |
| |
| <h2><a name="assoc_tests" id="assoc_tests">Tests</a></h2> |
| |
| <h3><a name="assoc_tests_set" id="assoc_tests_set">"Set" |
| Tests</a></h3> |
| |
| <p>The following check all "set" types:</p> |
| |
| <ol> |
| <li><a href= |
| "../../../../testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc"><tt>hash_no_data_map_rand.cc</tt></a> |
| checks all hash-based "set" types.</li> |
| |
| <li><a href= |
| "../../../../testsuite/ext/pb_ds/regression/list_update_no_data_map_rand.cc"><tt>list_update_no_data_map_rand.cc</tt></a> |
| checks all list-based "set" types.</li> |
| |
| <li><a href= |
| "../../../../testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc"><tt>tree_no_data_map_rand.cc</tt></a> |
| checks all tree-based "set" types.</li> |
| |
| <li><a href= |
| "../../../../testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc"><tt>trie_no_data_map_rand.cc</tt></a> |
| checks all PATRICIA-trie-based "set" types.</li> |
| </ol> |
| |
| <h3><a name="assoc_tests_map" id="assoc_tests_map">"Map" |
| Tests</a></h3> |
| |
| <p>The following check all "map" types:</p> |
| |
| <ol> |
| <li><a href= |
| "../../../../testsuite/ext/pb_ds/regression/hash_data_map_rand.cc"><tt>hash_data_map_rand.cc</tt></a> |
| checks all hash-based "map" types.</li> |
| |
| <li><a href= |
| "../../../../testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc"><tt>list_update_data_map_rand.cc</tt></a> |
| checks all list-based "map" types.</li> |
| |
| <li><a href= |
| "../../../../testsuite/ext/pb_ds/regression/tree_data_map_rand.cc"><tt>tree_data_map_rand.cc</tt></a> |
| checks all tree-based "map" types.</li> |
| |
| <li><a href= |
| "../../../../testsuite/ext/pb_ds/regression/trie_data_map_rand.cc"><tt>trie_data_map_rand.cc</tt></a> |
| checks all PATRICIA-trie-based "map" types.</li> |
| </ol> |
| </div> |
| </body> |
| </html> |