using NUnit.Framework; using Robust.Packaging.AssetProcessing; namespace Robust.Packaging.Tests; /// /// A simple asset pass that stores all files it receives, for introspection by tests. /// public sealed class AssetPassTestCollector : AssetPass { public readonly List Files = []; protected override AssetFileAcceptResult AcceptFile(AssetFile file) { lock (Files) { Files.Add(file); } return AssetFileAcceptResult.Consumed; } /// /// Assert that the only files collected are an exact set of test files. /// public void AssertTextFiles(params (string path, string data)[] files) { lock (Files) { Assert.That(Files, Has.Count.EqualTo(files.Length)); Assert.Multiple(() => { foreach (var file in files) { var matchingFile = Files.SingleOrDefault(f => f.Path == file.path); if (matchingFile == null) { Assert.Fail($"Unable to find file {file.path}"); continue; } using var fileData = matchingFile.Open(); using var reader = new StreamReader(fileData); var fileText = reader.ReadToEnd(); Assert.That(fileText, Is.EqualTo(file.data)); } }); } } }