diff options
Diffstat (limited to 'src/boost/libs/convert/test/prepare.hpp')
-rw-r--r-- | src/boost/libs/convert/test/prepare.hpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/boost/libs/convert/test/prepare.hpp b/src/boost/libs/convert/test/prepare.hpp new file mode 100644 index 000000000..15c4d0153 --- /dev/null +++ b/src/boost/libs/convert/test/prepare.hpp @@ -0,0 +1,59 @@ +// Boost.Convert test and usage example +// Copyright (c) 2009-2016 Vladimir Batov. +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt. + +#ifndef BOOST_CONVERT_TEST_PREPARE_HPP +#define BOOST_CONVERT_TEST_PREPARE_HPP + +#include <boost/array.hpp> +#include <ctime> +#include <cstdlib> + +// boostinspect:nounnamed +namespace { namespace local +{ + // C1. 18 = 9 positive + 9 negative numbers with the number of digits from 1 to 9. + // Even though INT_MAX(32) = 2147483647, i.e. 10 digits (not to mention long int) + // we only test up to 9 digits as Spirit does not handle more than 9. + + typedef boost::array<my_string, 18> strings; //C1 + /////////////////////////////////////////////////////////////////////////// + // Generate a random number string with N digits + std::string + gen_int(int digits, bool negative) + { + std::string result; + + if (negative) // Prepend a '-' + result += '-'; + + result += '1' + (std::rand()%9); // The first digit cannot be '0' + + for (int i = 1; i < digits; ++i) // Generate the remaining digits + result += '0' + (std::rand()%10); + return result; + } + + local::strings const& + get_strs() + { + static local::strings strings; + static bool filled; + static bool negative = true; + + if (!filled) + { + // Seed the random generator + std::srand(std::time(0)); + + for (size_t k = 0; k < strings.size(); ++k) + strings[k] = local::gen_int(k/2 + 1, negative = !negative).c_str(); + + filled = true; + } + return strings; + } +}} + +#endif // BOOST_CONVERT_TEST_PREPARE_HPP |