using HSchool.Content; namespace HSchool.Content.Tests; public class LessonMarkBehaviorTests { private readonly CatalogLoader _loader = new(); [Fact] public void MissingLessonMarkFields_UseVanillaDefaults() { var catalog = _loader.Load( [CatalogLoader.CorePackId], [ PackDocuments.Def( CatalogLoader.CorePackId, "behavior", "rules", """{ "defName": "Behavior", "needThreshold": 0.35, "lessonSkillPerHour": 0.05, "commuteSlackMin": 0, "commuteSlackMax": 6, "switchMargin": 0.15 }"""), ]); Assert.NotNull(catalog.BehaviorRules); Assert.Equal(40, catalog.BehaviorRules.LessonMarkMax); Assert.Equal(2, catalog.BehaviorRules.LessonMarkWhenNoTeacher); Assert.Equal(BehaviorDef.DefaultLessonMarkThresholds, catalog.BehaviorRules.LessonMarkThresholds); } [Fact] public void AscendingThresholds_FailTheCatalog() { var error = Assert.Throws(() => _loader.Load( [CatalogLoader.CorePackId], [ PackDocuments.Def( CatalogLoader.CorePackId, "behavior", "rules", """{ "defName": "Behavior", "lessonMarkThresholds": [0.3, 0.6, 0.9] }"""), ])); Assert.Contains("descending", error.Message, StringComparison.OrdinalIgnoreCase); } }