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);
}