using GeradoresService; namespace UnitTest; public class DetectTests { private static readonly GeneratorRegistry Registry = new(); [Fact] public void Detects_nif_first() { var matches = Registry.Detect("123456789"); Assert.NotEmpty(matches); Assert.Equal("nif", matches[0].Generator.Id); Assert.True(matches[0].Result.IsValid); } [Fact] public void Detects_iban() { var matches = Registry.Detect("PT50 0002 0123 1234 5678 9015 4"); Assert.Equal("iban", matches[0].Generator.Id); } [Fact] public void Reports_near_miss_when_checksum_fails() { var matches = Registry.Detect("123456780"); Assert.Contains(matches, m => m.Generator.Id == "nif" && !m.Result.IsValid && m.Result.FormatMatch); Assert.DoesNotContain(matches, m => m.Generator.Id == "nif" && m.Result.IsValid); } [Theory] [InlineData("")] [InlineData(" ")] [InlineData("isto não é nada")] public void Nothing_detected(string value) { Assert.DoesNotContain(Registry.Detect(value), m => m.Result.IsValid); } [Fact] public void Pessoa_is_never_detected() { Assert.DoesNotContain(Registry.Detect("João Silva"), m => m.Generator.Id == "pessoa"); } }