Exemple #1
0
        private static void checkLE(IndexBase indexByValue)
        {
            var keyType = new KeyInfo(KeyDataType.IntKey, KeyType.ScalarIndex, "test", true);

            //non existent value in the middle
            {
                var result1 = indexByValue.GetMany(MakeIntValue(12, keyType), QueryOperator.Le);

                Assert.AreEqual(result1.Count, 3);

                var count = indexByValue.GetCount(MakeIntValue(12, keyType), QueryOperator.Le);

                Assert.AreEqual(count, 3);
            }

            //existent value in the middle
            {
                var result1 = indexByValue.GetMany(MakeIntValue(13, keyType), QueryOperator.Le);
                Assert.AreEqual(result1.Count, 4);

                var count = indexByValue.GetCount(MakeIntValue(13, keyType), QueryOperator.Le);
                Assert.AreEqual(count, 4);
            }

            //value < all
            {
                var result1 = indexByValue.GetMany(MakeIntValue(0, keyType), QueryOperator.Le);
                Assert.AreEqual(result1.Count, 0);

                var count = indexByValue.GetCount(MakeIntValue(0, keyType), QueryOperator.Le);
                Assert.AreEqual(count, 0);
            }

            //value > all
            {
                var result1 = indexByValue.GetMany(MakeIntValue(99, keyType), QueryOperator.Le);
                Assert.AreEqual(result1.Count, 6);

                var count = indexByValue.GetCount(MakeIntValue(99, keyType), QueryOperator.Le);
                Assert.AreEqual(count, 6);
            }

            //first value
            {
                var result1 =
                    indexByValue.GetMany(MakeIntValue(1, keyType), QueryOperator.Le).OrderBy(o => o.PrimaryKey)
                    .ToList();
                Assert.AreEqual(result1.Count, 1);
                Assert.AreEqual(result1[0].PrimaryKey.ToString(), "#1");


                var count = indexByValue.GetCount(MakeIntValue(1, keyType), QueryOperator.Le);
                Assert.AreEqual(count, 1);
            }
        }
Exemple #2
0
        public void ExtremeCases()
        {
            //void index

            var keyType = new KeyInfo(KeyDataType.IntKey, KeyType.ScalarIndex, "test", true);

            IndexBase index  = populate();
            var       result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Le);

            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Lt);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Eq);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Gt);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Ge);
            Assert.AreEqual(result.Count, 0);


            //one element index, value not found
            index  = populate(15);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Le);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Lt);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Eq);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Gt);
            Assert.AreEqual(result.Count, 1);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Ge);
            Assert.AreEqual(result.Count, 1);


            //one element index, value found
            index  = populate(12);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Le);
            Assert.AreEqual(result.Count, 1);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Lt);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Eq);
            Assert.AreEqual(result.Count, 1);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Gt);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Ge);
            Assert.AreEqual(result.Count, 1);

            //two element index (different values)
            index  = populate(12, 15);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Le);
            Assert.AreEqual(result.Count, 1);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Lt);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Eq);
            Assert.AreEqual(result.Count, 1);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Gt);
            Assert.AreEqual(result.Count, 1);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Ge);
            Assert.AreEqual(result.Count, 2);


            //two element index (same value)
            index  = populate(12, 12);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Le);
            Assert.AreEqual(result.Count, 2);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Lt);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Eq);
            Assert.AreEqual(result.Count, 2);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Gt);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Ge);
            Assert.AreEqual(result.Count, 2);


            //three element index (same value ==)
            index  = populate(12, 12, 12);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Le);
            Assert.AreEqual(result.Count, 3);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Lt);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Eq);
            Assert.AreEqual(result.Count, 3);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Gt);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Ge);
            Assert.AreEqual(result.Count, 3);

            //three element index (same value !=)
            index  = populate(15, 15, 15);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Le);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Lt);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Eq);
            Assert.AreEqual(result.Count, 0);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Gt);
            Assert.AreEqual(result.Count, 3);
            result = index.GetMany(MakeIntValue(12, keyType), QueryOperator.Ge);
            Assert.AreEqual(result.Count, 3);
        }
Exemple #3
0
        private static void CheckLs(IndexBase indexByValue)
        {
            var keyType = new KeyInfo("IndexKeyValue", 0, IndexType.Ordered);

            //non existent value in the middle
            {
                IList <PackedObject> result1 =
                    indexByValue.GetMany(MakeIntValue(12, keyType), QueryOperator.Lt)
                    .OrderBy(o => o.PrimaryKey)
                    .ToList();
                Assert.AreEqual(result1.Count, 3);
                Assert.AreEqual(result1[0].PrimaryKey.ToString(), "1");
                Assert.AreEqual(result1[1].PrimaryKey.ToString(), "2");
                Assert.AreEqual(result1[2].PrimaryKey.ToString(), "3");

                var count = indexByValue.GetCount(MakeIntValue(12, keyType), QueryOperator.Lt);
                Assert.AreEqual(count, 3);
            }

            //existent value in the middle
            {
                IList <PackedObject> result1 =
                    indexByValue.GetMany(MakeIntValue(13, keyType), QueryOperator.Lt)
                    .OrderBy(o => o.PrimaryKey)
                    .ToList();
                Assert.AreEqual(result1.Count, 3);
                Assert.AreEqual(result1[2].PrimaryKey.ToString(), "3");

                var count = indexByValue.GetCount(MakeIntValue(12, keyType), QueryOperator.Lt);
                Assert.AreEqual(count, 3);
            }

            //value < all
            {
                IList <PackedObject> result1 =
                    indexByValue.GetMany(MakeIntValue(0, keyType), QueryOperator.Lt).OrderBy(o => o.PrimaryKey)
                    .ToList();
                Assert.AreEqual(result1.Count, 0);

                var count = indexByValue.GetCount(MakeIntValue(0, keyType), QueryOperator.Lt);
                Assert.AreEqual(count, 0);
            }

            //value > all
            {
                IList <PackedObject> result1 =
                    indexByValue.GetMany(MakeIntValue(99, keyType), QueryOperator.Lt)
                    .OrderBy(o => o.PrimaryKey)
                    .ToList();
                Assert.AreEqual(result1.Count, 6);

                var count = indexByValue.GetCount(MakeIntValue(99, keyType), QueryOperator.Lt);
                Assert.AreEqual(count, 6);
            }

            //first value
            {
                IList <PackedObject> result1 =
                    indexByValue.GetMany(MakeIntValue(1, keyType), QueryOperator.Lt).OrderBy(o => o.PrimaryKey)
                    .ToList();
                Assert.AreEqual(result1.Count, 0);

                var count = indexByValue.GetCount(MakeIntValue(1, keyType), QueryOperator.Lt);
                Assert.AreEqual(count, 0);
            }
        }