Esempio n. 1
0
        public void DatabaseLoadsAndUnloadsSecondaryIndex()
        {
            _testName = MethodInfo.GetCurrentMethod().Name.GetHashCode().ToString();
            Cleanup();

            var objs = TestResourceFactory.GetMockClassAObjects(25);

            objs[0].Name = "Booger";
            objs[1].Name = "Pluckers";
            objs[2].Name = "Pluckers";

            using (var db = new Database<int, MockClassA>(_testName + ".database", "Id", new FileCore<int, long>())
                .WithIndex<string>("catIndex", "CatalogName", new BinConverterString()))
            {
                db.Load();

                using (var t = db.BeginTransaction())
                {
                    foreach (var o in objs)
                        o.Id = db.Add(o);

                    t.Commit();
                }

                var check = db.FetchFromIndex<string>("catIndex", objs.First().CatalogName);

                Assert.IsNotNull(check);
                Assert.AreEqual(1, check.Count);
                Assert.AreEqual(objs.First().Id, check[0].Id);

                check = db.FetchFromIndex<string>("catIndex", "P");

                Assert.IsNotNull(check);
                Assert.AreEqual(2, check.Count);

                check = db.FetchRangeFromIndexInclusive<string>("catIndex", "A", "C");

                Assert.IsNotNull(check);
                Assert.AreEqual(23, check.Count);

                db.WithoutIndex("notThere");
                db.WithoutIndex("catIndex");
            }
        }