Use Seed.Mix in speech-policy PickTopic tests after Roll01.

Sequential integer seeds all roll ~0, so NoRude never saw a rude topic under free speech.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-20 14:13:14 +03:00
co-authored by Cursor
parent 63cde56cc3
commit b23ce583df
+5 -4
View File
@@ -226,7 +226,7 @@ public class TalkCirclesTests
var picker = Person("a", ["RussianLanguage"]);
for (var i = 0; i < 80; i++)
{
var id = TalkCircles.PickTopic(catalog, picker, age: 14, seed: i * 137, speechPolicy: SpeechPolicies.StudyOnly);
var id = TalkCircles.PickTopic(catalog, picker, age: 14, seed: Seed.Mix(i, 19, Seed.ApparelSalt), speechPolicy: SpeechPolicies.StudyOnly);
Assert.NotNull(id);
Assert.Contains(TopicTags.Study, catalog.Topics[id].Tags, StringComparer.Ordinal);
}
@@ -238,15 +238,16 @@ public class TalkCirclesTests
var (catalog, _, _) = World();
var picker = Person("a", ["RussianLanguage"]);
var rudeUnderFree = 0;
for (var i = 0; i < 11_000; i++)
for (var i = 0; i < 200; i++)
{
var freeId = TalkCircles.PickTopic(catalog, picker, age: 14, seed: i, speechPolicy: SpeechPolicies.Free);
var seed = Seed.Mix(i, 23, Seed.ApparelSalt);
var freeId = TalkCircles.PickTopic(catalog, picker, age: 14, seed: seed, speechPolicy: SpeechPolicies.Free);
if (freeId is not null && catalog.Topics[freeId].Tags.Contains(TopicTags.Rude, StringComparer.Ordinal))
{
rudeUnderFree++;
}
var filtered = TalkCircles.PickTopic(catalog, picker, age: 14, seed: i, speechPolicy: SpeechPolicies.NoRude);
var filtered = TalkCircles.PickTopic(catalog, picker, age: 14, seed: seed, speechPolicy: SpeechPolicies.NoRude);
Assert.NotNull(filtered);
Assert.DoesNotContain(TopicTags.Rude, catalog.Topics[filtered].Tags, StringComparer.Ordinal);
}