using PowderCoating.Application.Services; namespace PowderCoating.UnitTests; public class MeasurementConversionServiceTests { private readonly MeasurementConversionService _service = new(); [Fact] public void SquareFeetToMeters_AndBack_RoundTripsToCurrencyStylePrecision() { var squareMeters = _service.SquareFeetToMeters(100m); var squareFeet = _service.SquareMetersToFeet(squareMeters); Assert.Equal(9.29m, squareMeters); Assert.Equal(100m, squareFeet, 1); } [Fact] public void PoundsToKilograms_AndBack_RoundTripsToCurrencyStylePrecision() { var kilograms = _service.PoundsToKilograms(10m); var pounds = _service.KilogramsToPounds(kilograms); Assert.Equal(4.54m, kilograms); Assert.Equal(10.01m, pounds, 2); } [Fact] public void ConvertArea_WhenImperialToMetric_UsesSquareFeetConversion() { var result = _service.ConvertArea(50m, fromImperial: true, toMetric: true); Assert.Equal(4.65m, result); } [Fact] public void ConvertArea_WhenSourceAndTargetAreSameSystem_ReturnsOriginalValue() { Assert.Equal(12.34m, _service.ConvertArea(12.34m, fromImperial: true, toMetric: false)); Assert.Equal(56.78m, _service.ConvertArea(56.78m, fromImperial: false, toMetric: true)); } [Fact] public void ConvertWeight_WhenMetricToImperial_UsesKilogramsToPounds() { var result = _service.ConvertWeight(5m, fromImperial: false, toMetric: false); Assert.Equal(11.02m, result); } [Fact] public void UnitLabelHelpers_ReturnExpectedMetricAndImperialLabels() { Assert.Equal("sq ft", _service.GetAreaUnitLabel(false)); Assert.Equal("sq m", _service.GetAreaUnitLabel(true)); Assert.Equal("lb", _service.GetWeightUnitLabel(false)); Assert.Equal("kg", _service.GetWeightUnitLabel(true)); Assert.Equal("sq ft/lb", _service.GetCoverageUnitLabel(false)); Assert.Equal("sq m/kg", _service.GetCoverageUnitLabel(true)); } }