using HSchool.Content; using HSchool.Content.Tests; namespace HSchool.Content.Tests; public class TopicDefTests { private readonly CatalogLoader _loader = new(); [Fact] public void VanillaCore_LoadsTalkTopics() { var root = Path.Combine(AppContext.BaseDirectory, "vanilla"); var catalog = _loader.Load([CatalogLoader.CorePackId], PackDocuments.FromDirectory(CatalogLoader.CorePackId, root)); Assert.True(catalog.Topics.Count >= 8); Assert.True(catalog.Topics.ContainsKey("TopicStudy")); Assert.Contains("study", catalog.Topics["TopicStudy"].Tags); Assert.True(catalog.Topics["TopicGames"].WhisperOnLesson); Assert.False(catalog.Topics["TopicRude"].WhisperOnLesson); Assert.True(catalog.Topics.ContainsKey("TopicPraise")); Assert.True(catalog.Topics.ContainsKey("TopicDiscipline")); } [Fact] public void CatalogWithoutTopics_ThrowsOnLoad() { var root = Path.Combine(AppContext.BaseDirectory, "vanilla"); var documents = PackDocuments.FromDirectory(CatalogLoader.CorePackId, root) .Where(document => !document.RelativePath.Contains("defs/topics/", StringComparison.OrdinalIgnoreCase)) .ToList(); var ex = Assert.Throws(() => _loader.Load([CatalogLoader.CorePackId], documents)); Assert.Contains("TopicDef", ex.Message, StringComparison.Ordinal); } }