public void CtorTest()
        {
            int             tableSize = 20;
            int             keySize   = 5;
            int             valueSize = 10;
            HashTableHeader header    = new HashTableHeader(tableSize, keySize, valueSize);

            Assert.AreEqual(tableSize, header.TableSize);
            Assert.AreEqual(keySize, header.KeySize);
            Assert.AreEqual(valueSize, header.ValueSize);
        }
        public void SerializeTest()
        {
            int             tableSize = 20;
            int             keySize   = 5;
            int             valueSize = 10;
            HashTableHeader header    = new HashTableHeader(tableSize, keySize, valueSize);

            byte[] headerBytes = header.Serialize();
            byte[] expected    = tableSize.ToBytes().Append(keySize.ToBytes(), valueSize.ToBytes());

            TestHelper.AssertByteArraysAreSame(expected, headerBytes);
        }
        public void DeserializeTest()
        {
            int tableSize = 20;
            int keySize   = 5;
            int valueSize = 10;

            byte[]          expected = tableSize.ToBytes().Append(keySize.ToBytes(), valueSize.ToBytes());
            HashTableHeader header   = HashTableHeader.Deserialize(expected);

            Assert.AreEqual(tableSize, header.TableSize);
            Assert.AreEqual(keySize, header.KeySize);
            Assert.AreEqual(valueSize, header.ValueSize);


            try
            {
                HashTableHeader.Deserialize(new byte[0]);
                Assert.Fail("Should throw exception");
            }
            catch (InsufficientDataException) { }
        }