using Elfisa.Avalonia.ViewModels; using Xunit; namespace Elfisa.Tests; // Логика дрилдаула прайса: извлечение дозировки (МГ) и базового наименования. public class PriceLogicTests { [Theory] [InlineData("Нурофен таб. 200мг №10", "200мг")] [InlineData("Парацетамол 500 мг таб", "500 мг")] [InlineData("Витамин D3 2000 МЕ", "2000 МЕ")] [InlineData("Настойка 25мл", "25мл")] [InlineData("Метформин 1000мг", "1000мг")] [InlineData("Бинт стерильный", "")] [InlineData("", "")] [InlineData(null, "")] public void ExtractDosage_finds_unit(string? name, string expected) => Assert.Equal(expected, PriceListViewModel.ExtractDosage(name)); [Fact] public void BuildBaseName_prefers_trade_name() => Assert.Equal("Нурофен", PriceListViewModel.BuildBaseName("Нурофен таб 200мг", "Нурофен", "200мг")); [Fact] public void BuildBaseName_strips_dosage() => Assert.Equal("Аспирин", PriceListViewModel.BuildBaseName("Аспирин 500мг", null, "500мг")); [Fact] public void BuildBaseName_keeps_name_without_dosage() => Assert.Equal("Бинт стерильный", PriceListViewModel.BuildBaseName("Бинт стерильный", null, "")); [Fact] public void BuildBaseName_empty_returns_empty() => Assert.Equal("", PriceListViewModel.BuildBaseName("", null, "")); }