public void ShouldAllocateForDifferentCollections() { var allocator = new KeyAllocator(Store, 10); AssertNext(allocator, "Todos", 1); AssertNext(allocator, "Todos", 2); AssertNext(allocator, "Todos", 3); AssertNext(allocator, "TodoItems", 1); AssertNext(allocator, "TodoItems", 2); AssertNext(allocator, "TodoItems", 3); AssertNext(allocator, "Todos", 4); AssertNext(allocator, "Todos", 5); }
public void ShouldAllocateKeysInChunks() { var allocatorA = new KeyAllocator(Store, 10); var allocatorB = new KeyAllocator(Store, 10); // A gets 1-10 AssertNext(allocatorA, "Todos", 1); AssertNext(allocatorA, "Todos", 2); AssertNext(allocatorA, "Todos", 3); AssertNext(allocatorA, "Todos", 4); AssertNext(allocatorA, "Todos", 5); // B gets 11->20 AssertNext(allocatorB, "Todos", 11); AssertNext(allocatorB, "Todos", 12); AssertNext(allocatorB, "Todos", 13); // A will keep allocating AssertNext(allocatorA, "Todos", 6); AssertNext(allocatorA, "Todos", 7); AssertNext(allocatorA, "Todos", 8); AssertNext(allocatorA, "Todos", 9); AssertNext(allocatorA, "Todos", 10); // ... until it needs a new block AssertNext(allocatorA, "Todos", 21); AssertNext(allocatorA, "Todos", 22); AssertNext(allocatorA, "Todos", 23); AssertNext(allocatorB, "Todos", 14); AssertNext(allocatorB, "Todos", 15); AssertNext(allocatorB, "Todos", 16); AssertNext(allocatorB, "Todos", 17); AssertNext(allocatorB, "Todos", 18); AssertNext(allocatorB, "Todos", 19); AssertNext(allocatorB, "Todos", 20); // Now B needs a new block AssertNext(allocatorB, "Todos", 31); }
static void AssertNext(KeyAllocator allocator, string collection, int expected) { allocator.NextId(collection).Should().Be(expected); }
static void AssertNext(KeyAllocator allocator, string collection, int expected) { Assert.Equal(expected, allocator.NextId(collection)); }