using DTS.Common.SharedResource.Strings; using System.Globalization; using System.Windows.Controls; using DTS.Common.Constant; namespace DTS.Common.Validators { [System.Diagnostics.CodeAnalysis.SuppressMessage("Minor Code Smell", "S101:Types should be named in PascalCase", Justification = "acronyms")] public class CANArbBaseBitrateValidator : ValidationRule { public override ValidationResult Validate(object value, CultureInfo cultureInfo) { if (value is string s) { if (!long.TryParse(s, out var temp)) { return new ValidationResult(false, StringResources.InvalidFormat); } else { //Since the Arb/Base Bitrate min/max is different for FD vs. non-FD CANs, use the widest range. if (temp > EmbeddedSensors.CANFD_ARB_BASE_BITRATE_MAX) { return new ValidationResult(false, $"{StringResources.MaxValueIs}{EmbeddedSensors.CANFD_ARB_BASE_BITRATE_MAX}"); } if (temp < EmbeddedSensors.NON_CANFD_ARB_BASE_BITRATE_MIN) { return new ValidationResult(false, $"{StringResources.MinValueIs}{EmbeddedSensors.NON_CANFD_ARB_BASE_BITRATE_MIN}"); } return new ValidationResult(true, null); } } return new ValidationResult(false, StringResources.InvalidFormat); } } }