Skip to content

Commit b0021ed

Browse files
authored
policy (#168)
* outline * policy * ocpr * tests * cleanup
1 parent 0748cf7 commit b0021ed

38 files changed

+274
-99
lines changed

BitFaster.Caching.UnitTests/Atomic/AtomicFactoryAsyncCacheTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public void WhenCacheContainsValuesTrim1RemovesColdestValue()
114114
this.cache.AddOrUpdate(1, 1);
115115
this.cache.AddOrUpdate(2, 2);
116116

117-
this.cache.Trim(1);
117+
this.cache.Policy.Eviction.Trim(1);
118118

119119
this.cache.TryGet(0, out var value).Should().BeFalse();
120120
}

BitFaster.Caching.UnitTests/Atomic/AtomicFactoryCacheTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public void WhenCacheContainsValuesTrim1RemovesColdestValue()
114114
this.cache.AddOrUpdate(1, 1);
115115
this.cache.AddOrUpdate(2, 2);
116116

117-
this.cache.Trim(1);
117+
this.cache.Policy.Eviction.Trim(1);
118118

119119
this.cache.TryGet(0, out var value).Should().BeFalse();
120120
}

BitFaster.Caching.UnitTests/BitFaster.Caching.UnitTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
</PackageReference>
1212
<PackageReference Include="FluentAssertions" Version="6.7.0" />
1313
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
14+
<PackageReference Include="Moq" Version="4.18.1" />
1415
<PackageReference Include="xunit" Version="2.4.1" />
1516
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
1617
<PrivateAssets>all</PrivateAssets>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using FluentAssertions;
7+
using Moq;
8+
using Xunit;
9+
10+
namespace BitFaster.Caching.UnitTests
11+
{
12+
public class CachePolicyTests
13+
{
14+
[Fact]
15+
public void WhenCtorFieldsAreAssigned()
16+
{
17+
var eviction = new Mock<IBoundedPolicy>();
18+
var expire = new Mock<ITimePolicy>();
19+
20+
var cp = new CachePolicy(eviction.Object, expire.Object);
21+
22+
cp.Eviction.Should().Be(eviction.Object);
23+
cp.ExpireAfterWrite.Should().Be(expire.Object);
24+
}
25+
}
26+
}

BitFaster.Caching.UnitTests/Lru/ClassicLruTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,13 @@ private void OnItemRemoved(object sender, ItemRemovedEventArgs<int, string> e)
183183
throw new NotImplementedException();
184184
}
185185

186+
[Fact]
187+
public void ExpireAfterWriteIsDisabled()
188+
{
189+
lru.Policy.ExpireAfterWrite.Should().Be(NoneTimePolicy.Instance);
190+
lru.Policy.ExpireAfterWrite.CanExpire.Should().BeFalse();
191+
}
192+
186193
[Fact]
187194
public void WhenKeyIsRequestedItIsCreatedAndCached()
188195
{

BitFaster.Caching.UnitTests/Lru/ConcurrentLruBuilderTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public void AsAsyncTestMetricsTLru()
9595
.Build();
9696

9797
lru.Should().BeOfType<ConcurrentTLru<int, int>>();
98-
lru.Capacity.Should().Be(128);
98+
lru.Policy.Eviction.Capacity.Should().Be(128);
9999
}
100100

101101

@@ -268,7 +268,7 @@ public void AsAsyncWithScoped()
268268

269269
lru.Should().BeAssignableTo<IScopedAsyncCache<int, Disposable>>();
270270

271-
lru.Capacity.Should().Be(3);
271+
lru.Policy.Eviction.Capacity.Should().Be(3);
272272
}
273273

274274
// 7
@@ -282,7 +282,7 @@ public void WithScopedAsAsync()
282282
.Build();
283283

284284
lru.Should().BeAssignableTo<IScopedAsyncCache<int, Disposable>>();
285-
lru.Capacity.Should().Be(3);
285+
lru.Policy.Eviction.Capacity.Should().Be(3);
286286
}
287287

288288
// 8

BitFaster.Caching.UnitTests/Lru/ConcurrentLruTests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,18 @@ public void WhenRefToMetricsIsCapturedResultIsCorrect()
224224
m.HitRatio.Should().Be(0.5);
225225
}
226226

227+
[Fact]
228+
public void CanExpireIsFalse()
229+
{
230+
this.lru.CanExpire.Should().BeFalse();
231+
}
232+
233+
[Fact]
234+
public void TimeToLiveIsInfinite()
235+
{
236+
this.lru.TimeToLive.Should().Be(NoneTimePolicy.Infinite);
237+
}
238+
227239
[Fact]
228240
public void WhenKeyIsRequestedItIsCreatedAndCached()
229241
{

BitFaster.Caching.UnitTests/Lru/ConcurrentTLruTests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,18 @@ public void ConstructPartitionCtorReturnsCapacity()
5252
x.Capacity.Should().Be(3);
5353
}
5454

55+
[Fact]
56+
public void CanExpireIsTrue()
57+
{
58+
this.lru.CanExpire.Should().BeTrue();
59+
}
60+
61+
[Fact]
62+
public void TimeToLiveIsCtorArg()
63+
{
64+
this.lru.TimeToLive.Should().Be(timeToLive);
65+
}
66+
5567
[Fact]
5668
public void WhenItemIsNotExpiredItIsNotRemoved()
5769
{

BitFaster.Caching.UnitTests/Lru/LruPolicyTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ public class LruPolicyTests
1111
{
1212
private readonly LruPolicy<int, int> policy = new LruPolicy<int, int>();
1313

14+
[Fact]
15+
public void TimeToLiveIsInfinite()
16+
{
17+
this.policy.TimeToLive.Should().Be(NoneTimePolicy.Infinite);
18+
}
19+
1420
[Fact]
1521
public void CreateItemInitializesKeyAndValue()
1622
{

BitFaster.Caching.UnitTests/Lru/TlruDateTimePolicyTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ public class TLruDateTimePolicyTests
1414
{
1515
private readonly TLruDateTimePolicy<int, int> policy = new TLruDateTimePolicy<int, int>(TimeSpan.FromSeconds(10));
1616

17+
[Fact]
18+
public void TimeToLiveShouldBeTenSecs()
19+
{
20+
this.policy.TimeToLive.Should().Be(TimeSpan.FromSeconds(10));
21+
}
22+
1723
[Fact]
1824
public void CreateItemInitializesKeyAndValue()
1925
{

0 commit comments

Comments
 (0)