Fix libpq parsing and refactors/code cleanup

This commit is contained in:
eelke 2025-08-31 13:11:59 +02:00
parent 0090f39910
commit 739d6bd65a
12 changed files with 234 additions and 543 deletions

View file

@ -1,4 +1,6 @@
using pgLabII.PgUtils.ConnectionStrings;
using FluentResults;
using pgLabII.PgUtils.ConnectionStrings;
using pgLabII.PgUtils.Tests.ConnectionStrings.Util;
namespace pgLabII.PgUtils.Tests.ConnectionStrings;
@ -22,20 +24,25 @@ public class PqConnectionStringParserTests
public void Success()
{
var parser = new PqConnectionStringParser(tokenizer);
IDictionary<string, string> output = parser.Parse();
Assert.Single(output);
Assert.True(output.TryGetValue(kw, out string? result));
Assert.Equal(val, result);
Result<IDictionary<string, string>> output = parser.Parse();
ResultAssert.Success(output, v =>
{
Assert.Single(v);
Assert.True(v.TryGetValue(kw, out string? result));
Assert.Equal(val, result);
});
}
[Fact]
public void StaticParse()
{
var output = PqConnectionStringParser.Parse("foo=bar");
Assert.Single(output);
Assert.True(output.TryGetValue("foo", out string? result));
Assert.Equal("bar", result);
Result<IDictionary<string, string>> output = PqConnectionStringParser.Parse("foo=bar");
ResultAssert.Success(output, v =>
{
Assert.Single(v);
Assert.True(v.TryGetValue("foo", out string? result));
Assert.Equal("bar", result);
});
}
// There are few tests here as this is a predictive parser and all error handling is done
// in the tokenizer