using System.Collections.Generic; using OpenNest.Engine.Jobs; namespace OpenNest.Benchmark; /// Benchmark validation outcome. public class ValidationResult { public bool Valid => Violations.Count == 0; public List Violations { get; } = new(); } /// Compatibility wrapper over the shared layout validation contract. public static class NestValidator { /// Checks materialized plates using drawing-reference requirement identity. public static ValidationResult Validate( List<(Plate Plate, List Parts)> plateRuns, IReadOnlyDictionary requirements) { var result = new ValidationResult(); result.Violations.AddRange(NestLayoutCheck.Validate(plateRuns, requirements)); return result; } /// Appends offered-stock, finite-stock and rotation-policy violations. public static void ValidateAgainstJob(NestJob job, NestJobResult jobResult, IReadOnlyDictionary displayNames, ValidationResult result) => NestLayoutCheck.ValidateAgainstJob(job, jobResult, displayNames, result.Violations); }