test: lock SubList remote-key and match behavior
This commit is contained in:
@@ -199,6 +199,33 @@ public class SubListGoParityTests
|
||||
sl.Match("foo.bar").PlainSubs.Length.ShouldBe(3);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Cache_generation_bump_rebuilds_match_result_after_insert_and_remove()
|
||||
{
|
||||
var sl = new SubList();
|
||||
var exact = MakeSub("foo.bar", sid: "1");
|
||||
var wildcard = MakeSub("foo.*", sid: "2");
|
||||
|
||||
sl.Insert(exact);
|
||||
|
||||
var first = sl.Match("foo.bar");
|
||||
var second = sl.Match("foo.bar");
|
||||
ReferenceEquals(first, second).ShouldBeTrue();
|
||||
first.PlainSubs.Select(sub => sub.Sid).ShouldBe(["1"]);
|
||||
|
||||
sl.Insert(wildcard);
|
||||
|
||||
var afterInsert = sl.Match("foo.bar");
|
||||
ReferenceEquals(afterInsert, first).ShouldBeFalse();
|
||||
afterInsert.PlainSubs.Select(sub => sub.Sid).OrderBy(x => x).ToArray().ShouldBe(["1", "2"]);
|
||||
|
||||
sl.Remove(wildcard);
|
||||
|
||||
var afterRemove = sl.Match("foo.bar");
|
||||
ReferenceEquals(afterRemove, afterInsert).ShouldBeFalse();
|
||||
afterRemove.PlainSubs.Select(sub => sub.Sid).ShouldBe(["1"]);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Empty result is a shared singleton — two calls that yield no matches return
|
||||
/// the same object reference.
|
||||
|
||||
Reference in New Issue
Block a user