Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Fowler <davidfowl@gmail.com>2022-06-06 07:13:30 +0300
committerDavid Fowler <davidfowl@gmail.com>2022-06-06 07:13:30 +0300
commit8b306d31b0c46eb64834a4b3e3ef33160f312fad (patch)
treecad550fba721bcf0ee62d65817b367c58c4ad9b2
parent92f36c5f97ca81db365e5eb398a782e73efe1caa (diff)
-rw-r--r--src/Extensions/Features/test/FeatureReferencesTests.cs46
1 files changed, 39 insertions, 7 deletions
diff --git a/src/Extensions/Features/test/FeatureReferencesTests.cs b/src/Extensions/Features/test/FeatureReferencesTests.cs
index 46746cf39b..a95500ffc0 100644
--- a/src/Extensions/Features/test/FeatureReferencesTests.cs
+++ b/src/Extensions/Features/test/FeatureReferencesTests.cs
@@ -20,16 +20,15 @@ public class FeatureReferencesTests
features.Set<IThing>(currentThing);
var references = new FeatureReferences<FeatureHolder>(features);
- var thing0 = references.Fetch(ref references.Cache.Thing, (f) => null);
- var thing1 = references.Fetch(ref references.Cache.Thing, (f) => null);
- var thing2 = references.Fetch(ref references.Cache.Thing, (f) => null);
+ var thing0 = references.Fetch(ref references.Cache.Thing, _ => null);
+ var thing1 = references.Fetch(ref references.Cache.Thing, _ => null);
+ var thing2 = references.Fetch(ref references.Cache.Thing, _ => null);
Assert.Same(currentThing, thing0);
Assert.Same(thing0, thing1);
Assert.Same(thing1, thing2);
}
-
[Fact]
public void CreatingFeatureLazilyWillSetOnFeatureCollection()
{
@@ -38,7 +37,7 @@ public class FeatureReferencesTests
Assert.Null(features.Get<IThing>());
- var thing0 = references.Fetch(ref references.Cache.Thing, (f) => new Thing());
+ var thing0 = references.Fetch(ref references.Cache.Thing, _ => new Thing());
var currentThing = features.Get<IThing>();
Assert.Same(thing0, currentThing);
@@ -52,15 +51,41 @@ public class FeatureReferencesTests
features.Set<IThing>(currentThing);
var references = new FeatureReferences<FeatureHolder>(features);
- var thing0 = references.Fetch(ref references.Cache.Thing, (f) => null);
+ var thing0 = references.Fetch(ref references.Cache.Thing, _ => null);
+
+ Assert.Same(thing0, currentThing);
+
+ var newThing = new Thing();
+ features.Set<IThing>(newThing);
+
+ var thing1 = references.Fetch(ref references.Cache.Thing, _ => null);
+
+ Assert.Equal(references.Revision, features.Revision);
+ Assert.Same(thing1, newThing);
+ }
+
+ [Fact]
+ public void ChangingFeatureCollectionWillClearFeatureCacheUntilAccessed()
+ {
+ var features = new FeatureCollection();
+ var currentThing = new Thing();
+ var anotherOne = new AnotherFeature();
+ features.Set<IThing>(currentThing);
+ features.Set(anotherOne);
+ var references = new FeatureReferences<FeatureHolder>(features);
+
+ var thing0 = references.Fetch(ref references.Cache.Thing, _ => null);
+ var anotherOne0 = references.Fetch(ref references.Cache.AnotherOne, _ => null);
Assert.Same(thing0, currentThing);
+ Assert.Same(anotherOne0, anotherOne);
var newThing = new Thing();
features.Set<IThing>(newThing);
- var thing1 = references.Fetch(ref references.Cache.Thing, (f) => null);
+ var thing1 = references.Fetch(ref references.Cache.Thing, _ => null);
+ Assert.Same(anotherOne0, references.Cache.AnotherOne);
Assert.Equal(references.Revision, features.Revision);
Assert.Same(thing1, newThing);
}
@@ -68,5 +93,12 @@ public class FeatureReferencesTests
public struct FeatureHolder
{
public IThing? Thing;
+
+ public AnotherFeature? AnotherOne;
+ }
+
+ public class AnotherFeature
+ {
+
}
}