private static void TestContainsKey(HybridReadOnlyArrayDictionary <int, int> d, int numItems)
        {
            for (int i = 0; i < numItems; i++)
            {
                Assert.IsTrue(d.ContainsKey(i));
            }

            Assert.IsFalse(d.ContainsKey(-1));
        }
        public void Returns_items_from_large_dictionary()
        {
            var orig = CreateDictionary(16);

            // act
            var d = new HybridReadOnlyArrayDictionary <int, int>(orig);

            // assert
            TestDictionary(d, 16);
        }
 private static void TestDictionary(HybridReadOnlyArrayDictionary <int, int> d, int numItems)
 {
     TestCount(d, numItems);
     TestKeys(d, numItems);
     TestValues(d, numItems);
     TestItemIndexer(d, numItems);
     TestContainsKey(d, numItems);
     TestTryGetValue(d, numItems);
     TestGetEnumerator(d, numItems);
     TestGetEnumeratorExplicit(d, numItems);
 }
        private static void TestTryGetValue(HybridReadOnlyArrayDictionary <int, int> d, int numItems)
        {
            for (int i = 0; i < numItems; i++)
            {
                int  value;
                bool success = d.TryGetValue(i, out value);

                Assert.IsTrue(success);
                Assert.AreEqual(i, value);
            }

            int  value2;
            bool success2 = d.TryGetValue(-1, out value2);

            Assert.IsFalse(success2);
            Assert.AreEqual(value2, default(int));
        }
        private static void TestGetEnumeratorExplicit(HybridReadOnlyArrayDictionary <int, int> d, int numItems)
        {
            IEnumerable e          = d;
            IEnumerator enumerator = e.GetEnumerator();

            int[] keys   = new int[numItems];
            int[] values = new int[numItems];

            int i = 0;

            while (enumerator.MoveNext())
            {
                keys[i]   = ((KeyValuePair <int, int>)enumerator.Current).Key;
                values[i] = ((KeyValuePair <int, int>)enumerator.Current).Value;
                i++;
            }

            TestArrayAscendance(numItems, keys);
            TestArrayAscendance(numItems, values);
        }
        private static void TestItemIndexer(HybridReadOnlyArrayDictionary <int, int> d, int numItems)
        {
            for (int i = 0; i < numItems; i++)
            {
                Assert.AreEqual(i, d[i]);
            }

            Exception exc = null;

            try
            {
                int ignore = d[-1];
            }
            catch (KeyNotFoundException e)
            {
                exc = e;
            }

            Assert.IsNotNull(exc);
            Assert.AreEqual(typeof(KeyNotFoundException), exc.GetType());
        }
 private static void TestValues(HybridReadOnlyArrayDictionary <int, int> d, int numItems)
 {
     TestArrayAscendance(numItems, d.Values.ToArray());
 }
 private static void TestCount(HybridReadOnlyArrayDictionary <int, int> d, int numItems)
 {
     Assert.AreEqual(d.Count, numItems);
 }
 private static void TestGetEnumerator(HybridReadOnlyArrayDictionary <int, int> d, int numItems)
 {
     TestArrayAscendance(numItems, d.Select(x => x.Key).ToArray());
     TestArrayAscendance(numItems, d.Select(x => x.Value).ToArray());
 }