• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Datasets generators</title>
5<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../../../../index.html" title="Boost.Test">
8<link rel="up" href="../test_case_generation.html" title="Data-driven test cases">
9<link rel="prev" href="operations.html" title="Operations on dataset">
10<link rel="next" href="../test_organization_templates.html" title="Template test cases">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr>
14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
15<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
16<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="operations.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../test_case_generation.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../test_organization_templates.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h5 class="title">
27<a name="boost_test.tests_organization.test_cases.test_case_generation.generators"></a><a class="link" href="generators.html" title="Datasets generators">Datasets
28          generators</a>
29</h5></div></div></div>
30<p>
31            Several <span class="emphasis"><em>generators</em></span> for datasets are implemented
32            in <span class="emphasis"><em>Unit Test Framework</em></span>:
33          </p>
34<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
35<li class="listitem">
36                <a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.singletons">Singletons</a>
37              </li>
38<li class="listitem">
39                <a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.stl"><code class="computeroutput"><span class="identifier">forward</span> <span class="identifier">iterable</span></code></a>
40                containers and <a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.c_arrays"><code class="computeroutput"><span class="identifier">C</span></code> array</a> like datasets
41              </li>
42<li class="listitem">
43                <a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.ranges">ranges</a>
44                or sequences of values
45              </li>
46<li class="listitem">
47                datasets made of <a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.random">random
48                numbers</a> and following a particular distribution
49              </li>
50</ul></div>
51<p>
52            <code class="computeroutput"><span class="identifier">stl</span></code> and <code class="computeroutput"><span class="identifier">C</span><span class="special">-</span><span class="identifier">array</span></code> generators are merely a dataset
53            view on existing collection, while ranges and random number sequences
54            are describing new datasets.
55          </p>
56<h5>
57<a name="boost_test.tests_organization.test_cases.test_case_generation.generators.h0"></a>
58            <span class="phrase"><a name="boost_test.tests_organization.test_cases.test_case_generation.generators.singletons"></a></span><a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.singletons">Singletons</a>
59          </h5>
60<p>
61            A singleton is a dataset containing a unique value. The size and arity
62            of such a dataset is 1. This value can be
63          </p>
64<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
65<li class="listitem">
66                either consumed once
67              </li>
68<li class="listitem">
69                or repeated as many times as needed in a zip operation
70              </li>
71</ul></div>
72<p>
73            As mentioned in <span class="emphasis"><em>zip</em></span>, when zipped with a distribution
74            of infinite size, the resulting dataset will have a size of 1.
75          </p>
76<p>
77            The singleton is constructible through the function <code class="computeroutput"><a class="link" href="../../../../boost/unit_test/data/make.html" title="Function make">boost::unit_test::data::make</a></code>.
78          </p>
79<h6>
80<a name="boost_test.tests_organization.test_cases.test_case_generation.generators.h1"></a>
81            <span class="phrase"><a name="boost_test.tests_organization.test_cases.test_case_generation.generators.example_descr"></a></span><a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.example_descr">Example:
82            Singleton</a>
83          </h6>
84<div class="informaltable"><table class="table">
85<colgroup><col></colgroup>
86<thead><tr><th>
87                    <p>
88                      Code
89                    </p>
90                  </th></tr></thead>
91<tbody><tr><td>
92<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TEST_MODULE</span> <span class="identifier">dataset_example65</span>
93<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
94<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">data</span><span class="special">/</span><span class="identifier">test_case</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
95<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">data</span><span class="special">/</span><span class="identifier">monomorphic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
96
97<span class="keyword">namespace</span> <span class="identifier">bdata</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">::</span><span class="identifier">data</span><span class="special">;</span>
98
99
100<span class="identifier">BOOST_DATA_TEST_CASE</span><span class="special">(</span>
101  <span class="identifier">test1</span><span class="special">,</span>
102  <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">make</span><span class="special">(</span><span class="number">2</span><span class="special">),</span>
103  <span class="identifier">singleton</span><span class="special">)</span>
104<span class="special">{</span>
105  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span>
106    <span class="special">&lt;&lt;</span> <span class="string">"test 1: "</span>
107    <span class="special">&lt;&lt;</span> <span class="identifier">singleton</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
108  <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="identifier">singleton</span> <span class="special">==</span> <span class="number">2</span><span class="special">);</span>
109<span class="special">}</span>
110
111<span class="identifier">BOOST_DATA_TEST_CASE</span><span class="special">(</span>
112  <span class="identifier">test2</span><span class="special">,</span>
113  <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">xrange</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special">^</span> <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">make</span><span class="special">(</span><span class="number">2</span><span class="special">),</span>
114  <span class="identifier">xr</span><span class="special">,</span> <span class="identifier">singleton</span><span class="special">)</span>
115<span class="special">{</span>
116  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span>
117    <span class="special">&lt;&lt;</span> <span class="string">"test 2: "</span>
118    <span class="special">&lt;&lt;</span> <span class="identifier">xr</span> <span class="special">&lt;&lt;</span> <span class="string">", "</span> <span class="special">&lt;&lt;</span> <span class="identifier">singleton</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
119  <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="identifier">singleton</span> <span class="special">==</span> <span class="number">2</span><span class="special">);</span>
120<span class="special">}</span>
121</pre>
122                  </td></tr></tbody>
123</table></div>
124<div class="informaltable"><table class="table">
125<colgroup><col></colgroup>
126<thead><tr><th>
127                    <p>
128                      Output
129                    </p>
130                  </th></tr></thead>
131<tbody><tr><td>
132<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">dataset_example65</span>
133<span class="identifier">Running</span> <span class="number">4</span> <span class="identifier">test</span> <span class="identifier">cases</span><span class="special">...</span>
134<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">2</span>
135<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="number">0</span><span class="special">,</span> <span class="number">2</span>
136<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="number">1</span><span class="special">,</span> <span class="number">2</span>
137<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="number">2</span><span class="special">,</span> <span class="number">2</span>
138
139<span class="special">***</span> <span class="identifier">No</span> <span class="identifier">errors</span> <span class="identifier">detected</span>
140</pre>
141                  </td></tr></tbody>
142</table></div>
143<h5>
144<a name="boost_test.tests_organization.test_cases.test_case_generation.generators.h2"></a>
145            <span class="phrase"><a name="boost_test.tests_organization.test_cases.test_case_generation.generators.c_arrays"></a></span><a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.c_arrays">Datasets
146            from C arrays</a>
147          </h5>
148<p>
149            This type of datasets does not contains the logic for generating the
150            sequence of values, and is used as a wrapper on an existing sequence
151            contained in a <code class="computeroutput"><span class="identifier">C</span></code> array.
152            The arity is 1 and the size is the size of the array.
153          </p>
154<p>
155            Such datasets are simply constructed from an overload of the <code class="computeroutput"><a class="link" href="../../../../boost/unit_test/data/make.html" title="Function make">make</a></code>
156            function.
157          </p>
158<h6>
159<a name="boost_test.tests_organization.test_cases.test_case_generation.generators.h3"></a>
160            <span class="phrase"><a name="boost_test.tests_organization.test_cases.test_case_generation.generators.example_descr0"></a></span><a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.example_descr0">Example:
161            Array</a>
162          </h6>
163<div class="informaltable"><table class="table">
164<colgroup><col></colgroup>
165<thead><tr><th>
166                    <p>
167                      Code
168                    </p>
169                  </th></tr></thead>
170<tbody><tr><td>
171<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TEST_MODULE</span> <span class="identifier">dataset_example66</span>
172<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
173<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">data</span><span class="special">/</span><span class="identifier">test_case</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
174<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">data</span><span class="special">/</span><span class="identifier">monomorphic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
175
176<span class="keyword">namespace</span> <span class="identifier">bdata</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">::</span><span class="identifier">data</span><span class="special">;</span>
177
178<span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">arr</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span><span class="string">"cat"</span><span class="special">,</span> <span class="string">"dog"</span><span class="special">};</span>
179
180<span class="identifier">BOOST_DATA_TEST_CASE</span><span class="special">(</span>
181  <span class="identifier">test1</span><span class="special">,</span>
182  <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">xrange</span><span class="special">(</span><span class="number">2</span><span class="special">)</span> <span class="special">^</span> <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">make</span><span class="special">(</span><span class="identifier">arr</span><span class="special">),</span>
183  <span class="identifier">xr</span><span class="special">,</span> <span class="identifier">array_element</span><span class="special">)</span>
184<span class="special">{</span>
185  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"test 1: "</span>
186    <span class="special">&lt;&lt;</span> <span class="identifier">xr</span> <span class="special">&lt;&lt;</span> <span class="string">", "</span>
187    <span class="special">&lt;&lt;</span> <span class="identifier">array_element</span>
188    <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
189  <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="identifier">array_element</span> <span class="special">!=</span> <span class="string">"mammoth"</span><span class="special">);</span>
190<span class="special">}</span>
191</pre>
192                  </td></tr></tbody>
193</table></div>
194<div class="informaltable"><table class="table">
195<colgroup><col></colgroup>
196<thead><tr><th>
197                    <p>
198                      Output
199                    </p>
200                  </th></tr></thead>
201<tbody><tr><td>
202<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">dataset_example66</span>
203<span class="identifier">Running</span> <span class="number">2</span> <span class="identifier">test</span> <span class="identifier">cases</span><span class="special">...</span>
204<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">cat</span>
205<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">dog</span>
206
207<span class="special">***</span> <span class="identifier">No</span> <span class="identifier">errors</span> <span class="identifier">detected</span>
208</pre>
209                  </td></tr></tbody>
210</table></div>
211<h5>
212<a name="boost_test.tests_organization.test_cases.test_case_generation.generators.h4"></a>
213            <span class="phrase"><a name="boost_test.tests_organization.test_cases.test_case_generation.generators.stl"></a></span><a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.stl">Datasets
214            from forward iterable containers</a>
215          </h5>
216<p>
217            As for <code class="computeroutput"><span class="identifier">C</span></code> arrays, this
218            type of datasets does not contain the logic for generating sequence of
219            values, and are used for parsing an existing sequence. The arity is 1
220            and the size is the same as the one of the container.
221          </p>
222<div class="tip"><table border="0" summary="Tip">
223<tr>
224<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../../../../../doc/src/images/tip.png"></td>
225<th align="left">Tip</th>
226</tr>
227<tr><td align="left" valign="top"><p>
228              C++11 implementation enables the dataset generation from any container
229              which iterator implements the forward iterator concept. For C++03,
230              the feature is enabled on most STL containers.
231            </p></td></tr>
232</table></div>
233<h6>
234<a name="boost_test.tests_organization.test_cases.test_case_generation.generators.h5"></a>
235            <span class="phrase"><a name="boost_test.tests_organization.test_cases.test_case_generation.generators.example_descr1"></a></span><a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.example_descr1">Example:
236            Dataset from <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span></code> and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span></code></a>
237          </h6>
238<div class="informaltable"><table class="table">
239<colgroup><col></colgroup>
240<thead><tr><th>
241                    <p>
242                      Code
243                    </p>
244                  </th></tr></thead>
245<tbody><tr><td>
246<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TEST_MODULE</span> <span class="identifier">example67</span>
247<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
248<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">data</span><span class="special">/</span><span class="identifier">test_case</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
249<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">data</span><span class="special">/</span><span class="identifier">monomorphic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
250<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">sstream</span><span class="special">&gt;</span>
251
252<span class="keyword">namespace</span> <span class="identifier">bdata</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">::</span><span class="identifier">data</span><span class="special">;</span>
253
254<span class="comment">// Generates a Fibonacci sequence</span>
255<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="identifier">fibonacci</span><span class="special">()</span> <span class="special">{</span>
256  <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="identifier">ret</span><span class="special">(</span><span class="number">8</span><span class="special">);</span>
257  <span class="identifier">ret</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
258  <span class="identifier">ret</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
259
260  <span class="keyword">for</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">s</span><span class="special">(</span><span class="number">2</span><span class="special">);</span> <span class="identifier">s</span> <span class="special">&lt;</span> <span class="identifier">ret</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span> <span class="identifier">s</span><span class="special">++)</span>
261  <span class="special">{</span>
262    <span class="identifier">ret</span><span class="special">[</span><span class="identifier">s</span><span class="special">]</span> <span class="special">=</span> <span class="identifier">ret</span><span class="special">[</span><span class="identifier">s</span><span class="special">-</span><span class="number">1</span><span class="special">]</span> <span class="special">+</span> <span class="identifier">ret</span><span class="special">[</span><span class="identifier">s</span><span class="special">-</span><span class="number">2</span><span class="special">];</span>
263  <span class="special">}</span>
264  <span class="keyword">return</span> <span class="identifier">ret</span><span class="special">;</span>
265<span class="special">}</span>
266
267<span class="identifier">BOOST_DATA_TEST_CASE</span><span class="special">(</span>
268  <span class="identifier">test1</span><span class="special">,</span>
269  <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">make</span><span class="special">(</span><span class="identifier">fibonacci</span><span class="special">()),</span>
270  <span class="identifier">array_element</span><span class="special">)</span>
271<span class="special">{</span>
272  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"test 1: "</span>
273    <span class="special">&lt;&lt;</span> <span class="identifier">array_element</span>
274    <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
275  <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="identifier">array_element</span> <span class="special">&lt;=</span> <span class="number">13</span><span class="special">);</span>
276<span class="special">}</span>
277
278
279<span class="comment">// Generates a map from a vector</span>
280<span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="keyword">float</span><span class="special">&gt;</span> <span class="identifier">vect_2_str</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="identifier">v</span><span class="special">)</span>
281<span class="special">{</span>
282  <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="keyword">float</span><span class="special">&gt;</span> <span class="identifier">out</span><span class="special">;</span>
283  <span class="keyword">for</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">s</span><span class="special">(</span><span class="number">0</span><span class="special">);</span> <span class="identifier">s</span> <span class="special">&lt;</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span> <span class="identifier">s</span><span class="special">++)</span>
284  <span class="special">{</span>
285    <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostringstream</span> <span class="identifier">o</span><span class="special">;</span>
286    <span class="identifier">o</span> <span class="special">&lt;&lt;</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">s</span><span class="special">];</span>
287    <span class="identifier">out</span><span class="special">[</span><span class="identifier">o</span><span class="special">.</span><span class="identifier">str</span><span class="special">()]</span> <span class="special">=</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">s</span><span class="special">];</span>
288  <span class="special">}</span>
289  <span class="keyword">return</span> <span class="identifier">out</span><span class="special">;</span>
290<span class="special">}</span>
291
292<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="keyword">float</span><span class="special">&gt;</span> <span class="identifier">pair_map_t</span><span class="special">;</span>
293<span class="identifier">BOOST_TEST_DONT_PRINT_LOG_VALUE</span><span class="special">(</span> <span class="identifier">pair_map_t</span> <span class="special">)</span>
294
295<span class="identifier">BOOST_DATA_TEST_CASE</span><span class="special">(</span>
296  <span class="identifier">test2</span><span class="special">,</span>
297  <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">make</span><span class="special">(</span><span class="identifier">vect_2_str</span><span class="special">(</span><span class="identifier">fibonacci</span><span class="special">())),</span>
298  <span class="identifier">array_element</span><span class="special">)</span>
299<span class="special">{</span>
300  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"test 2: \""</span>
301    <span class="special">&lt;&lt;</span> <span class="identifier">array_element</span><span class="special">.</span><span class="identifier">first</span> <span class="special">&lt;&lt;</span> <span class="string">"\", "</span>
302    <span class="special">&lt;&lt;</span> <span class="identifier">array_element</span><span class="special">.</span><span class="identifier">second</span>
303    <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
304  <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="identifier">array_element</span><span class="special">.</span><span class="identifier">second</span> <span class="special">&lt;=</span> <span class="number">13</span><span class="special">);</span>
305<span class="special">}</span>
306</pre>
307                  </td></tr></tbody>
308</table></div>
309<div class="informaltable"><table class="table">
310<colgroup><col></colgroup>
311<thead><tr><th>
312                    <p>
313                      Output
314                    </p>
315                  </th></tr></thead>
316<tbody><tr><td>
317<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">dataset_example67</span>
318<span class="identifier">Running</span> <span class="number">15</span> <span class="identifier">test</span> <span class="identifier">cases</span><span class="special">...</span>
319<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">0</span>
320<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">1</span>
321<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">1</span>
322<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">2</span>
323<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">3</span>
324<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">5</span>
325<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">8</span>
326<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">13</span>
327<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="string">"0"</span><span class="special">,</span> <span class="number">0</span>
328<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="string">"1"</span><span class="special">,</span> <span class="number">1</span>
329<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="string">"13"</span><span class="special">,</span> <span class="number">13</span>
330<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="string">"2"</span><span class="special">,</span> <span class="number">2</span>
331<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="string">"3"</span><span class="special">,</span> <span class="number">3</span>
332<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="string">"5"</span><span class="special">,</span> <span class="number">5</span>
333<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="string">"8"</span><span class="special">,</span> <span class="number">8</span>
334
335<span class="special">***</span> <span class="identifier">No</span> <span class="identifier">errors</span> <span class="identifier">detected</span>
336</pre>
337                  </td></tr></tbody>
338</table></div>
339<h5>
340<a name="boost_test.tests_organization.test_cases.test_case_generation.generators.h6"></a>
341            <span class="phrase"><a name="boost_test.tests_organization.test_cases.test_case_generation.generators.ranges"></a></span><a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.ranges">Ranges</a>
342          </h5>
343<p>
344            A range is a dataset that implements a sequence of equally spaced values,
345            defined by a <span class="emphasis"><em>start</em></span>, and <span class="emphasis"><em>end</em></span>
346            and a <span class="emphasis"><em>step</em></span>.
347          </p>
348<p>
349            It is possible to construct a range using the factory <code class="computeroutput"><a class="link" href="../../../../boost/unit_test/data/xrange.html" title="Function xrange">boost::unit_test::data::xrange</a></code>,
350            available in the overloads below:
351          </p>
352<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">data</span><span class="special">/</span><span class="identifier">test_case</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
353<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">data</span><span class="special">/</span><span class="identifier">monomorphic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
354
355<span class="keyword">auto</span> <span class="identifier">range1</span> <span class="special">=</span> <span class="identifier">data</span><span class="special">::</span><span class="identifier">xrange</span><span class="special">(</span> <span class="special">(</span><span class="identifier">data</span><span class="special">::</span><span class="identifier">step</span> <span class="special">=</span> <span class="number">0.5</span><span class="special">,</span> <span class="identifier">data</span><span class="special">::</span><span class="identifier">end</span> <span class="special">=</span> <span class="number">3</span> <span class="special">)</span> <span class="special">);</span> <span class="comment">// Constructs with named values, starting at 0</span>
356<span class="keyword">auto</span> <span class="identifier">range2</span> <span class="special">=</span> <span class="identifier">data</span><span class="special">::</span><span class="identifier">xrange</span><span class="special">(</span> <span class="identifier">begin</span><span class="special">,</span> <span class="identifier">end</span> <span class="special">);</span> <span class="comment">// begin &lt; end required</span>
357<span class="keyword">auto</span> <span class="identifier">range5</span> <span class="special">=</span> <span class="identifier">data</span><span class="special">::</span><span class="identifier">xrange</span><span class="special">(</span> <span class="identifier">begin</span><span class="special">,</span> <span class="identifier">end</span><span class="special">,</span> <span class="identifier">step</span> <span class="special">);</span>  <span class="comment">// begin &lt; end required</span>
358<span class="keyword">auto</span> <span class="identifier">range3</span> <span class="special">=</span> <span class="identifier">data</span><span class="special">::</span><span class="identifier">xrange</span><span class="special">(</span> <span class="identifier">end</span> <span class="special">);</span> <span class="comment">// begin=0, end cannot be &lt;= 0, see above</span>
359<span class="keyword">auto</span> <span class="identifier">range4</span> <span class="special">=</span> <span class="identifier">data</span><span class="special">::</span><span class="identifier">xrange</span><span class="special">(</span> <span class="identifier">end</span><span class="special">,</span> <span class="special">(</span><span class="identifier">data</span><span class="special">::</span><span class="identifier">begin</span><span class="special">=</span><span class="number">1</span><span class="special">)</span> <span class="special">);</span> <span class="comment">// named value after end</span>
360</pre>
361<div class="tip"><table border="0" summary="Tip">
362<tr>
363<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../../../../../doc/src/images/tip.png"></td>
364<th align="left">Tip</th>
365</tr>
366<tr><td align="left" valign="top"><p>
367              The named value parameters should be declared inside parenthesis
368            </p></td></tr>
369</table></div>
370<h6>
371<a name="boost_test.tests_organization.test_cases.test_case_generation.generators.h7"></a>
372            <span class="phrase"><a name="boost_test.tests_organization.test_cases.test_case_generation.generators.parameters"></a></span><a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.parameters">Parameters</a>
373          </h6>
374<p>
375            The details of the named value parameters is given in the table below.
376          </p>
377<div class="table">
378<a name="boost_test.tests_organization.test_cases.test_case_generation.generators.id_range_parameter_table"></a><p class="title"><b>Table 1. Range parameters</b></p>
379<div class="table-contents"><table class="table" summary="Range parameters">
380<colgroup>
381<col>
382<col>
383<col>
384</colgroup>
385<thead><tr>
386<th>
387                    <p>
388                      Name
389                    </p>
390                  </th>
391<th>
392                    <p>
393                      Default
394                    </p>
395                  </th>
396<th>
397                    <p>
398                      Description
399                    </p>
400                  </th>
401</tr></thead>
402<tbody>
403<tr>
404<td>
405                    <p>
406                      <code class="computeroutput"><span class="identifier">begin</span></code>
407                    </p>
408                  </td>
409<td>
410                    <p>
411                      0
412                    </p>
413                  </td>
414<td>
415                    <p>
416                      Beginning of the generated sequence. The <code class="computeroutput"><span class="identifier">begin</span></code>
417                      value is included in set of values returned by the generator.
418                    </p>
419                  </td>
420</tr>
421<tr>
422<td>
423                    <p>
424                      <code class="computeroutput"><span class="identifier">end</span></code>
425                    </p>
426                  </td>
427<td>
428                    <p>
429                      + infinity
430                    </p>
431                  </td>
432<td>
433                    <p>
434                      End of the generated sequence. The <code class="computeroutput"><span class="identifier">end</span></code>
435                      value is not included in set of values returned by the generator.
436                      If omitted, the generator has infinite size.
437                    </p>
438                  </td>
439</tr>
440<tr>
441<td>
442                    <p>
443                      <code class="computeroutput"><span class="identifier">step</span></code>
444                    </p>
445                  </td>
446<td>
447                    <p>
448                      1
449                    </p>
450                  </td>
451<td>
452                    <p>
453                      Number indicating the step between two consecutive samples
454                      of the generated range. The default type is the same as the
455                      input type. This value should not be 0. It should be of the
456                      same sign as <code class="computeroutput"><span class="identifier">end</span><span class="special">-</span><span class="identifier">begin</span></code>.
457                    </p>
458                  </td>
459</tr>
460</tbody>
461</table></div>
462</div>
463<br class="table-break"><h6>
464<a name="boost_test.tests_organization.test_cases.test_case_generation.generators.h8"></a>
465            <span class="phrase"><a name="boost_test.tests_organization.test_cases.test_case_generation.generators.example_descr2"></a></span><a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.example_descr2">Example:
466            Declaring a test with a range</a>
467          </h6>
468<div class="informaltable"><table class="table">
469<colgroup><col></colgroup>
470<thead><tr><th>
471                    <p>
472                      Code
473                    </p>
474                  </th></tr></thead>
475<tbody><tr><td>
476<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TEST_MODULE</span> <span class="identifier">dataset_example59</span>
477<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
478<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">data</span><span class="special">/</span><span class="identifier">test_case</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
479<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">data</span><span class="special">/</span><span class="identifier">monomorphic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
480
481<span class="keyword">namespace</span> <span class="identifier">bdata</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">::</span><span class="identifier">data</span><span class="special">;</span>
482
483<span class="identifier">BOOST_DATA_TEST_CASE</span><span class="special">(</span> <span class="identifier">test1</span><span class="special">,</span> <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">xrange</span><span class="special">(</span><span class="number">5</span><span class="special">)</span> <span class="special">)</span>
484<span class="special">{</span>
485  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"test 1: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">sample</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
486  <span class="identifier">BOOST_TEST</span><span class="special">((</span><span class="identifier">sample</span> <span class="special">&lt;=</span> <span class="number">4</span> <span class="special">&amp;&amp;</span> <span class="identifier">sample</span> <span class="special">&gt;=</span> <span class="number">0</span><span class="special">));</span>
487<span class="special">}</span>
488
489<span class="identifier">BOOST_DATA_TEST_CASE</span><span class="special">(</span>
490  <span class="identifier">test2</span><span class="special">,</span>
491  <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">xrange</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span> <span class="special">(</span><span class="identifier">bdata</span><span class="special">::</span><span class="identifier">begin</span><span class="special">=</span><span class="number">1</span><span class="special">,</span> <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">end</span><span class="special">=</span><span class="number">10</span><span class="special">,</span> <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">step</span><span class="special">=</span><span class="number">3</span><span class="special">))</span> <span class="special">)</span>
492<span class="special">{</span>
493  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"test 2: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">sample</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
494  <span class="identifier">BOOST_TEST</span><span class="special">((</span><span class="identifier">sample</span> <span class="special">&lt;=</span> <span class="number">4</span> <span class="special">&amp;&amp;</span> <span class="identifier">sample</span> <span class="special">&gt;=</span> <span class="number">0</span><span class="special">));</span>
495<span class="special">}</span>
496</pre>
497                  </td></tr></tbody>
498</table></div>
499<div class="informaltable"><table class="table">
500<colgroup><col></colgroup>
501<thead><tr><th>
502                    <p>
503                      Output
504                    </p>
505                  </th></tr></thead>
506<tbody><tr><td>
507<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">dataset_example59</span>
508<span class="identifier">Running</span> <span class="number">8</span> <span class="identifier">test</span> <span class="identifier">cases</span><span class="special">...</span>
509<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">0</span>
510<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">1</span>
511<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">2</span>
512<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">3</span>
513<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">4</span>
514<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="number">1</span>
515<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="number">4</span>
516<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="number">7</span>
517<span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">27</span><span class="special">):</span> <span class="identifier">error</span><span class="special">:</span> <span class="identifier">in</span> <span class="string">"test2/_2"</span><span class="special">:</span> <span class="identifier">check</span> <span class="special">(</span><span class="identifier">sample</span> <span class="special">&lt;=</span> <span class="number">4</span> <span class="special">&amp;&amp;</span> <span class="identifier">sample</span> <span class="special">&gt;=</span> <span class="number">0</span><span class="special">)</span> <span class="identifier">has</span> <span class="identifier">failed</span>
518<span class="identifier">Failure</span> <span class="identifier">occurred</span> <span class="identifier">in</span> <span class="identifier">a</span> <span class="identifier">following</span> <span class="identifier">context</span><span class="special">:</span>
519    <span class="identifier">sample</span> <span class="special">=</span> <span class="number">7</span><span class="special">;</span>
520
521<span class="special">***</span> <span class="number">1</span> <span class="identifier">failure</span> <span class="identifier">is</span> <span class="identifier">detected</span> <span class="identifier">in</span> <span class="identifier">the</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"dataset_example59"</span>
522</pre>
523                  </td></tr></tbody>
524</table></div>
525<h5>
526<a name="boost_test.tests_organization.test_cases.test_case_generation.generators.h9"></a>
527            <span class="phrase"><a name="boost_test.tests_organization.test_cases.test_case_generation.generators.random"></a></span><a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.random">Random
528            value dataset</a>
529          </h5>
530<p>
531            This type of dataset generates a sequence of random numbers following
532            a given <span class="emphasis"><em>distribution</em></span>. The <span class="emphasis"><em>seed</em></span>
533            and the <span class="emphasis"><em>engine</em></span> may also be specified.
534          </p>
535<div class="caution"><table border="0" summary="Caution">
536<tr>
537<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../../../../../../doc/src/images/caution.png"></td>
538<th align="left">Caution</th>
539</tr>
540<tr><td align="left" valign="top"><p>
541              The random value generator is available only for C++11 capable compilers.
542              If this feature is not supported for your compiler, the macro <code class="computeroutput"><a class="link" href="../../../../BOOST_TE_idm45267320606592.html" title="Macro BOOST_TEST_NO_RANDOM_DATASET_AVAILABLE">BOOST_TEST_NO_RANDOM_DATASET_AVAILABLE</a></code>
543              will be automatically set by the <span class="emphasis"><em>Unit Test Framework</em></span>
544            </p></td></tr>
545</table></div>
546<p>
547            It is possible to construct a random sequence using the factory <code class="computeroutput"><a class="link" href="../../../../boost/unit_test/data/random.html" title="Function random">boost::unit_test::data::random</a></code>,
548            available in the overloads below:
549          </p>
550<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">rdgen</span> <span class="special">=</span> <span class="identifier">random</span><span class="special">();</span> <span class="comment">// uniform distribution (real) on [0, 1)</span>
551<span class="keyword">auto</span> <span class="identifier">rdgen</span> <span class="special">=</span> <span class="identifier">random</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">17</span><span class="special">);</span> <span class="comment">// uniform distribution (integer) on [1, 17]</span>
552<span class="comment">// Default random generator engine, Gaussian distribution (mean=5, sigma=2) and seed set to 100.</span>
553<span class="keyword">auto</span> <span class="identifier">rdgen</span> <span class="special">=</span> <span class="identifier">random</span><span class="special">(</span> <span class="special">(</span><span class="identifier">data</span><span class="special">::</span><span class="identifier">seed</span> <span class="special">=</span> <span class="number">100UL</span><span class="special">,</span>
554                      <span class="identifier">data</span><span class="special">::</span><span class="identifier">distribution</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;(</span><span class="number">5.</span><span class="special">,</span><span class="number">2</span><span class="special">))</span> <span class="special">);</span>
555</pre>
556<p>
557            Since the generated datasets will have infinite size, the sequence size
558            should be narrowed by combining the dataset with another one through
559            e.g. a <span class="emphasis"><em>zip</em></span> operation.
560          </p>
561<div class="tip"><table border="0" summary="Tip">
562<tr>
563<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../../../../../doc/src/images/tip.png"></td>
564<th align="left">Tip</th>
565</tr>
566<tr><td align="left" valign="top"><p>
567              In order to be able to reproduce a failure within a randomized parameter
568              test case, the seed that generated the failure may be set in order
569              to generate the same sequence of random values.
570            </p></td></tr>
571</table></div>
572<h6>
573<a name="boost_test.tests_organization.test_cases.test_case_generation.generators.h10"></a>
574            <span class="phrase"><a name="boost_test.tests_organization.test_cases.test_case_generation.generators.parameters0"></a></span><a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.parameters0">Parameters</a>
575          </h6>
576<p>
577            The details of the named value parameters is given in the table below.
578          </p>
579<div class="table">
580<a name="boost_test.tests_organization.test_cases.test_case_generation.generators.id_range_parameter_table0"></a><p class="title"><b>Table 2. Range parameters</b></p>
581<div class="table-contents"><table class="table" summary="Range parameters">
582<colgroup>
583<col>
584<col>
585<col>
586</colgroup>
587<thead><tr>
588<th>
589                    <p>
590                      Parameter name
591                    </p>
592                  </th>
593<th>
594                    <p>
595                      Default
596                    </p>
597                  </th>
598<th>
599                    <p>
600                      Description
601                    </p>
602                  </th>
603</tr></thead>
604<tbody>
605<tr>
606<td>
607                    <p>
608                      <code class="computeroutput"><span class="identifier">seed</span></code>
609                    </p>
610                  </td>
611<td>
612                    <p>
613                      (not set)
614                    </p>
615                  </td>
616<td>
617                    <p>
618                      Seed for the generation of the random sequence.
619                    </p>
620                  </td>
621</tr>
622<tr>
623<td>
624                    <p>
625                      <code class="computeroutput"><span class="identifier">distribution</span></code>
626                    </p>
627                  </td>
628<td>
629                    <p>
630                      Uniform
631                    </p>
632                  </td>
633<td>
634                    <p>
635                      Distribution instance for generating the random number sequences.
636                      The <code class="computeroutput"><span class="identifier">end</span></code> value
637                      is not included in set of values returned by the generator
638                      for real values, and is included for integers.
639                    </p>
640                  </td>
641</tr>
642<tr>
643<td>
644                    <p>
645                      <code class="computeroutput"><span class="identifier">engine</span></code>
646                    </p>
647                  </td>
648<td>
649                    <p>
650                      <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">default_random_engine</span></code>
651                    </p>
652                  </td>
653<td>
654                    <p>
655                      Random number generator engine.
656                    </p>
657                  </td>
658</tr>
659</tbody>
660</table></div>
661</div>
662<br class="table-break"><h6>
663<a name="boost_test.tests_organization.test_cases.test_case_generation.generators.h11"></a>
664            <span class="phrase"><a name="boost_test.tests_organization.test_cases.test_case_generation.generators.example_descr3"></a></span><a class="link" href="generators.html#boost_test.tests_organization.test_cases.test_case_generation.generators.example_descr3">Example:
665            Declaring a test with a random sequence</a>
666          </h6>
667<div class="informaltable"><table class="table">
668<colgroup><col></colgroup>
669<thead><tr><th>
670                    <p>
671                      Code
672                    </p>
673                  </th></tr></thead>
674<tbody><tr><td>
675<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TEST_MODULE</span> <span class="identifier">dataset_example63</span>
676<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
677<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">data</span><span class="special">/</span><span class="identifier">test_case</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
678<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">data</span><span class="special">/</span><span class="identifier">monomorphic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
679
680<span class="keyword">namespace</span> <span class="identifier">bdata</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">::</span><span class="identifier">data</span><span class="special">;</span>
681
682
683<span class="identifier">BOOST_DATA_TEST_CASE</span><span class="special">(</span>
684  <span class="identifier">test1</span><span class="special">,</span>
685  <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">random</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">17</span><span class="special">)</span> <span class="special">^</span> <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">xrange</span><span class="special">(</span><span class="number">7</span><span class="special">),</span>
686  <span class="identifier">random_sample</span><span class="special">,</span> <span class="identifier">index</span> <span class="special">)</span>
687<span class="special">{</span>
688  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"test 1: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">random_sample</span>
689            <span class="special">&lt;&lt;</span> <span class="string">", "</span> <span class="special">&lt;&lt;</span> <span class="identifier">index</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
690  <span class="identifier">BOOST_TEST</span><span class="special">((</span><span class="identifier">random_sample</span> <span class="special">&lt;=</span> <span class="number">17</span> <span class="special">&amp;&amp;</span> <span class="identifier">random_sample</span> <span class="special">&gt;=</span> <span class="number">1</span><span class="special">));</span>
691<span class="special">}</span>
692
693<span class="identifier">BOOST_DATA_TEST_CASE</span><span class="special">(</span>
694  <span class="identifier">test2</span><span class="special">,</span>
695  <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">random</span><span class="special">(</span> <span class="special">(</span><span class="identifier">bdata</span><span class="special">::</span><span class="identifier">distribution</span><span class="special">=</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">uniform_real_distribution</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">))</span> <span class="special">)</span>
696      <span class="special">^</span> <span class="identifier">bdata</span><span class="special">::</span><span class="identifier">xrange</span><span class="special">(</span><span class="number">7</span><span class="special">),</span>
697  <span class="identifier">random_sample</span><span class="special">,</span> <span class="identifier">index</span> <span class="special">)</span>
698<span class="special">{</span>
699  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"test 2: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">random_sample</span>
700            <span class="special">&lt;&lt;</span> <span class="string">", "</span> <span class="special">&lt;&lt;</span> <span class="identifier">index</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
701  <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="identifier">random_sample</span> <span class="special">&lt;</span> <span class="number">1.7</span><span class="special">);</span> <span class="comment">// 30% chance of failure</span>
702<span class="special">}</span>
703</pre>
704                  </td></tr></tbody>
705</table></div>
706<div class="informaltable"><table class="table">
707<colgroup><col></colgroup>
708<thead><tr><th>
709                    <p>
710                      Output
711                    </p>
712                  </th></tr></thead>
713<tbody><tr><td>
714<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">dataset_example63</span>
715<span class="identifier">Running</span> <span class="number">14</span> <span class="identifier">test</span> <span class="identifier">cases</span><span class="special">...</span>
716<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">2</span><span class="special">,</span> <span class="number">0</span>
717<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">3</span><span class="special">,</span> <span class="number">1</span>
718<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">2</span><span class="special">,</span> <span class="number">2</span>
719<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">8</span><span class="special">,</span> <span class="number">3</span>
720<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">10</span><span class="special">,</span> <span class="number">4</span>
721<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">15</span><span class="special">,</span> <span class="number">5</span>
722<span class="identifier">test</span> <span class="number">1</span><span class="special">:</span> <span class="number">8</span><span class="special">,</span> <span class="number">6</span>
723<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="number">1.00001</span><span class="special">,</span> <span class="number">0</span>
724<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="number">1.13154</span><span class="special">,</span> <span class="number">1</span>
725<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="number">1.75561</span><span class="special">,</span> <span class="number">2</span>
726<span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">35</span><span class="special">):</span> <span class="identifier">error</span><span class="special">:</span> <span class="identifier">in</span> <span class="string">"test2/_2"</span><span class="special">:</span> <span class="identifier">check</span> <span class="identifier">random_sample</span> <span class="special">&lt;</span> <span class="number">1.7</span> <span class="identifier">has</span> <span class="identifier">failed</span> <span class="special">[</span><span class="number">1.75560534</span> <span class="special">&gt;=</span> <span class="number">1.7</span><span class="special">]</span>
727<span class="identifier">Failure</span> <span class="identifier">occurred</span> <span class="identifier">in</span> <span class="identifier">a</span> <span class="identifier">following</span> <span class="identifier">context</span><span class="special">:</span>
728    <span class="identifier">random_sample</span> <span class="special">=</span> <span class="number">1.75560534</span><span class="special">;</span> <span class="identifier">index</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
729<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="number">1.45865</span><span class="special">,</span> <span class="number">3</span>
730<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="number">1.53277</span><span class="special">,</span> <span class="number">4</span>
731<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="number">1.21896</span><span class="special">,</span> <span class="number">5</span>
732<span class="identifier">test</span> <span class="number">2</span><span class="special">:</span> <span class="number">1.04704</span><span class="special">,</span> <span class="number">6</span>
733
734<span class="special">***</span> <span class="number">1</span> <span class="identifier">failure</span> <span class="identifier">is</span> <span class="identifier">detected</span> <span class="identifier">in</span> <span class="identifier">the</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"dataset_example63"</span>
735</pre>
736                  </td></tr></tbody>
737</table></div>
738</div>
739<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
740<td align="left"></td>
741<td align="right"><div class="copyright-footer">Copyright © 2001-2020 Boost.Test contributors<p>
742        Distributed under the Boost Software License, Version 1.0. (See accompanying
743        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
744      </p>
745</div></td>
746</tr></table>
747<hr>
748<div class="spirit-nav">
749<a accesskey="p" href="operations.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../test_case_generation.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../test_organization_templates.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
750</div>
751</body>
752</html>
753