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