using Remiss.Core.Pdf; using Xunit; namespace Remiss.Core.Tests; public sealed class OcrContractTests { private const string Id = "SE2321000131-E000000000001"; [Fact] public void FormatHsaIdLine_usesTheAgreedLabel() { Assert.Equal("HSA-ID: " + Id, OcrContract.FormatHsaIdLine(" " + Id + " ")); } [Fact] public void TryParseHsaId_roundTripsTheRenderedLine() { Assert.True(OcrContract.TryParseHsaId(OcrContract.FormatHsaIdLine(Id), out var parsed)); Assert.Equal(Id, parsed); } [Theory] [InlineData("REMISS\nHSA-ID: SE2321000131-E000000000001\nMottagning: Hud SU", "SE2321000131-E000000000001")] [InlineData("hsa id SE2321000131-E000000000001", "SE2321000131-E000000000001")] // tappat kolon + bindestreck [InlineData("HSA-ID: SE2321000131 - E000000000001", "SE2321000131-E000000000001")] // OCR-blanksteg i id:t [InlineData("brus...\r\n HSA-ID:SE2321000131-E000000000001 \r\nmer brus", "SE2321000131-E000000000001")] public void TryParseHsaId_toleratesCommonOcrNoise(string ocrText, string expected) { Assert.True(OcrContract.TryParseHsaId(ocrText, out var parsed)); Assert.Equal(expected, parsed); } [Theory] [InlineData("")] [InlineData("En helt vanlig textrad utan id")] [InlineData("HSA-ID:")] public void TryParseHsaId_returnsFalseWhenNothingToFind(string ocrText) { Assert.False(OcrContract.TryParseHsaId(ocrText, out _)); } }