public virtual void TryGetValues_NonExistingKey()
        {
            #region data

            var idx = new BinaryTreeIndex();

            var key_1 = 10;
            var key_2 = 11;
            var key_3 = 12;

            var val_1 = 2;
            var val_2 = 3;
            var val_3 = 5;

            #endregion

            #region test

            idx.Add(key_1, val_1);
            idx.Add(key_1, val_2, IndexAddStrategy.MERGE);

            idx.Add(key_2, val_3);

            Assert.AreEqual(2, idx.KeyCount(), "The number of keys is not correct.");
            Assert.AreEqual(3, idx.ValueCount(), "The number of values is not correct.");

            // TryGetValues with non existing key
            IEnumerable<Int64> result;
            Assert.IsFalse(idx.TryGetValues(key_3, out result));
            Assert.IsNull(result);

            #endregion
        }
        public virtual void TryGetValues_ExistingKey()
        {
            #region data

            var idx = new BinaryTreeIndex();

            var key_1 = 10;
            var key_2 = 11;

            var val_1 = 2;
            var val_2 = 3;
            var val_3 = 5;

            #endregion

            #region test

            idx.Add(key_1, val_1);
            idx.Add(key_1, val_2, IndexAddStrategy.MERGE);

            idx.Add(key_2, val_3);

            Assert.AreEqual(2, idx.KeyCount(), "The number of keys is not correct.");
            Assert.AreEqual(3, idx.ValueCount(), "The number of values is not correct.");

            // TryGetValues test
            IEnumerable<Int64> result;
            Assert.IsTrue(idx.TryGetValues(key_1, out result));
            Assert.IsTrue(result.Contains(val_1));
            Assert.IsTrue(result.Contains(val_2));
            Assert.AreEqual(2, result.Count());

            Assert.IsTrue(idx.TryGetValues(key_2, out result));
            Assert.IsTrue(result.Contains(val_3));
            Assert.AreEqual(1, result.Count());

            #endregion
        }