/// <summary> /// interval /// </summary> internal static object ToInterval(NpgsqlBackendTypeInfo typeInfo, byte[] bBackendData, Int16 typeSize, Int32 typeModifier) { string backendData = BackendEncoding.UTF8Encoding.GetString(bBackendData); return(NpgsqlInterval.Parse(backendData)); }
public void Interval() { var expectedNpgsqlInterval = new NpgsqlInterval(1, 2, 3, 4, 5); var expectedTimeSpan = new TimeSpan(1, 2, 3, 4, 5); using (var cmd = new NpgsqlCommand("SELECT '1 days 2 hours 3 minutes 4 seconds 5 milliseconds'::INTERVAL", Conn)) using (var reader = cmd.ExecuteReader()) { reader.Read(); // Regular type (TimeSpan) Assert.That(reader.GetFieldType(0), Is.EqualTo(typeof(TimeSpan))); Assert.That(reader.GetTimeSpan(0), Is.EqualTo(expectedTimeSpan)); Assert.That(reader.GetFieldValue <TimeSpan>(0), Is.EqualTo(expectedTimeSpan)); Assert.That(reader[0], Is.EqualTo(expectedTimeSpan)); Assert.That(reader.GetValue(0), Is.EqualTo(expectedTimeSpan)); // Provider-specific type (NpgsqlInterval) Assert.That(reader.GetInterval(0), Is.EqualTo(expectedNpgsqlInterval)); Assert.That(reader.GetProviderSpecificFieldType(0), Is.EqualTo(typeof(NpgsqlInterval))); Assert.That(reader.GetProviderSpecificValue(0), Is.EqualTo(expectedNpgsqlInterval)); Assert.That(reader.GetFieldValue <NpgsqlInterval>(0), Is.EqualTo(expectedNpgsqlInterval)); } }
void INpgsqlSimpleTypeHandler <NpgsqlInterval> .Write(NpgsqlInterval value, NpgsqlWriteBuffer buf, NpgsqlParameter?parameter) => ((INpgsqlSimpleTypeHandler <NpgsqlInterval>)_bclHandler).Write(value, buf, parameter);
int INpgsqlSimpleTypeHandler <NpgsqlInterval> .ValidateAndGetLength(NpgsqlInterval value, NpgsqlParameter?parameter) => ((INpgsqlSimpleTypeHandler <NpgsqlInterval>)_bclHandler).ValidateAndGetLength(value, parameter);
public void NpgsqlIntervalConstructors() { NpgsqlInterval test; test = new NpgsqlInterval(); Assert.AreEqual(0, test.Months, "Months"); Assert.AreEqual(0, test.Days, "Days"); Assert.AreEqual(0, test.Hours, "Hours"); Assert.AreEqual(0, test.Minutes, "Minutes"); Assert.AreEqual(0, test.Seconds, "Seconds"); Assert.AreEqual(0, test.Milliseconds, "Milliseconds"); Assert.AreEqual(0, test.Microseconds, "Microseconds"); test = new NpgsqlInterval(1234567890); Assert.AreEqual(0, test.Months, "Months"); Assert.AreEqual(0, test.Days, "Days"); Assert.AreEqual(0, test.Hours, "Hours"); Assert.AreEqual(2, test.Minutes, "Minutes"); Assert.AreEqual(3, test.Seconds, "Seconds"); Assert.AreEqual(456, test.Milliseconds, "Milliseconds"); Assert.AreEqual(456789, test.Microseconds, "Microseconds"); test = new NpgsqlInterval(new TimeSpan(1, 2, 3, 4, 5)).JustifyInterval(); Assert.AreEqual(0, test.Months, "Months"); Assert.AreEqual(1, test.Days, "Days"); Assert.AreEqual(2, test.Hours, "Hours"); Assert.AreEqual(3, test.Minutes, "Minutes"); Assert.AreEqual(4, test.Seconds, "Seconds"); Assert.AreEqual(5, test.Milliseconds, "Milliseconds"); Assert.AreEqual(5000, test.Microseconds, "Microseconds"); test = new NpgsqlInterval(3, 2, 1234567890); Assert.AreEqual(3, test.Months, "Months"); Assert.AreEqual(2, test.Days, "Days"); Assert.AreEqual(0, test.Hours, "Hours"); Assert.AreEqual(2, test.Minutes, "Minutes"); Assert.AreEqual(3, test.Seconds, "Seconds"); Assert.AreEqual(456, test.Milliseconds, "Milliseconds"); Assert.AreEqual(456789, test.Microseconds, "Microseconds"); test = new NpgsqlInterval(1, 2, 3, 4); Assert.AreEqual(0, test.Months, "Months"); Assert.AreEqual(1, test.Days, "Days"); Assert.AreEqual(2, test.Hours, "Hours"); Assert.AreEqual(3, test.Minutes, "Minutes"); Assert.AreEqual(4, test.Seconds, "Seconds"); Assert.AreEqual(0, test.Milliseconds, "Milliseconds"); Assert.AreEqual(0, test.Microseconds, "Microseconds"); test = new NpgsqlInterval(1, 2, 3, 4, 5); Assert.AreEqual(0, test.Months, "Months"); Assert.AreEqual(1, test.Days, "Days"); Assert.AreEqual(2, test.Hours, "Hours"); Assert.AreEqual(3, test.Minutes, "Minutes"); Assert.AreEqual(4, test.Seconds, "Seconds"); Assert.AreEqual(5, test.Milliseconds, "Milliseconds"); Assert.AreEqual(5000, test.Microseconds, "Microseconds"); test = new NpgsqlInterval(1, 2, 3, 4, 5, 6); Assert.AreEqual(1, test.Months, "Months"); Assert.AreEqual(2, test.Days, "Days"); Assert.AreEqual(3, test.Hours, "Hours"); Assert.AreEqual(4, test.Minutes, "Minutes"); Assert.AreEqual(5, test.Seconds, "Seconds"); Assert.AreEqual(6, test.Milliseconds, "Milliseconds"); Assert.AreEqual(6000, test.Microseconds, "Microseconds"); test = new NpgsqlInterval(1, 2, 3, 4, 5, 6, 7); Assert.AreEqual(14, test.Months, "Months"); Assert.AreEqual(3, test.Days, "Days"); Assert.AreEqual(4, test.Hours, "Hours"); Assert.AreEqual(5, test.Minutes, "Minutes"); Assert.AreEqual(6, test.Seconds, "Seconds"); Assert.AreEqual(7, test.Milliseconds, "Milliseconds"); Assert.AreEqual(7000, test.Microseconds, "Microseconds"); }
public void NpgsqlIntervalParse() { string input; NpgsqlInterval test; input = "1 day"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(1).Ticks, test.TotalTicks, input); input = "2 days"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(2).Ticks, test.TotalTicks, input); input = "2 days 3:04:05"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(new TimeSpan(2, 3, 4, 5).Ticks, test.TotalTicks, input); input = "-2 days"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(-2).Ticks, test.TotalTicks, input); input = "-2 days -3:04:05"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(new TimeSpan(-2, -3, -4, -5).Ticks, test.TotalTicks, input); input = "-2 days -0:01:02"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(new TimeSpan(-2, 0, -1, -2).Ticks, test.TotalTicks, input); input = "2 days -12:00"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(new TimeSpan(2, -12, 0, 0).Ticks, test.TotalTicks, input); input = "1 mon"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(30).Ticks, test.TotalTicks, input); input = "2 mons"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(60).Ticks, test.TotalTicks, input); input = "1 mon -1 day"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(29).Ticks, test.TotalTicks, input); input = "1 mon -2 days"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(28).Ticks, test.TotalTicks, input); input = "-1 mon -2 days -3:04:05"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(new TimeSpan(-32, -3, -4, -5).Ticks, test.TotalTicks, input); input = "1 year"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(30 * 12).Ticks, test.TotalTicks, input); input = "2 years"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(30 * 24).Ticks, test.TotalTicks, input); input = "1 year -1 mon"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(30 * 11).Ticks, test.TotalTicks, input); input = "1 year -2 mons"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(30 * 10).Ticks, test.TotalTicks, input); input = "1 year -1 day"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(30 * 12 - 1).Ticks, test.TotalTicks, input); input = "1 year -2 days"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(30 * 12 - 2).Ticks, test.TotalTicks, input); input = "1 year -1 mon -1 day"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(30 * 11 - 1).Ticks, test.TotalTicks, input); input = "1 year -2 mons -2 days"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(TimeSpan.FromDays(30 * 10 - 2).Ticks, test.TotalTicks, input); input = "1 day 2:3:4.005"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(new TimeSpan(1, 2, 3, 4, 5).Ticks, test.TotalTicks, input); var oldCulture = System.Threading.Thread.CurrentThread.CurrentCulture; System.Globalization.CultureInfo testCulture = new System.Globalization.CultureInfo("fr-FR"); Assert.AreEqual(",", testCulture.NumberFormat.NumberDecimalSeparator, "decimal seperator"); try { System.Threading.Thread.CurrentThread.CurrentCulture = testCulture; input = "1 day 2:3:4.005"; test = NpgsqlInterval.Parse(input); Assert.AreEqual(new TimeSpan(1, 2, 3, 4, 5).Ticks, test.TotalTicks, input); } finally { System.Threading.Thread.CurrentThread.CurrentCulture = oldCulture; } }
/// <summary> /// interval /// </summary> internal static object ToInterval(NpgsqlBackendTypeInfo typeInfo, String backendData, Int16 typeSize, Int32 typeModifier) { return(NpgsqlInterval.Parse(backendData)); }
public void Write(NpgsqlInterval value, NpgsqlWriteBuffer buf, NpgsqlParameter?parameter) { buf.WriteInt64(value.Time); buf.WriteInt32(value.Days); buf.WriteInt32(value.Months); }
/// <inheritdoc /> public int ValidateAndGetLength(NpgsqlInterval value, NpgsqlParameter?parameter) => 16;
public void Interval() { var expectedNpgsqlInterval = new NpgsqlInterval(1, 2, 3, 4, 5); var expectedTimeSpan = new TimeSpan(1, 2, 3, 4, 5); using (var cmd = new NpgsqlCommand("SELECT '1 days 2 hours 3 minutes 4 seconds 5 milliseconds'::INTERVAL", Conn)) using (var reader = cmd.ExecuteReader()) { reader.Read(); // Regular type (TimeSpan) Assert.That(reader.GetFieldType(0), Is.EqualTo(typeof(TimeSpan))); Assert.That(reader.GetTimeSpan(0), Is.EqualTo(expectedTimeSpan)); Assert.That(reader.GetFieldValue<TimeSpan>(0), Is.EqualTo(expectedTimeSpan)); Assert.That(reader[0], Is.EqualTo(expectedTimeSpan)); Assert.That(reader.GetValue(0), Is.EqualTo(expectedTimeSpan)); // Provider-specific type (NpgsqlInterval) Assert.That(reader.GetInterval(0), Is.EqualTo(expectedNpgsqlInterval)); Assert.That(reader.GetProviderSpecificFieldType(0), Is.EqualTo(typeof(NpgsqlInterval))); Assert.That(reader.GetProviderSpecificValue(0), Is.EqualTo(expectedNpgsqlInterval)); Assert.That(reader.GetFieldValue<NpgsqlInterval>(0), Is.EqualTo(expectedNpgsqlInterval)); } }