using Duempelkas.App.Services; using Xunit; namespace Duempelkas.Tests; public class BookingInputTests { [Theory] [InlineData("12,50", true)] [InlineData("12.50", true)] [InlineData(" 12,50 ", true)] [InlineData("12,500", false)] [InlineData("-12,50", false)] [InlineData("1.234,56", false)] [InlineData("1,234.56", false)] [InlineData("12,50 €", false)] [InlineData("0", false)] [InlineData("", false)] [InlineData("9999999999999999999999999999999999999", false)] public void DecimalInput_HasExplicitRules(string text, bool valid) { Assert.Equal(valid, BookingInput.TryAmount(text, out var amount)); if (valid) Assert.Equal(12.50m, amount); } [Fact] public void ServiceValidation_RejectsInvalidData() { Assert.Throws(() => BookingInput.Validate(default, "Test", 1m)); Assert.Throws(() => BookingInput.Validate(DateTime.Today, " ", 1m)); Assert.Throws(() => BookingInput.Validate(DateTime.Today, "Test", -1m)); Assert.Throws(() => BookingInput.Validate(DateTime.Today, "Test", 1.001m)); Assert.Equal(default, BookingInput.Date("2026-02-30")); } }