public async Task DBFiles_BTree_Test_19_LockedEnumeration() { SortedDictionary <Guid, Simple> Objects = await this.CreateObjects(ObjectsToEnumerate); Guid? Prev = null; Simple Obj; ulong Rank = 0; using (ObjectBTreeFileEnumerator <Simple> e = await this.file.GetTypedEnumeratorAsync <Simple>(true)) { while (await e.MoveNextAsync()) { Obj = e.Current; if (Prev.HasValue) { AssertEx.Less(Prev.Value, Obj.ObjectId); } Prev = Obj.ObjectId; Assert.IsTrue(Objects.Remove(Obj.ObjectId)); AssertEx.Same(Rank++, e.CurrentRank); AssertEx.Same(Obj.ObjectId, e.CurrentObjectId); } } AssertEx.Same(0, Objects.Count); }
public async Task DBFiles_BTree_Test_20_UnlockedChangeEnumeration() { await this.CreateObjects(Math.Min(ObjectsToEnumerate, 1000)); Simple Obj; using (ObjectBTreeFileEnumerator <Simple> e = await this.file.GetTypedEnumeratorAsync <Simple>(false)) { while (await e.MoveNextAsync()) { Obj = e.Current; Obj = CreateSimple(this.MaxStringLength); await this.file.SaveNewObject(Obj); } } }
public async Task DBFiles_BTree_Test_22_SelectIthObject() { int c = ObjectsToEnumerate; SortedDictionary <Guid, Simple> Objects = await this.CreateObjects(c); Simple[] Ordered = new Simple[c]; Objects.Values.CopyTo(Ordered, 0); Guid? Prev; Simple Obj; Random gen = new Random(); int i, j; for (i = 0; i < c; i++) { j = 0; Prev = null; if (i < 10 || (gen.Next(0, 2) == 0 && i <= c - 10)) { using (ObjectBTreeFileEnumerator <Simple> e = await this.file.GetTypedEnumeratorAsync <Simple>(true)) { Assert.IsTrue(await e.GoToObject((uint)i)); do { Obj = e.Current; if (Prev.HasValue) { AssertEx.Less(Prev.Value, Obj.ObjectId); } Prev = Obj.ObjectId; DBFilesObjectSerializationTests.AssertEqual(Ordered[i + j], Obj); AssertEx.Same(i + j, e.CurrentRank); AssertEx.Same(Obj.ObjectId, e.CurrentObjectId); }while (await e.MoveNextAsync() && j++ < 10); } } else { using (ObjectBTreeFileEnumerator <Simple> e = await this.file.GetTypedEnumeratorAsync <Simple>(true)) { Assert.IsTrue(await e.GoToObject((uint)i)); do { Obj = e.Current; if (Prev.HasValue) { AssertEx.Greater(Prev.Value, Obj.ObjectId); } Prev = Obj.ObjectId; DBFilesObjectSerializationTests.AssertEqual(Ordered[i - j], Obj); AssertEx.Same(i - j, e.CurrentRank); AssertEx.Same(Obj.ObjectId, e.CurrentObjectId); }while (e.MovePrevious() && j++ < 10); } } } }