JayBeams  0.1
Another project to have fun coding.
ut_strtonum.cpp
Go to the documentation of this file.
1 #include <jb/strtonum.hpp>
2 
3 #include <boost/test/unit_test.hpp>
4 
5 /**
6  * @test Verify that strtonum<int> works as expected.
7  */
8 BOOST_AUTO_TEST_CASE(strtonum_int) {
9  int actual;
10 
11  BOOST_CHECK_EQUAL(false, jb::strtonum("", actual));
12  BOOST_CHECK_EQUAL(true, jb::strtonum("1234", actual));
13  BOOST_CHECK_EQUAL(1234, actual);
14  BOOST_CHECK_EQUAL(true, jb::strtonum("-1234", actual));
15  BOOST_CHECK_EQUAL(-1234, actual);
16  BOOST_CHECK_EQUAL(true, jb::strtonum(" 2345", actual));
17  BOOST_CHECK_EQUAL(2345, actual);
18 
19  BOOST_CHECK_EQUAL(false, jb::strtonum("3456 ", actual));
20  BOOST_CHECK_EQUAL(2345, actual);
21  BOOST_CHECK_EQUAL(false, jb::strtonum(" 3456 ", actual));
22  BOOST_CHECK_EQUAL(2345, actual);
23  BOOST_CHECK_EQUAL(false, jb::strtonum("xyxxz", actual));
24  BOOST_CHECK_EQUAL(2345, actual);
25  BOOST_CHECK_EQUAL(false, jb::strtonum("123.45", actual));
26  BOOST_CHECK_EQUAL(2345, actual);
27  BOOST_CHECK_EQUAL(false, jb::strtonum("123-7", actual));
28  BOOST_CHECK_EQUAL(2345, actual);
29  BOOST_CHECK_EQUAL(false, jb::strtonum("123adbcd", actual));
30  BOOST_CHECK_EQUAL(2345, actual);
31  BOOST_CHECK_EQUAL(false, jb::strtonum("20000000000000000000", actual));
32  BOOST_CHECK_EQUAL(2345, actual);
33 }
34 
35 /**
36  * @test Verify that strtonum<double> works as expected.
37  */
38 BOOST_AUTO_TEST_CASE(strtonum_double) {
39  double actual;
40 
41  BOOST_CHECK_EQUAL(false, jb::strtonum("", actual));
42  BOOST_CHECK_EQUAL(true, jb::strtonum("1234", actual));
43  BOOST_CHECK_EQUAL(1234, actual);
44  BOOST_CHECK_EQUAL(true, jb::strtonum("-1234", actual));
45  BOOST_CHECK_EQUAL(-1234, actual);
46  BOOST_CHECK_EQUAL(true, jb::strtonum("-1234.56", actual));
47  BOOST_CHECK_EQUAL(-1234.56, actual);
48  BOOST_CHECK_EQUAL(true, jb::strtonum("0.125", actual));
49  BOOST_CHECK_EQUAL(0.125, actual);
50  BOOST_CHECK_EQUAL(true, jb::strtonum(".5", actual));
51  BOOST_CHECK_EQUAL(0.5, actual);
52  BOOST_CHECK_EQUAL(true, jb::strtonum(" 2345", actual));
53  BOOST_CHECK_EQUAL(2345, actual);
54 
55  BOOST_CHECK_EQUAL(false, jb::strtonum("3456 ", actual));
56  BOOST_CHECK_EQUAL(2345, actual);
57  BOOST_CHECK_EQUAL(false, jb::strtonum(" 3456 ", actual));
58  BOOST_CHECK_EQUAL(2345, actual);
59  BOOST_CHECK_EQUAL(false, jb::strtonum("xyxxz", actual));
60  BOOST_CHECK_EQUAL(2345, actual);
61  BOOST_CHECK_EQUAL(false, jb::strtonum("123-7", actual));
62  BOOST_CHECK_EQUAL(2345, actual);
63  BOOST_CHECK_EQUAL(false, jb::strtonum("123adbcd", actual));
64  BOOST_CHECK_EQUAL(2345, actual);
65 }
BOOST_AUTO_TEST_CASE(strtonum_int)
Definition: ut_strtonum.cpp:8
bool strtonum(std::string const &s, T &r)
Generic string to number conversion with validation.
Definition: strtonum.hpp:40