Skip to content

Commit 9ad8d8f

Browse files
author
Alex Peck
committed
policy tests
1 parent dbacadc commit 9ad8d8f

File tree

8 files changed

+187
-116
lines changed

8 files changed

+187
-116
lines changed

BitFaster.Caching.UnitTests/Lru/DiscretePolicyTests.cs

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -114,48 +114,60 @@ public void CanDiscardIsTrue()
114114
this.policy.CanDiscard().Should().BeTrue();
115115
}
116116

117-
118117
[Theory]
119-
[InlineData(false, true, ItemDestination.Remove)]
120-
[InlineData(true, true, ItemDestination.Remove)]
121-
[InlineData(true, false, ItemDestination.Warm)]
122-
[InlineData(false, false, ItemDestination.Cold)]
123-
public void RouteHot(bool wasAccessed, bool isExpired, ItemDestination expectedDestination)
118+
[InlineData(false, false, true, ItemDestination.Remove)]
119+
[InlineData(true, false, true, ItemDestination.Remove)]
120+
[InlineData(true, false, false, ItemDestination.Warm)]
121+
[InlineData(false, false, false, ItemDestination.Cold)]
122+
[InlineData(false, true, true, ItemDestination.Remove)]
123+
[InlineData(true, true, true, ItemDestination.Remove)]
124+
[InlineData(true, true, false, ItemDestination.Remove)]
125+
[InlineData(false, true, false, ItemDestination.Remove)]
126+
public void RouteHot(bool wasAccessed, bool wasRemoved, bool isExpired, ItemDestination expectedDestination)
124127
{
125-
var item = CreateItem(wasAccessed, isExpired);
128+
var item = CreateItem(wasAccessed, wasRemoved, isExpired);
126129

127130
this.policy.RouteHot(item).Should().Be(expectedDestination);
128131
}
129132

130133
[Theory]
131-
[InlineData(false, true, ItemDestination.Remove)]
132-
[InlineData(true, true, ItemDestination.Remove)]
133-
[InlineData(true, false, ItemDestination.Warm)]
134-
[InlineData(false, false, ItemDestination.Cold)]
135-
public void RouteWarm(bool wasAccessed, bool isExpired, ItemDestination expectedDestination)
134+
[InlineData(false, false, true, ItemDestination.Remove)]
135+
[InlineData(true, false, true, ItemDestination.Remove)]
136+
[InlineData(true, false, false, ItemDestination.Warm)]
137+
[InlineData(false, false, false, ItemDestination.Cold)]
138+
[InlineData(false, true, true, ItemDestination.Remove)]
139+
[InlineData(true, true, true, ItemDestination.Remove)]
140+
[InlineData(true, true, false, ItemDestination.Remove)]
141+
[InlineData(false, true, false, ItemDestination.Remove)]
142+
public void RouteWarm(bool wasAccessed, bool wasRemoved, bool isExpired, ItemDestination expectedDestination)
136143
{
137-
var item = CreateItem(wasAccessed, isExpired);
144+
var item = CreateItem(wasAccessed, wasRemoved, isExpired);
138145

139146
this.policy.RouteWarm(item).Should().Be(expectedDestination);
140147
}
141148

142149
[Theory]
143-
[InlineData(false, true, ItemDestination.Remove)]
144-
[InlineData(true, true, ItemDestination.Remove)]
145-
[InlineData(true, false, ItemDestination.Warm)]
146-
[InlineData(false, false, ItemDestination.Remove)]
147-
public void RouteCold(bool wasAccessed, bool isExpired, ItemDestination expectedDestination)
150+
[InlineData(false, false, true, ItemDestination.Remove)]
151+
[InlineData(true, false, true, ItemDestination.Remove)]
152+
[InlineData(true, false, false, ItemDestination.Warm)]
153+
[InlineData(false, false, false, ItemDestination.Remove)]
154+
[InlineData(false, true, true, ItemDestination.Remove)]
155+
[InlineData(true, true, true, ItemDestination.Remove)]
156+
[InlineData(true, true, false, ItemDestination.Remove)]
157+
[InlineData(false, true, false, ItemDestination.Remove)]
158+
public void RouteCold(bool wasAccessed, bool wasRemoved, bool isExpired, ItemDestination expectedDestination)
148159
{
149-
var item = CreateItem(wasAccessed, isExpired);
160+
var item = CreateItem(wasAccessed, wasRemoved, isExpired);
150161

151162
this.policy.RouteCold(item).Should().Be(expectedDestination);
152163
}
153164

154-
private LongTickCountLruItem<int, int> CreateItem(bool wasAccessed, bool isExpired)
165+
private LongTickCountLruItem<int, int> CreateItem(bool wasAccessed, bool wasRemoved, bool isExpired)
155166
{
156167
var item = this.policy.CreateItem(1, 2);
157168

158169
item.WasAccessed = wasAccessed;
170+
item.WasRemoved = wasRemoved;
159171

160172
if (isExpired)
161173
{

BitFaster.Caching.UnitTests/Lru/LruPolicyTests.cs

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -69,40 +69,47 @@ public void CanDiscardIsFalse()
6969
}
7070

7171
[Theory]
72-
[InlineData(true, ItemDestination.Warm)]
73-
[InlineData(false, ItemDestination.Cold)]
74-
public void RouteHot(bool wasAccessed, ItemDestination expectedDestination)
72+
[InlineData(true, false, ItemDestination.Warm)]
73+
[InlineData(false, false, ItemDestination.Cold)]
74+
[InlineData(false, true, ItemDestination.Remove)]
75+
[InlineData(true, true, ItemDestination.Remove)]
76+
public void RouteHot(bool wasAccessed, bool wasRemoved, ItemDestination expectedDestination)
7577
{
76-
var item = CreateItem(wasAccessed);
78+
var item = CreateItem(wasAccessed, wasRemoved);
7779

7880
this.policy.RouteHot(item).Should().Be(expectedDestination);
7981
}
8082

8183
[Theory]
82-
[InlineData(true, ItemDestination.Warm)]
83-
[InlineData(false, ItemDestination.Cold)]
84-
public void RouteWarm(bool wasAccessed, ItemDestination expectedDestination)
84+
[InlineData(true, false, ItemDestination.Warm)]
85+
[InlineData(false, false, ItemDestination.Cold)]
86+
[InlineData(true, true, ItemDestination.Remove)]
87+
[InlineData(false, true, ItemDestination.Remove)]
88+
public void RouteWarm(bool wasAccessed, bool wasRemoved, ItemDestination expectedDestination)
8589
{
86-
var item = CreateItem(wasAccessed);
90+
var item = CreateItem(wasAccessed, wasRemoved);
8791

8892
this.policy.RouteWarm(item).Should().Be(expectedDestination);
8993
}
9094

9195
[Theory]
92-
[InlineData(true, ItemDestination.Warm)]
93-
[InlineData(false, ItemDestination.Remove)]
94-
public void RouteCold(bool wasAccessed, ItemDestination expectedDestination)
96+
[InlineData(true, false, ItemDestination.Warm)]
97+
[InlineData(false, false, ItemDestination.Remove)]
98+
[InlineData(true, true, ItemDestination.Remove)]
99+
[InlineData(false, true, ItemDestination.Remove)]
100+
public void RouteCold(bool wasAccessed, bool wasRemoved, ItemDestination expectedDestination)
95101
{
96-
var item = CreateItem(wasAccessed);
102+
var item = CreateItem(wasAccessed, wasRemoved);
97103

98104
this.policy.RouteCold(item).Should().Be(expectedDestination);
99105
}
100106

101-
private LruItem<int, int> CreateItem(bool wasAccessed)
107+
private LruItem<int, int> CreateItem(bool wasAccessed, bool wasRemoved)
102108
{
103109
var item = this.policy.CreateItem(1, 2);
104110

105111
item.WasAccessed = wasAccessed;
112+
item.WasRemoved = wasRemoved;
106113

107114
return item;
108115
}

BitFaster.Caching.UnitTests/Lru/TLruTickCount64PolicyTests .cs

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -108,46 +108,59 @@ public void CanDiscardIsTrue()
108108
}
109109

110110
[Theory]
111-
[InlineData(false, true, ItemDestination.Remove)]
112-
[InlineData(true, true, ItemDestination.Remove)]
113-
[InlineData(true, false, ItemDestination.Warm)]
114-
[InlineData(false, false, ItemDestination.Cold)]
115-
public void RouteHot(bool wasAccessed, bool isExpired, ItemDestination expectedDestination)
116-
{
117-
var item = CreateItem(wasAccessed, isExpired);
111+
[InlineData(false, false, true, ItemDestination.Remove)]
112+
[InlineData(true, false, true, ItemDestination.Remove)]
113+
[InlineData(true, false, false, ItemDestination.Warm)]
114+
[InlineData(false, false, false, ItemDestination.Cold)]
115+
[InlineData(false, true, true, ItemDestination.Remove)]
116+
[InlineData(true, true, true, ItemDestination.Remove)]
117+
[InlineData(true, true, false, ItemDestination.Remove)]
118+
[InlineData(false, true, false, ItemDestination.Remove)]
119+
public void RouteHot(bool wasAccessed, bool wasRemoved, bool isExpired, ItemDestination expectedDestination)
120+
{
121+
var item = CreateItem(wasAccessed, wasRemoved, isExpired);
118122

119123
this.policy.RouteHot(item).Should().Be(expectedDestination);
120124
}
121125

122126
[Theory]
123-
[InlineData(false, true, ItemDestination.Remove)]
124-
[InlineData(true, true, ItemDestination.Remove)]
125-
[InlineData(true, false, ItemDestination.Warm)]
126-
[InlineData(false, false, ItemDestination.Cold)]
127-
public void RouteWarm(bool wasAccessed, bool isExpired, ItemDestination expectedDestination)
128-
{
129-
var item = CreateItem(wasAccessed, isExpired);
127+
[InlineData(false, false, true, ItemDestination.Remove)]
128+
[InlineData(true, false, true, ItemDestination.Remove)]
129+
[InlineData(true, false, false, ItemDestination.Warm)]
130+
[InlineData(false, false, false, ItemDestination.Cold)]
131+
[InlineData(false, true, true, ItemDestination.Remove)]
132+
[InlineData(true, true, true, ItemDestination.Remove)]
133+
[InlineData(true, true, false, ItemDestination.Remove)]
134+
[InlineData(false, true, false, ItemDestination.Remove)]
135+
public void RouteWarm(bool wasAccessed, bool wasRemoved, bool isExpired, ItemDestination expectedDestination)
136+
{
137+
var item = CreateItem(wasAccessed, wasRemoved, isExpired);
130138

131139
this.policy.RouteWarm(item).Should().Be(expectedDestination);
132140
}
133141

134142
[Theory]
135-
[InlineData(false, true, ItemDestination.Remove)]
136-
[InlineData(true, true, ItemDestination.Remove)]
137-
[InlineData(true, false, ItemDestination.Warm)]
138-
[InlineData(false, false, ItemDestination.Remove)]
139-
public void RouteCold(bool wasAccessed, bool isExpired, ItemDestination expectedDestination)
140-
{
141-
var item = CreateItem(wasAccessed, isExpired);
143+
[InlineData(false, false, true, ItemDestination.Remove)]
144+
[InlineData(true, false, true, ItemDestination.Remove)]
145+
[InlineData(true, false, false, ItemDestination.Warm)]
146+
[InlineData(false, false, false, ItemDestination.Remove)]
147+
[InlineData(false, true, true, ItemDestination.Remove)]
148+
[InlineData(true, true, true, ItemDestination.Remove)]
149+
[InlineData(true, true, false, ItemDestination.Remove)]
150+
[InlineData(false, true, false, ItemDestination.Remove)]
151+
public void RouteCold(bool wasAccessed, bool wasRemoved, bool isExpired, ItemDestination expectedDestination)
152+
{
153+
var item = CreateItem(wasAccessed, wasRemoved, isExpired);
142154

143155
this.policy.RouteCold(item).Should().Be(expectedDestination);
144156
}
145157

146-
private LongTickCountLruItem<int, int> CreateItem(bool wasAccessed, bool isExpired)
158+
private LongTickCountLruItem<int, int> CreateItem(bool wasAccessed, bool wasRemoved, bool isExpired)
147159
{
148160
var item = this.policy.CreateItem(1, 2);
149161

150162
item.WasAccessed = wasAccessed;
163+
item.WasRemoved = wasRemoved;
151164

152165
if (isExpired)
153166
{

BitFaster.Caching.UnitTests/Lru/TlruDateTimePolicyTests.cs

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -86,46 +86,59 @@ public void CanDiscardIsTrue()
8686
}
8787

8888
[Theory]
89-
[InlineData(false, true, ItemDestination.Remove)]
90-
[InlineData(true, true, ItemDestination.Remove)]
91-
[InlineData(true, false, ItemDestination.Warm)]
92-
[InlineData(false, false, ItemDestination.Cold)]
93-
public void RouteHot(bool wasAccessed, bool isExpired, ItemDestination expectedDestination)
89+
[InlineData(false, false, true, ItemDestination.Remove)]
90+
[InlineData(true, false, true, ItemDestination.Remove)]
91+
[InlineData(true, false, false, ItemDestination.Warm)]
92+
[InlineData(false, false, false, ItemDestination.Cold)]
93+
[InlineData(false, true, true, ItemDestination.Remove)]
94+
[InlineData(true, true, true, ItemDestination.Remove)]
95+
[InlineData(true, true, false, ItemDestination.Remove)]
96+
[InlineData(false, true, false, ItemDestination.Remove)]
97+
public void RouteHot(bool wasAccessed, bool wasRemoved, bool isExpired, ItemDestination expectedDestination)
9498
{
95-
var item = CreateItem(wasAccessed, isExpired);
99+
var item = CreateItem(wasAccessed, wasRemoved, isExpired);
96100

97101
this.policy.RouteHot(item).Should().Be(expectedDestination);
98102
}
99103

100104
[Theory]
101-
[InlineData(false, true, ItemDestination.Remove)]
102-
[InlineData(true, true, ItemDestination.Remove)]
103-
[InlineData(true, false, ItemDestination.Warm)]
104-
[InlineData(false, false, ItemDestination.Cold)]
105-
public void RouteWarm(bool wasAccessed, bool isExpired, ItemDestination expectedDestination)
105+
[InlineData(false, false, true, ItemDestination.Remove)]
106+
[InlineData(true, false, true, ItemDestination.Remove)]
107+
[InlineData(true, false, false, ItemDestination.Warm)]
108+
[InlineData(false, false, false, ItemDestination.Cold)]
109+
[InlineData(false, true, true, ItemDestination.Remove)]
110+
[InlineData(true, true, true, ItemDestination.Remove)]
111+
[InlineData(true, true, false, ItemDestination.Remove)]
112+
[InlineData(false, true, false, ItemDestination.Remove)]
113+
public void RouteWarm(bool wasAccessed, bool wasRemoved, bool isExpired, ItemDestination expectedDestination)
106114
{
107-
var item = CreateItem(wasAccessed, isExpired);
115+
var item = CreateItem(wasAccessed, wasRemoved, isExpired);
108116

109117
this.policy.RouteWarm(item).Should().Be(expectedDestination);
110118
}
111119

112120
[Theory]
113-
[InlineData(false, true, ItemDestination.Remove)]
114-
[InlineData(true, true, ItemDestination.Remove)]
115-
[InlineData(true, false, ItemDestination.Warm)]
116-
[InlineData(false, false, ItemDestination.Remove)]
117-
public void RouteCold(bool wasAccessed, bool isExpired, ItemDestination expectedDestination)
121+
[InlineData(false, false, true, ItemDestination.Remove)]
122+
[InlineData(true, false, true, ItemDestination.Remove)]
123+
[InlineData(true, false, false, ItemDestination.Warm)]
124+
[InlineData(false, false, false, ItemDestination.Remove)]
125+
[InlineData(false, true, true, ItemDestination.Remove)]
126+
[InlineData(true, true, true, ItemDestination.Remove)]
127+
[InlineData(true, true, false, ItemDestination.Remove)]
128+
[InlineData(false, true, false, ItemDestination.Remove)]
129+
public void RouteCold(bool wasAccessed, bool wasRemoved, bool isExpired, ItemDestination expectedDestination)
118130
{
119-
var item = CreateItem(wasAccessed, isExpired);
131+
var item = CreateItem(wasAccessed, wasRemoved, isExpired);
120132

121133
this.policy.RouteCold(item).Should().Be(expectedDestination);
122134
}
123135

124-
private TimeStampedLruItem<int, int> CreateItem(bool wasAccessed, bool isExpired)
136+
private TimeStampedLruItem<int, int> CreateItem(bool wasAccessed, bool wasRemoved, bool isExpired)
125137
{
126138
var item = this.policy.CreateItem(1, 2);
127139

128140
item.WasAccessed = wasAccessed;
141+
item.WasRemoved = wasRemoved;
129142

130143
if (isExpired)
131144
{

BitFaster.Caching.UnitTests/Lru/TlruStopwatchPolicyTests.cs

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -110,46 +110,59 @@ public void CanDiscardIsTrue()
110110
}
111111

112112
[Theory]
113-
[InlineData(false, true, ItemDestination.Remove)]
114-
[InlineData(true, true, ItemDestination.Remove)]
115-
[InlineData(true, false, ItemDestination.Warm)]
116-
[InlineData(false, false, ItemDestination.Cold)]
117-
public void RouteHot(bool wasAccessed, bool isExpired, ItemDestination expectedDestination)
113+
[InlineData(false, false, true, ItemDestination.Remove)]
114+
[InlineData(true, false, true, ItemDestination.Remove)]
115+
[InlineData(true, false, false, ItemDestination.Warm)]
116+
[InlineData(false, false, false, ItemDestination.Cold)]
117+
[InlineData(false, true, true, ItemDestination.Remove)]
118+
[InlineData(true, true, true, ItemDestination.Remove)]
119+
[InlineData(true, true, false, ItemDestination.Remove)]
120+
[InlineData(false, true, false, ItemDestination.Remove)]
121+
public void RouteHot(bool wasAccessed, bool wasRemoved, bool isExpired, ItemDestination expectedDestination)
118122
{
119-
var item = CreateItem(wasAccessed, isExpired);
123+
var item = CreateItem(wasAccessed, wasRemoved, isExpired);
120124

121125
this.policy.RouteHot(item).Should().Be(expectedDestination);
122126
}
123127

124128
[Theory]
125-
[InlineData(false, true, ItemDestination.Remove)]
126-
[InlineData(true, true, ItemDestination.Remove)]
127-
[InlineData(true, false, ItemDestination.Warm)]
128-
[InlineData(false, false, ItemDestination.Cold)]
129-
public void RouteWarm(bool wasAccessed, bool isExpired, ItemDestination expectedDestination)
129+
[InlineData(false, false, true, ItemDestination.Remove)]
130+
[InlineData(true, false, true, ItemDestination.Remove)]
131+
[InlineData(true, false, false, ItemDestination.Warm)]
132+
[InlineData(false, false, false, ItemDestination.Cold)]
133+
[InlineData(false, true, true, ItemDestination.Remove)]
134+
[InlineData(true, true, true, ItemDestination.Remove)]
135+
[InlineData(true, true, false, ItemDestination.Remove)]
136+
[InlineData(false, true, false, ItemDestination.Remove)]
137+
public void RouteWarm(bool wasAccessed, bool wasRemoved, bool isExpired, ItemDestination expectedDestination)
130138
{
131-
var item = CreateItem(wasAccessed, isExpired);
139+
var item = CreateItem(wasAccessed, wasRemoved, isExpired);
132140

133141
this.policy.RouteWarm(item).Should().Be(expectedDestination);
134142
}
135143

136144
[Theory]
137-
[InlineData(false, true, ItemDestination.Remove)]
138-
[InlineData(true, true, ItemDestination.Remove)]
139-
[InlineData(true, false, ItemDestination.Warm)]
140-
[InlineData(false, false, ItemDestination.Remove)]
141-
public void RouteCold(bool wasAccessed, bool isExpired, ItemDestination expectedDestination)
145+
[InlineData(false, false, true, ItemDestination.Remove)]
146+
[InlineData(true, false, true, ItemDestination.Remove)]
147+
[InlineData(true, false, false, ItemDestination.Warm)]
148+
[InlineData(false, false, false, ItemDestination.Remove)]
149+
[InlineData(false, true, true, ItemDestination.Remove)]
150+
[InlineData(true, true, true, ItemDestination.Remove)]
151+
[InlineData(true, true, false, ItemDestination.Remove)]
152+
[InlineData(false, true, false, ItemDestination.Remove)]
153+
public void RouteCold(bool wasAccessed, bool wasRemoved, bool isExpired, ItemDestination expectedDestination)
142154
{
143-
var item = CreateItem(wasAccessed, isExpired);
155+
var item = CreateItem(wasAccessed, wasRemoved, isExpired);
144156

145157
this.policy.RouteCold(item).Should().Be(expectedDestination);
146158
}
147159

148-
private LongTickCountLruItem<int, int> CreateItem(bool wasAccessed, bool isExpired)
160+
private LongTickCountLruItem<int, int> CreateItem(bool wasAccessed, bool wasRemoved, bool isExpired)
149161
{
150162
var item = this.policy.CreateItem(1, 2);
151163

152164
item.WasAccessed = wasAccessed;
165+
item.WasRemoved = wasRemoved;
153166

154167
if (isExpired)
155168
{

0 commit comments

Comments
 (0)