private PersistentHashTable InitTable(string hashtableName, int tableSize, int keySize, int valueSize, int userHeaderSize)
 {
     PersistentHashTable ht;
     try
     {
         ht = new PersistentHashTable(hashtableName, tableSize, keySize, valueSize, userHeaderSize);
     }
     catch (FileNameConflictException)
     {
         ht = new PersistentHashTable(hashtableName);
         ht.Delete();
         ht = new PersistentHashTable(hashtableName, tableSize, keySize, valueSize, userHeaderSize);
     }
     return ht;
 }
 private static void RemoveTestAssert(PersistentHashTable hashTable, int valueSize, byte[] key)
 {
     hashTable.Put(key, new byte[valueSize]);
     hashTable.Remove(key);
     try
     {
         hashTable.Get(key);
     }
     catch (KeyNotFoundException){}
 }
        private static byte[] FillTableWithCollisions(int targetHashToCollideOn, PersistentHashTable hashTable)
        {
            byte[] collisionKey = new byte[] {0, 0, 0, 0};
            for (int run = 0; run < hashTable.GetTableSize(); run++)
            {
                collisionKey = GetNextCollisionKey(targetHashToCollideOn, hashTable.GetTableSize(), collisionKey);

                hashTable.Put(collisionKey, new byte[] {0, 0, 0, (byte) run});
            }

            //assert the table is full
            try
            {
                hashTable.Put(new byte[] { 255, 255, 255, 255 }, new byte[hashTable.GetValueSize()]);
                Assert.Fail("Should throw exception");
            }
            catch (IndexOutOfRangeException) {}
            return collisionKey;
        }
 private static void PutGetTestAssert(PersistentHashTable hashTable, byte[] key, byte[] value)
 {
     hashTable.Put(key, value);
     byte[] actual = hashTable.Get(key);
     TestHelper.AssertByteArraysAreSame(value, actual);
 }
        public void ReopenTest()
        {
            string hastTableName = "ReopenHashTableTest";
            PersistentHashTable hashTable = InitTable(hastTableName, 20, 4, 4, 6);
            try
            {
                byte[] key = new byte[] {4, 4, 4, 4};
                byte[] value = new byte[] { 5,5,5,5 };
                hashTable.Put(key, value);
                hashTable.Close();

                hashTable = new PersistentHashTable(hastTableName);

                TestHelper.AssertByteArraysAreSame(value, hashTable.Get(key));
            }
            finally
            {
                hashTable.Close();
            }
        }