Skip to content

Commit 9491e47

Browse files
author
Alex Peck
committed
kvp tests
1 parent 3d3ef30 commit 9491e47

File tree

3 files changed

+57
-1
lines changed

3 files changed

+57
-1
lines changed

BitFaster.Caching.UnitTests/Lfu/ConcurrentLfuTests.cs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,14 +582,32 @@ public void WhenItemDoesNotExistUpdatedAddsItem()
582582
}
583583

584584
[Fact]
585-
public void WhenItemIsRemovedItIsRemoved()
585+
public void WhenKeyIsRemovedItIsRemoved()
586586
{
587587
cache.GetOrAdd(1, k => k);
588588

589589
cache.TryRemove(1).Should().BeTrue();
590590
cache.TryGet(1, out var value).Should().BeFalse();
591591
}
592592

593+
[Fact]
594+
public void WhenItemIsRemovedItIsRemoved()
595+
{
596+
cache.GetOrAdd(1, k => k);
597+
598+
cache.TryRemove(new KeyValuePair<int, int>(1, 1)).Should().BeTrue();
599+
cache.TryGet(1, out var value).Should().BeFalse();
600+
}
601+
602+
[Fact]
603+
public void WhenItemDoesntMatchItIsNotRemoved()
604+
{
605+
cache.GetOrAdd(1, k => k);
606+
607+
cache.TryRemove(new KeyValuePair<int, int>(1, 2)).Should().BeFalse();
608+
cache.TryGet(1, out var value).Should().BeTrue();
609+
}
610+
593611
[Fact]
594612
public void WhenItemIsRemovedItIsDisposed()
595613
{

BitFaster.Caching.UnitTests/Lru/ClassicLruTests.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,24 @@ public void WhenKeyExistsTryRemoveRemovesItemAndReturnsTrue()
362362
lru.TryGet(1, out var value).Should().BeFalse();
363363
}
364364

365+
[Fact]
366+
public void WhenItemExistsTryRemovesItemAndReturnsTrue()
367+
{
368+
lru.GetOrAdd(1, valueFactory.Create);
369+
370+
lru.TryRemove(new KeyValuePair<int, string>(1, "1")).Should().BeTrue();
371+
lru.TryGet(1, out var value).Should().BeFalse();
372+
}
373+
374+
[Fact]
375+
public void WhenTryRemoveKvpDoesntMatchItemNotRemovedAndReturnsFalse()
376+
{
377+
lru.GetOrAdd(1, valueFactory.Create);
378+
379+
lru.TryRemove(new KeyValuePair<int, string>(1, "2")).Should().BeFalse();
380+
lru.TryGet(1, out var value).Should().BeTrue();
381+
}
382+
365383
[Fact]
366384
public void WhenItemIsRemovedItIsDisposed()
367385
{

BitFaster.Caching.UnitTests/Lru/ConcurrentLruTests.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,6 +1196,26 @@ await Threaded.Run(4, () => {
11961196
}
11971197
}
11981198

1199+
[Fact]
1200+
public async Task WhenSoakConcurrentGetAndRemoveKvpCacheEndsInConsistentState()
1201+
{
1202+
for (int i = 0; i < 10; i++)
1203+
{
1204+
await Threaded.Run(4, () => {
1205+
for (int i = 0; i < 100000; i++)
1206+
{
1207+
lru.TryRemove(new KeyValuePair<int, string>(i + 1, (i + 1).ToString()));
1208+
lru.GetOrAdd(i + 1, i => i.ToString());
1209+
}
1210+
});
1211+
1212+
this.testOutputHelper.WriteLine($"{lru.HotCount} {lru.WarmCount} {lru.ColdCount}");
1213+
this.testOutputHelper.WriteLine(string.Join(" ", lru.Keys));
1214+
1215+
RunIntegrityCheck();
1216+
}
1217+
}
1218+
11991219
[Fact]
12001220
public async Task WhenSoakConcurrentGetAndUpdateCacheEndsInConsistentState()
12011221
{

0 commit comments

Comments
 (0)