public void Search_NonExistingKey_ReturnsValue()
        {
            ImmutableHashTable <int, int> hashTable = ImmutableHashTable <int, int> .Empty;

            var value = hashTable.Search(1);

            Assert.Equal(0, value);
        }
        public void Search_NonExistingType_ReturnsDefaultValue()
        {
            ImmutableHashTable <Type, int> hashTable = ImmutableHashTable <Type, int> .Empty;

            var value = hashTable.Search(typeof(int));

            Assert.Equal(0, value);
        }
        public void ImmutableHashTable_Add()
        {
            ImmutableHashTable <ReferenceInt, int> hashTable = ImmutableHashTable <ReferenceInt, int> .Empty;

            for (var i = 0; i < N; i++)
            {
                hashTable = hashTable.Add(_mapping[i], i);
            }
        }
        public void Search_ExistingType_ReturnsValue()
        {
            ImmutableHashTable <Type, int> hashTable = ImmutableHashTable <Type, int> .Empty;

            hashTable = hashTable.Add(typeof(int), 42);

            var value = hashTable.Search(typeof(int));

            Assert.Equal(42, value);
        }
        public void Search_ExistingKey_ReturnsValue()
        {
            ImmutableHashTable <int, int> hashTable = ImmutableHashTable <int, int> .Empty;

            hashTable = hashTable.Add(1, 42);

            var value = hashTable.Search(1);

            Assert.Equal(42, value);
        }
        public void AddValues_CausingTableResize_PreservesExistingValues()
        {
            ImmutableHashTable <int, int> hashTable = ImmutableHashTable <int, int> .Empty;

            hashTable = hashTable.Add(2, 2);
            hashTable = hashTable.Add(4, 4);
            hashTable = hashTable.Add(8, 8);

            var value = hashTable.Search(2);

            Assert.Equal(2, value);
        }
 public void Setup()
 {
     _mapping = new ReferenceInt[N];
     for (int i = 0; i < _mapping.Length; i++)
     {
         _mapping[i] = new ReferenceInt(i);
     }
     _hashTable = ImmutableHashTable <ReferenceInt, int> .Empty;
     for (var i = 0; i < N; i++)
     {
         _hashTable = _hashTable.Add(_mapping[i], i);
     }
 }
        public void Search_SameHashCode_ReturnsValue()
        {
            ImmutableHashTable <FooWithSameHashCode, int> hashTable = ImmutableHashTable <FooWithSameHashCode, int> .Empty;

            var firstKey  = new FooWithSameHashCode(42);
            var secondKey = new FooWithSameHashCode(84);

            hashTable = hashTable.Add(firstKey, 42);
            hashTable = hashTable.Add(secondKey, 84);

            var value = hashTable.Search(firstKey);

            Assert.Equal(42, value);
        }