* Please send any updates to: fred@gruntose.com *
*/
-#include <mathematics/chaos.h>
+#include <application/hoople_main.h>
#include <basis/guards.h>
#include <basis/astring.h>
-#include <structures/set.h>
-#include <structures/byte_hasher.h>
-#include <structures/hash_table.h>
-#include <timely/time_stamp.h>
-#include <application/hoople_main.h>
#include <loggers/console_logger.h>
#include <loggers/file_logger.h>
+#include <mathematics/chaos.h>
+#include <structures/byte_hasher.h>
+#include <structures/hash_table.h>
+#include <structures/set.h>
#include <structures/static_memory_gremlin.h>
#include <textual/string_manipulation.h>
+#include <timely/time_stamp.h>
#include <unit_test/unit_base.h>
using namespace application;
using namespace basis;
-///using namespace configuration;
using namespace mathematics;
using namespace filesystem;
using namespace loggers;
//////////////
-enum test_actions {
- FIRST_TEST = 38, // place-holder.
- ADD = FIRST_TEST,
- // adds an item that is probably new.
- ADD_ADD,
- // adds an item that is probably new, followed by another item under the
- // same key id. this ensures the overwriting gets tested.
- ZAP,
- // finds an item we know is in the list and whacks it.
- ADD_ZAP,
- // adds a new item and immediately finds and zaps it.
- ZAP_ADD,
- // zaps an item that we know about and then adds a new item with the same
- // identifier.
- FIND,
- // locates an item in the list which we know should exist.
- ACQUIRE,
- // grabs an item out of the list (and tosses it).
- FIND_ZAP_ADD,
- // finds an item we know should exist, zaps it out of the list, then adds
- // a new item with the same id.
- ACQUIRE_ADD_ZAP,
- // removes an item from the list that we know should be there, adds it back
- // in, and then whacks it.
- FIND_ADD_FIND,
- // find an item with a particular id (one that we know should be in the
- // list) and then adds a different item using the same id. the new item
- // is then sought.
- RESET,
- // tosses all data out of the hash table. not done very often.
- CHECK_SANITY,
- // look for any problems or irregularities; print the contents of the list
- // if any are found.
- REHASH,
- // resizes the hash table.
- COPY,
- // copies a hash table to another hash table.
- LAST_TEST = COPY // place-holder; must equal test just prior.
+enum test_actions
+{
+ FIRST_TEST = 38, // place-holder.
+ ADD = FIRST_TEST, // adds an item that is probably new.
+ ADD_ADD, // adds a probably new item, then adds different item under same key id to test overwriting.
+ ZAP, // finds an item we know is in the list and whacks it.
+ ADD_ZAP, // adds a new item and immediately finds and zaps it.
+ ZAP_ADD, // zaps an item that we know about and then adds a new item with the same identifier.
+ FIND, // locates an item in the list which we know should exist.
+ ACQUIRE, // grabs an item out of the list (and tosses it).
+ FIND_ZAP_ADD, // finds an item we know should exist, zaps it out of the list, then adds a new item with the same id.
+ ACQUIRE_ADD_ZAP, // removes an item from the list that we know should be there, adds it back in, and then whacks it.
+ FIND_ADD_FIND, // finds item with particular id, adds different item using same id, refinds new item.
+ RESET, // tosses all data out of the hash table. not done very often.
+ CHECK_SANITY, // look for any problems or irregularities; print the contents of the list if any are found.
+ REHASH, // resizes the hash table.
+ COPY, // copies a hash table to another hash table.
+ LAST_TEST = COPY // place-holder; must equal test just prior.
};
//////////////
data_shuttle()
: snacky_string(string_manipulation::make_random_name()),
- chunk(chao.inclusive(100, 10000)) {}
+ chunk(chao.inclusive(100, 10000)), food_bar(0), hungry(false) {}
};
//////////////
DEFINE_CLASS_NAME("test_hash_table");
int raw_random_id(); //!< returns an unvetted random number.
- int unused_random_id(); //!< returns an unused (so far) random number.
+
+ //! returns an unused (so far) random number.
+ int unused_random_id();
int execute();
// the main startup for the test.
int checking = raw_random_id();
if (!_keys_in_use.member(checking)) return checking; // got one.
} // keep going until we find unused id.
+ return -1; // this is a failure, but we will never get here.
}
int test_hash_table::execute()
to_add->snacky_string = string_manipulation::make_random_name();
to_add->food_bar = random_id;
outcome expected = common::IS_NEW;
- if (_keys_in_use.member(random_id)) common::EXISTING;
+ // make sure it doesn't exist already.
+ if (_keys_in_use.member(random_id)) return false;
ASSERT_EQUAL(_the_table.add(random_id, to_add).value(), expected.value(),
"add should give proper outcome based on expectation");
if (_keys_in_use.member(random_id))
HOOPLE_MAIN(test_hash_table, )
+