/
dev-npgsql
/
npgsql
Обзор
Документация
Войти
/
dev-npgsql
/
npgsql
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
test/Npgsql.Tests/Types/InternalTypeTests.cs
94 строки
4 KB
Nino Floris
Remove obsolete UTF-8 BOMs (#6542)
13 апр 2026, 17:13
Не верифицирован
13 апр 2026, 17:13
5225216
Код
Авторство
О чём код?
using System.Threading.Tasks; using NpgsqlTypes; using NUnit.Framework; namespace Npgsql.Tests.Types; public class InternalTypeTests : TestBase { [Test] public async Task Read_internal_char() { using var conn = await OpenConnectionAsync(); using var cmd = new NpgsqlCommand("SELECT typdelim FROM pg_type WHERE typname='int4'", conn); using var reader = await cmd.ExecuteReaderAsync(); reader.Read(); Assert.That(reader.GetChar(0), Is.EqualTo(',')); Assert.That(reader.GetValue(0), Is.EqualTo(',')); Assert.That(reader.GetProviderSpecificValue(0), Is.EqualTo(',')); Assert.That(reader.GetFieldType(0), Is.EqualTo(typeof(char))); } [Test] [TestCase("oid")] [TestCase("regtype")] [TestCase("regconfig")] [TestCase("regclass")] [TestCase("regcollation")] [TestCase("regdictionary")] [TestCase("regnamespace")] [TestCase("regoper")] [TestCase("regoperator")] [TestCase("regproc")] [TestCase("regprocedure")] [TestCase("regrole")] public async Task Internal_uint_types(string postgresType) { await AssertType(uint.MaxValue, "4294967295", postgresType, dataTypeInference: DataTypeInference.Nothing); } [Test] public async Task Tid() { var expected = new NpgsqlTid(3, 5); using var conn = await OpenConnectionAsync(); using var cmd = conn.CreateCommand(); cmd.CommandText = "SELECT '(1234,40000)'::tid, @p::tid"; cmd.Parameters.AddWithValue("p", NpgsqlDbType.Tid, expected); using var reader = await cmd.ExecuteReaderAsync(); reader.Read(); Assert.That(reader.GetFieldValue<NpgsqlTid>(0).BlockNumber, Is.EqualTo(1234)); Assert.That(reader.GetFieldValue<NpgsqlTid>(0).OffsetNumber, Is.EqualTo(40000)); Assert.That(reader.GetFieldValue<NpgsqlTid>(1).BlockNumber, Is.EqualTo(expected.BlockNumber)); Assert.That(reader.GetFieldValue<NpgsqlTid>(1).OffsetNumber, Is.EqualTo(expected.OffsetNumber)); } #region NpgsqlLogSequenceNumber / PgLsn static readonly TestCaseData[] EqualsObjectCases = [ new TestCaseData(new NpgsqlLogSequenceNumber(1ul), null).Returns(false), new TestCaseData(new NpgsqlLogSequenceNumber(1ul), new object()).Returns(false), new TestCaseData(new NpgsqlLogSequenceNumber(1ul), 1ul).Returns(false), // no implicit cast new TestCaseData(new NpgsqlLogSequenceNumber(1ul), "0/0").Returns(false), // no implicit cast/parsing new TestCaseData(new NpgsqlLogSequenceNumber(1ul), new NpgsqlLogSequenceNumber(1ul)).Returns(true) ]; [Test, TestCaseSource(nameof(EqualsObjectCases))] public bool NpgsqlLogSequenceNumber_equals(NpgsqlLogSequenceNumber lsn, object? obj) => lsn.Equals(obj); [Test] public async Task NpgsqlLogSequenceNumber() { var expected1 = new NpgsqlLogSequenceNumber(42949672971ul); Assert.That(NpgsqlTypes.NpgsqlLogSequenceNumber.Parse("A/B"), Is.EqualTo(expected1)); await using var conn = await OpenConnectionAsync(); using var cmd = conn.CreateCommand(); cmd.CommandText = "SELECT 'A/B'::pg_lsn, @p::pg_lsn"; cmd.Parameters.AddWithValue("p", NpgsqlDbType.PgLsn, expected1); await using var reader = await cmd.ExecuteReaderAsync(); reader.Read(); var result1 = reader.GetFieldValue<NpgsqlLogSequenceNumber>(0); var result2 = reader.GetFieldValue<NpgsqlLogSequenceNumber>(1); Assert.That(result1, Is.EqualTo(expected1)); Assert.That((ulong)result1, Is.EqualTo(42949672971ul)); Assert.That(result1.ToString(), Is.EqualTo("A/B")); Assert.That(result2, Is.EqualTo(expected1)); Assert.That((ulong)result2, Is.EqualTo(42949672971ul)); Assert.That(result2.ToString(), Is.EqualTo("A/B")); } #endregion NpgsqlLogSequenceNumber / PgLsn }