public void AggresiveValues() { var mdb = new MockDatabase(); var enumerator = mdb.ValuesAggressive().GetEnumerator(); for (var i = 0; i < mdb.Data.Count; i++) { enumerator.MoveNext().Should().BeTrue(); mdb.EnsureNoValuesLoadedBeyond(i); } mdb.EnsureAllValuesLoaded(); }
public void Keys() { var mdb = new MockDatabase(); mdb .Keys() .Should() .BeEquivalentTo ( new[] { "a", "b", "c", "d", "a", "b", "c", "d", "a", "b" }, "Returns all keys correctly" ); mdb.EnsureNoValuesLoaded(); }
public void Values() { var mdb = new MockDatabase(); mdb .Values() .Cast <LazyItem <int> >() .Select(x => x.Value) .Should() .BeEquivalentTo ( new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, "Returns all values correctly" ); mdb.EnsureNoValuesLoaded(); }
public async Task MultipleThreadsForeachOver() { var mockdb = new MockDatabase(); var db = mockdb.WithThreadLock(); var tasks = new List <Task>(); for (var i = 0; i < 10_000; i++) { tasks.Add(Task.Run(action: () => Parallel.ForEach(db, j => j.Value.Load()))); } await Task.WhenAll(tasks).ConfigureAwait(false); // 10,000 threads, 10 items each with 1 load // 10,000 * (10 * (1 + 1)) = 10,000 * 20 = 200,000 mockdb.Counter .Should() .Be(200_000); }
public void EnumerateEggressively() { var mdb = new MockDatabase(); var enumerator = mdb.EnumerateAggressively(4).GetEnumerator(); mdb.EnsureNoValuesLoaded(); for (var i = 1; i <= 3; i++) { var point = (i * 4) - 1; enumerator.MoveNext(); mdb.EnsureNoValuesLoadedBeyond(point); for (var j = 0; j < 4 - 1; j++) { enumerator.MoveNext(); } } mdb.EnsureAllValuesLoaded(); }
public BufferedDatabaseTests() { _mockDb = new MockDatabase(); _db = new BufferedDatabase <int, int>(_mockDb, BufferSize); }
public LazyLoader(MockDatabase db, int load) { _db = db; _load = load; }