foxygit / digitalskrivare_merge Log in
commits tags

/tests/Remiss.Core.Tests/OcrContractTests.cs · 1.47 KB

raw
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 _));
    }
}