using HSchool.Content; namespace HSchool.Content.Tests; public class GradeTrailBehaviorTests { private readonly CatalogLoader _loader = new(); [Fact] public void VanillaCore_LoadsGradeTrailFields() { var catalog = LoadVanilla(); Assert.NotNull(catalog.BehaviorRules); Assert.Equal(0.95f, catalog.BehaviorRules.LessonDressMarkFactor); Assert.Equal(2.5f, catalog.BehaviorRules.PoorMarkTrailMaxAverage); Assert.Equal(3, catalog.BehaviorRules.PoorMarkTrailMinMarks); Assert.Equal(2, catalog.BehaviorRules.TruancyTrailMinCount); Assert.Equal(0.35f, catalog.BehaviorRules.GradeTrailSummonChance); Assert.Contains("truancy", catalog.BehaviorRules.OffenseMemoryKinds); } [Fact] public void DressFactorAboveOne_FailsTheCatalog() { var documents = PackDocuments.FromDirectory( CatalogLoader.CorePackId, Path.Combine(AppContext.BaseDirectory, "vanilla")) .Append(PackDocuments.Def( CatalogLoader.CorePackId, "behavior", "bad-dress", """{ "defName": "Behavior", "lessonDressMarkFactor": 1.5 }""")) .ToList(); var ex = Assert.Throws(() => _loader.Load([CatalogLoader.CorePackId], documents)); Assert.Contains("lessonDressMarkFactor", ex.Message, StringComparison.Ordinal); } private DefCatalog LoadVanilla() { var root = Path.Combine(AppContext.BaseDirectory, "vanilla"); return _loader.Load([CatalogLoader.CorePackId], PackDocuments.FromDirectory(CatalogLoader.CorePackId, root)); } }