/
dev-npgsql
/
npgsql
Обзор
Документация
Войти
/
dev-npgsql
/
npgsql
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
test/Npgsql.Tests/Types/JsonPathTests.cs
56 строк
2 KB
Nino Floris
Remove obsolete UTF-8 BOMs (#6542)
13 апр 2026, 17:13
Не верифицирован
13 апр 2026, 17:13
5225216
Код
Авторство
О чём код?
using System.Data; using System.Threading.Tasks; using NpgsqlTypes; using NUnit.Framework; using static Npgsql.Tests.TestUtil; namespace Npgsql.Tests.Types; public class JsonPathTests : TestBase { static readonly object[] ReadWriteCases = [ new object[] { "'$'", "$" }, new object[] { "'$\"varname\"'", "$\"varname\"" } ]; [Test] [TestCase("$")] [TestCase("$\"varname\"")] public async Task JsonPath(string jsonPath) { using var conn = await OpenConnectionAsync(); MinimumPgVersion(conn, "12.0", "The jsonpath type was introduced in PostgreSQL 12"); await AssertType( jsonPath, jsonPath, "jsonpath", dataTypeInference: DataTypeInference.Mismatch, dbType: new(DbType.Object, DbType.String)); } [Test] [TestCaseSource(nameof(ReadWriteCases))] public async Task Read(string query, string expected) { using var conn = await OpenConnectionAsync(); MinimumPgVersion(conn, "12.0", "The jsonpath type was introduced in PostgreSQL 12"); using var cmd = new NpgsqlCommand($"SELECT {query}::jsonpath", conn); using var rdr = await cmd.ExecuteReaderAsync(); rdr.Read(); Assert.That(rdr.GetFieldValue<string>(0), Is.EqualTo(expected)); Assert.That(rdr.GetTextReader(0).ReadToEnd(), Is.EqualTo(expected)); } [Test] [TestCaseSource(nameof(ReadWriteCases))] public async Task Write(string query, string expected) { using var conn = await OpenConnectionAsync(); MinimumPgVersion(conn, "12.0", "The jsonpath type was introduced in PostgreSQL 12"); using var cmd = new NpgsqlCommand($"SELECT 'Passed' WHERE @p::text = {query}::text", conn) { Parameters = { new NpgsqlParameter("p", NpgsqlDbType.JsonPath) { Value = expected } } }; using var rdr = await cmd.ExecuteReaderAsync(); Assert.That(rdr.Read()); } }