1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- // 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
|