Skip to content

Commit 80ce9b4

Browse files
committed
HugeInt and Interval tests
1 parent 9d90fa0 commit 80ce9b4

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed

DuckDB.NET.Test/DuckDBManagedAppenderListTests.cs

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
using System.Collections.Generic;
2-
using System;
3-
using Bogus;
1+
using Bogus;
2+
using DuckDB.NET.Native;
43
using FluentAssertions;
4+
using System;
5+
using System.Collections.Generic;
6+
using System.Numerics;
57
using Xunit;
68

79
namespace DuckDB.NET.Test;
@@ -38,6 +40,12 @@ public void ListValuesLong()
3840
ListValuesInternal("BigInt", faker => faker.Random.Long());
3941
}
4042

43+
[Fact]
44+
public void ListValuesHugeInt()
45+
{
46+
ListValuesInternal("HugeInt", faker => BigInteger.Subtract(DuckDBHugeInt.HugeIntMaxValue, faker.Random.Int(min: 0)));
47+
}
48+
4149
[Fact]
4250
public void ListValuesByte()
4351
{
@@ -62,6 +70,12 @@ public void ListValuesULong()
6270
ListValuesInternal("UBigInt", faker => faker.Random.ULong());
6371
}
6472

73+
[Fact]
74+
public void ListValuesUHugeInt()
75+
{
76+
ListValuesInternal("UHugeInt", faker => BigInteger.Subtract(DuckDBHugeInt.HugeIntMaxValue, faker.Random.Int(min: 0)));
77+
}
78+
6579
[Fact]
6680
public void ListValuesDecimal()
6781
{
@@ -98,13 +112,23 @@ public void ListValuesString()
98112
ListValuesInternal("Varchar", faker => faker.Random.Utf16String());
99113
}
100114

115+
[Fact]
116+
public void ListValuesInterval()
117+
{
118+
ListValuesInternal("Interval", faker =>
119+
{
120+
var timespan = faker.Date.Timespan();
121+
122+
return TimeSpan.FromTicks(timespan.Ticks - timespan.Ticks % 10);
123+
});
124+
}
125+
101126
[Fact]
102127
public void ArrayValuesInt()
103128
{
104129
ListValuesInternal("Integer", faker => faker.Random.Int(), 5);
105130
}
106131

107-
108132
private void ListValuesInternal<T>(string typeName, Func<Faker, T> generator, int? length = null)
109133
{
110134
var rows = 2000;

DuckDB.NET.Test/DuckDBManagedAppenderTests.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,13 @@ public void IntervalValues()
218218
Command.CommandText = "CREATE TABLE managedAppenderInterval(a INTERVAL);";
219219
Command.ExecuteNonQuery();
220220

221-
var timeSpans = Enumerable.Range(0, 20).Select(i => TimeSpan.FromSeconds(Random.Shared.Next(1_000_000, 1_000_000 * 10))).ToList();
221+
//DuckDB's precision for Interval is MicroSeconds so results will be rounded down to the nearest 10th.
222+
var timeSpans = GetRandomList<TimeSpan>(faker =>
223+
{
224+
var timespan = faker.Date.Timespan();
225+
226+
return TimeSpan.FromTicks(timespan.Ticks - timespan.Ticks % 10);
227+
});
222228

223229
using (var appender = Connection.CreateAppender("managedAppenderInterval"))
224230
{

0 commit comments

Comments
 (0)