Skip to content

Commit 9e31b21

Browse files
committed
Add tests for the rest of the doc examples.
1 parent 7efc137 commit 9e31b21

18 files changed

+229
-12
lines changed

docs/lyra.adoc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,12 @@ Changes:
288288
-- _Rene Rivera_
289289
* Fixed allowing junk extra characters after a non-string option value.
290290
-- _Rene Rivera_
291+
* Support specifying a single value for choices of an argument.
292+
-- _Rene Rivera_
293+
* Fix various problems with the commands example program. Also now the
294+
examples for the documentation are unit tested along with the
295+
regular unit tests.
296+
-- _Rene Rivera_
291297
* Tested with
292298
Visual Studio 2015, VS 2017, VS 2019,
293299
MinGW-64 (gcc 8.1),

docs/lyra.html

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -660,10 +660,11 @@ <h3 id="_single_option"><a class="anchor" href="#_single_option"></a>2.1. Single
660660
<span class="tok-k">if</span> <span class="tok-p">(</span><span class="tok-o">!</span><span class="tok-n">result</span><span class="tok-p">)</span>
661661
<span class="tok-p">{</span>
662662
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cerr</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;Error in command line: &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">result</span><span class="tok-p">.</span><span class="tok-n">errorMessage</span><span class="tok-p">()</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">endl</span><span class="tok-p">;</span>
663-
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">exit</span><span class="tok-p">(</span><span class="tok-mi">1</span><span class="tok-p">);</span>
663+
<span class="tok-k">return</span> <span class="tok-mi">1</span><span class="tok-p">;</span>
664664
<span class="tok-p">}</span>
665665

666666
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;width = &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">width</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;</span><span class="tok-se">\n</span><span class="tok-s">&quot;</span><span class="tok-p">;</span>
667+
<span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
667668
<span class="tok-p">}</span></code></pre>
668669
</div>
669670
</div>
@@ -724,10 +725,11 @@ <h3 id="_multiple_options"><a class="anchor" href="#_multiple_options"></a>2.2.
724725
<span class="tok-k">if</span> <span class="tok-p">(</span><span class="tok-o">!</span><span class="tok-n">result</span><span class="tok-p">)</span>
725726
<span class="tok-p">{</span>
726727
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cerr</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;Error in command line: &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">result</span><span class="tok-p">.</span><span class="tok-n">errorMessage</span><span class="tok-p">()</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">endl</span><span class="tok-p">;</span>
727-
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">exit</span><span class="tok-p">(</span><span class="tok-mi">1</span><span class="tok-p">);</span>
728+
<span class="tok-k">return</span> <span class="tok-mi">1</span><span class="tok-p">;</span>
728729
<span class="tok-p">}</span>
729730

730731
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;width = &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">width</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;, name = &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">name</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;, doIt = &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">doIt</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;</span><span class="tok-se">\n</span><span class="tok-s">&quot;</span><span class="tok-p">;</span>
732+
<span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
731733
<span class="tok-p">}</span></code></pre>
732734
</div>
733735
</div>
@@ -834,10 +836,11 @@ <h2 id="_alternate_specification"><a class="anchor" href="#_alternate_specificat
834836
<span class="tok-k">if</span> <span class="tok-p">(</span><span class="tok-o">!</span><span class="tok-n">result</span><span class="tok-p">)</span>
835837
<span class="tok-p">{</span>
836838
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cerr</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;Error in command line: &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">result</span><span class="tok-p">.</span><span class="tok-n">errorMessage</span><span class="tok-p">()</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">endl</span><span class="tok-p">;</span>
837-
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">exit</span><span class="tok-p">(</span><span class="tok-mi">1</span><span class="tok-p">);</span>
839+
<span class="tok-k">return</span> <span class="tok-mi">1</span><span class="tok-p">;</span>
838840
<span class="tok-p">}</span>
839841

840842
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;width = &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">width</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;</span><span class="tok-se">\n</span><span class="tok-s">&quot;</span><span class="tok-p">;</span>
843+
<span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
841844
<span class="tok-p">}</span></code></pre>
842845
</div>
843846
</div>
@@ -874,10 +877,11 @@ <h2 id="_alternate_specification"><a class="anchor" href="#_alternate_specificat
874877
<span class="tok-k">if</span> <span class="tok-p">(</span><span class="tok-o">!</span><span class="tok-n">result</span><span class="tok-p">)</span>
875878
<span class="tok-p">{</span>
876879
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cerr</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;Error in command line: &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">result</span><span class="tok-p">.</span><span class="tok-n">errorMessage</span><span class="tok-p">()</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">endl</span><span class="tok-p">;</span>
877-
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">exit</span><span class="tok-p">(</span><span class="tok-mi">1</span><span class="tok-p">);</span>
880+
<span class="tok-k">return</span> <span class="tok-mi">1</span><span class="tok-p">;</span>
878881
<span class="tok-p">}</span>
879882

880883
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;width = &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">width</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;, name = &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">name</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;, doIt = &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">doIt</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;</span><span class="tok-se">\n</span><span class="tok-s">&quot;</span><span class="tok-p">;</span>
884+
<span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
881885
<span class="tok-p">}</span></code></pre>
882886
</div>
883887
</div>
@@ -940,17 +944,18 @@ <h2 id="_help_option"><a class="anchor" href="#_help_option"></a>4. Help Option<
940944
<span class="tok-p">{</span>
941945
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cerr</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;Error in command line: &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">result</span><span class="tok-p">.</span><span class="tok-n">errorMessage</span><span class="tok-p">()</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">endl</span><span class="tok-p">;</span>
942946
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cerr</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">cli</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;</span><span class="tok-se">\n</span><span class="tok-s">&quot;</span><span class="tok-p">;</span> <i class="conum" data-value="1"></i><b>(1)</b>
943-
<span class="tok-n">exit</span><span class="tok-p">(</span><span class="tok-mi">1</span><span class="tok-p">);</span>
947+
<span class="tok-k">return</span> <span class="tok-mi">1</span><span class="tok-p">;</span>
944948
<span class="tok-p">}</span>
945949

946950
<span class="tok-c1">// Show the help when asked for.</span>
947951
<span class="tok-k">if</span> <span class="tok-p">(</span><span class="tok-n">show_help</span><span class="tok-p">)</span> <i class="conum" data-value="2"></i><b>(2)</b>
948952
<span class="tok-p">{</span>
949953
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">cli</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;</span><span class="tok-se">\n</span><span class="tok-s">&quot;</span><span class="tok-p">;</span>
950-
<span class="tok-n">exit</span><span class="tok-p">(</span><span class="tok-mi">0</span><span class="tok-p">);</span>
954+
<span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
951955
<span class="tok-p">}</span>
952956

953957
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;width = &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">width</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;, name = &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">name</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;, doIt = &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">doIt</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;</span><span class="tok-se">\n</span><span class="tok-s">&quot;</span><span class="tok-p">;</span>
958+
<span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
954959
<span class="tok-p">}</span></code></pre>
955960
</div>
956961
</div>
@@ -992,10 +997,12 @@ <h2 id="_value_choices"><a class="anchor" href="#_value_choices"></a>5. Value Ch
992997
<span class="tok-k">if</span> <span class="tok-p">(</span><span class="tok-n">result</span><span class="tok-p">)</span>
993998
<span class="tok-p">{</span>
994999
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;Your preferred color is &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">choice</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;</span><span class="tok-se">\n</span><span class="tok-s">&quot;</span><span class="tok-p">;</span>
1000+
<span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
9951001
<span class="tok-p">}</span>
9961002
<span class="tok-k">else</span>
9971003
<span class="tok-p">{</span>
9981004
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cerr</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">result</span><span class="tok-p">.</span><span class="tok-n">errorMessage</span><span class="tok-p">()</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;</span><span class="tok-se">\n</span><span class="tok-s">&quot;</span><span class="tok-p">;</span>
1005+
<span class="tok-k">return</span> <span class="tok-mi">1</span><span class="tok-p">;</span>
9991006
<span class="tok-p">}</span>
10001007
<span class="tok-p">}</span></code></pre>
10011008
</div>
@@ -1020,10 +1027,12 @@ <h2 id="_value_choices"><a class="anchor" href="#_value_choices"></a>5. Value Ch
10201027
<span class="tok-k">if</span> <span class="tok-p">(</span><span class="tok-n">result</span><span class="tok-p">)</span>
10211028
<span class="tok-p">{</span>
10221029
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;Your number between one and ten is &quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">choice</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;</span><span class="tok-se">\n</span><span class="tok-s">&quot;</span><span class="tok-p">;</span>
1030+
<span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
10231031
<span class="tok-p">}</span>
10241032
<span class="tok-k">else</span>
10251033
<span class="tok-p">{</span>
10261034
<span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cerr</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">result</span><span class="tok-p">.</span><span class="tok-n">errorMessage</span><span class="tok-p">()</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;</span><span class="tok-se">\n</span><span class="tok-s">&quot;</span><span class="tok-p">;</span>
1035+
<span class="tok-k">return</span> <span class="tok-mi">1</span><span class="tok-p">;</span>
10271036
<span class="tok-p">}</span>
10281037
<span class="tok-p">}</span></code></pre>
10291038
</div>
@@ -1647,6 +1656,14 @@ <h3 id="_1_3"><a class="anchor" href="#_1_3"></a>9.1. 1.3</h3>
16471656
<p>Fixed allowing junk extra characters after a non-string option value.&#8201;&#8212;&#8201;<em>Rene Rivera</em></p>
16481657
</li>
16491658
<li>
1659+
<p>Support specifying a single value for choices of an argument.&#8201;&#8212;&#8201;<em>Rene Rivera</em></p>
1660+
</li>
1661+
<li>
1662+
<p>Fix various problems with the commands example program. Also now the
1663+
examples for the documentation are unit tested along with the
1664+
regular unit tests.&#8201;&#8212;&#8201;<em>Rene Rivera</em></p>
1665+
</li>
1666+
<li>
16501667
<p>Tested with
16511668
Visual Studio 2015, VS 2017, VS 2019,
16521669
MinGW-64 (gcc 8.1),

examples/doc_example1.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@ int main(int argc, const char** argv)
3232
if (!result)
3333
{
3434
std::cerr << "Error in command line: " << result.errorMessage() << std::endl;
35-
std::exit(1);
35+
return 1;
3636
}
3737

3838
std::cout << "width = " << width << "\n";
39+
return 0;
3940
}
4041
// end::part2[]

examples/doc_example1_alt.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,10 @@ int main(int argc, const char** argv)
3030
if (!result)
3131
{
3232
std::cerr << "Error in command line: " << result.errorMessage() << std::endl;
33-
std::exit(1);
33+
return 1;
3434
}
3535

3636
std::cout << "width = " << width << "\n";
37+
return 0;
3738
}
3839
// end::doc[]

examples/doc_example2.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,10 @@ int main(int argc, const char** argv)
3939
if (!result)
4040
{
4141
std::cerr << "Error in command line: " << result.errorMessage() << std::endl;
42-
std::exit(1);
42+
return 1;
4343
}
4444

4545
std::cout << "width = " << width << ", name = " << name << ", doIt = " << doIt << "\n";
46+
return 0;
4647
}
4748
// end::part2[]

examples/doc_example2_alt.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@ int main(int argc, const char** argv)
3434
if (!result)
3535
{
3636
std::cerr << "Error in command line: " << result.errorMessage() << std::endl;
37-
std::exit(1);
37+
return 1;
3838
}
3939

4040
std::cout << "width = " << width << ", name = " << name << ", doIt = " << doIt << "\n";
41+
return 0;
4142
}
4243
// end::doc[]

examples/doc_example3.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,17 @@ int main(int argc, const char** argv)
4141
{
4242
std::cerr << "Error in command line: " << result.errorMessage() << std::endl;
4343
std::cerr << cli << "\n"; // <1>
44-
exit(1);
44+
return 1;
4545
}
4646

4747
// Show the help when asked for.
4848
if (show_help) // <2>
4949
{
5050
std::cout << cli << "\n";
51-
exit(0);
51+
return 0;
5252
}
5353

5454
std::cout << "width = " << width << ", name = " << name << ", doIt = " << doIt << "\n";
55+
return 0;
5556
}
5657
// end::part2[]

examples/doc_example4.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,6 @@ int main(int argc, const char** argv)
2222
for (int count = 0; count < repeat; ++count)
2323
std::cout << message << "\n";
2424
}
25+
return 0;
2526
}
2627
// end::part1[]

examples/doc_example5.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ int main(int argc, const char** argv)
2020
if (result)
2121
{
2222
std::cout << "Your preferred color is " << choice << "\n";
23+
return 0;
2324
}
2425
else
2526
{
2627
std::cerr << result.errorMessage() << "\n";
28+
return 1;
2729
}
2830
}
2931
// end::part1[]

examples/doc_example6.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ int main(int argc, const char** argv)
2020
if (result)
2121
{
2222
std::cout << "Your number between one and ten is " << choice << "\n";
23+
return 0;
2324
}
2425
else
2526
{
2627
std::cerr << result.errorMessage() << "\n";
28+
return 1;
2729
}
2830
}
2931
// end::part1[]

0 commit comments

Comments
 (0)