Ejemplo n.º 1
0
            private IndexKey ResolveKey(IndexKey key)
            {
                if (key.Equals(IndexRange.FirstInSet))
                {
                    ResolveSortedSet();
                    return(index.GetKey(sortedSet[0]));
                }
                if (key.Equals(IndexRange.LastInSet))
                {
                    ResolveSortedSet();
                    return(index.GetKey(sortedSet[sortedSet.Length - 1]));
                }

                return(key);
            }
Ejemplo n.º 2
0
        public static void SingleValueKeyEqual(object value1, object value2, bool expected)
        {
            var key1 = new IndexKey(SqlObject.New(SqlValueUtil.FromObject(value1)));
            var key2 = new IndexKey(SqlObject.New(SqlValueUtil.FromObject(value2)));

            Assert.Equal(expected, key1.Equals(key2));
        }
Ejemplo n.º 3
0
        public static void MultiValueKeyEqual(object value1a, object value1b, object value2a, object value2b, bool expected)
        {
            var key1 = new IndexKey(new [] {
                SqlObject.New(SqlValueUtil.FromObject(value1a)),
                SqlObject.New(SqlValueUtil.FromObject(value1b))
            });
            var key2 = new IndexKey(new[] {
                SqlObject.New(SqlValueUtil.FromObject(value2a)),
                SqlObject.New(SqlValueUtil.FromObject(value2b))
            });

            Assert.Equal(expected, key1.Equals(key2));
        }
        private long PositionOfRangePoint(RangeFieldOffset position, IndexKey val)
        {
            long     p;
            IndexKey cell;

            switch (position)
            {
            case RangeFieldOffset.FirstValue:

                if (val.Equals(IndexRange.FirstInSet))
                {
                    return(0);
                }

                if (val.Equals(IndexRange.LastInSet))
                {
                    // Get the last value and search for the first instance of it.
                    cell = Last;
                }
                else
                {
                    cell = val;
                }

                p = SearchFirst(cell);

                // (If value not found)
                if (p < 0)
                {
                    return(-(p + 1));
                }

                return(p);

            case RangeFieldOffset.LastValue:

                if (val.Equals(IndexRange.LastInSet))
                {
                    return(RowCount - 1);
                }

                if (val.Equals(IndexRange.FirstInSet))
                {
                    // Get the first value.
                    cell = First;
                }
                else
                {
                    cell = val;
                }

                p = SearchLast(cell);

                // (If value not found)
                if (p < 0)
                {
                    return(-(p + 1) - 1);
                }

                return(p);

            case RangeFieldOffset.BeforeFirstValue:

                if (val.Equals(IndexRange.FirstInSet))
                {
                    return(-1);
                }

                if (val.Equals(IndexRange.LastInSet))
                {
                    // Get the last value and search for the first instance of it.
                    cell = Last;
                }
                else
                {
                    cell = val;
                }

                p = SearchFirst(cell);

                // (If value not found)
                if (p < 0)
                {
                    return(-(p + 1) - 1);
                }

                return(p - 1);

            case RangeFieldOffset.AfterLastValue:

                if (val.Equals(IndexRange.LastInSet))
                {
                    return(RowCount);
                }

                if (val.Equals(IndexRange.FirstInSet))
                {
                    // Get the first value.
                    cell = First;
                }
                else
                {
                    cell = val;
                }

                p = SearchLast(cell);

                // (If value not found)
                if (p < 0)
                {
                    return(-(p + 1));
                }

                return(p + 1);

            default:

                throw new InvalidOperationException("Unrecognised position.");
            }
        }