// Copyright 2005-2007 Daniel James. // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // This uses std::rand to generate random values for tests. // Which is not good as different platforms will be running different tests. // It would be much better to use Boost.Random, but it doesn't // support all the compilers that I want to test on. // TODO: seed the random generator. // TODO: check that this is actually working... #if !defined(BOOST_UNORDERED_TEST_HELPERS_GENERATORS_HEADER) #define BOOST_UNORDERED_TEST_HELPERS_GENERATORS_HEADER #include #include #include #include #include "./fwd.hpp" namespace test { template struct generator; template std::pair generate( std::pair const*) { static generator g1; static generator g2; return std::pair(g1(), g2()); } template struct generator { typedef T value_type; value_type operator()() { return generate((T const*) 0); } }; inline int generate(int const*) { using namespace std; return rand(); } inline char generate(char const*) { using namespace std; return (rand() >> 1) % (128-32) + 32; } inline signed char generate(signed char const*) { using namespace std; return static_cast(rand()); } inline std::string generate(std::string const*) { using namespace std; static test::generator char_gen; std::string result; int length = rand() % 10; for(int i = 0; i < length; ++i) result += char_gen(); return result; } float generate(float const*) { return (float) rand() / (float) RAND_MAX; } } #endif