1/***********************************************************************************
2  test_hash_resize.h
3
4 * Copyright (c) 1997
5 * Mark of the Unicorn, Inc.
6 *
7 * Permission to use, copy, modify, distribute and sell this software
8 * and its documentation for any purpose is hereby granted without fee,
9 * provided that the above copyright notice appear in all copies and
10 * that both that copyright notice and this permission notice appear
11 * in supporting documentation.  Mark of the Unicorn makes no
12 * representations about the suitability of this software for any
13 * purpose.  It is provided "as is" without express or implied warranty.
14
15***********************************************************************************/
16#ifndef test_hash_resize__
17#define test_hash_resize__
18
19#include "random_number.h"
20#include "nc_alloc.h"
21
22template <class T>
23struct test_hash_resize
24{
25    test_hash_resize()
26    {
27      gTestController.SetCurrentTestName("hash resize");
28    }
29
30  void operator()( T& t ) const
31  {
32    t.resize( 1+random_number(random_base) + t.bucket_count() );
33  }
34};
35
36template <class T>
37struct test_construct_iter_range_n
38{
39  test_construct_iter_range_n( const T& src )
40    : fItems( src )
41  {
42        gTestController.SetCurrentTestName("iterator range n-size constructor");
43    }
44
45  void operator()( int ) const
46  {
47    T t( fItems.begin(), fItems.end(), fItems.size() );
48    // prevent simulated failures during verification
49    gTestController.CancelFailureCountdown();
50    CheckInvariant(t);
51  }
52
53  const T& fItems;
54};
55
56#endif //__test_hash_resize__
57