blob: 178aadf985f61188ed98f9024fafaaf470e13467 [file] [log] [blame]
<!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>