//____________________________________________________________________________//
BOOST_FIXTURE_TEST_CASE( test_no_seed, test_tree )
{
    // no seed set
    ut::runtime_config::s_arguments_store.template set<unsigned int>(ut::runtime_config::RANDOM_SEED, 0);

    tu_order_collector res1 = run_tree( master );
    tu_order_collector res2 = run_tree( master );

    BOOST_TEST( res1.m_order == res2.m_order, tt::per_element() );
}
BOOST_FIXTURE_TEST_CASE( test_seed_to_time, test_tree )
{
    // seed = 1 means current time is used.
    ut::runtime_config::s_arguments_store.template set<unsigned int>(ut::runtime_config::RANDOM_SEED, 1);

    tu_order_collector res1 = run_tree( master );
    tu_order_collector res2 = run_tree( master );

    BOOST_TEST( res1.m_order != res2.m_order ); // some elements might be the same, but not the full sequences
}
BOOST_FIXTURE_TEST_CASE( test_seed_identical, test_tree )
{
    // seed = 1 means current time is used.
    unsigned int seed = static_cast<unsigned int>( std::time( 0 ) );
    ut::runtime_config::s_arguments_store.template set<unsigned int>(ut::runtime_config::RANDOM_SEED, seed);
    tu_order_collector res1 = run_tree( master );

    ut::runtime_config::s_arguments_store.template set<unsigned int>(ut::runtime_config::RANDOM_SEED, seed);
    tu_order_collector res2 = run_tree( master );

    BOOST_TEST( res1.m_order == res2.m_order, tt::per_element() );

    // using time seed now
    ut::runtime_config::s_arguments_store.template set<unsigned int>(ut::runtime_config::RANDOM_SEED, 1);
    tu_order_collector res3 = run_tree( master );
    BOOST_TEST( res1.m_order != res3.m_order ); // some elements might be the same, but not the full sequences


}
    void test_run( std::vector<ut::test_unit_id> const& expected_order )
    {
        tu_order_collector res = run_tree( master );

        BOOST_TEST( expected_order == res.m_order, tt::per_element() );
    }