using HSchool.Content; namespace HSchool.Ai.Tests; internal static class PackDocuments { public static IReadOnlyList FromDirectory(string packId, string packRoot) { var documents = new List(); foreach (var path in Directory.EnumerateFiles(packRoot, "*.*", SearchOption.AllDirectories)) { if (!path.EndsWith(".jsonc", StringComparison.OrdinalIgnoreCase) && !path.EndsWith(".json", StringComparison.OrdinalIgnoreCase)) { continue; } var relative = Path.GetRelativePath(packRoot, path).Replace('\\', '/'); documents.Add(new ContentDocument(packId, relative, File.ReadAllText(path))); } return documents; } } internal static class Fixtures { public static (DefCatalog Catalog, MapLayout Map) Vanilla() { var root = Path.Combine(AppContext.BaseDirectory, "vanilla"); var documents = PackDocuments.FromDirectory(CatalogLoader.CorePackId, root); var catalog = new CatalogLoader().Load([CatalogLoader.CorePackId], documents); var map = CatalogLoader.LastDefaultMap([CatalogLoader.CorePackId], documents); Assert.NotNull(map); return (catalog, map); } public static string RepoRoot() { var dir = new DirectoryInfo(AppContext.BaseDirectory); while (dir is not null && !File.Exists(Path.Combine(dir.FullName, "h-school.sln"))) { dir = dir.Parent; } if (dir is null) { throw new InvalidOperationException("Could not find h-school.sln from the test output directory."); } return dir.FullName; } }