Skip to content

Commit 08be2d4

Browse files
committed
Update tests
1 parent ef42aba commit 08be2d4

File tree

2 files changed

+87
-53
lines changed

2 files changed

+87
-53
lines changed
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
using System.Collections.Generic;
2+
using System;
3+
using Bogus;
4+
using FluentAssertions;
5+
using Xunit;
6+
7+
namespace DuckDB.NET.Test;
8+
9+
public class DuckDBManagedAppenderListTests(DuckDBDatabaseFixture db) : DuckDBTestBase(db)
10+
{
11+
[Fact]
12+
public void ListValuesBool()
13+
{
14+
ListValuesInternal("Bool", faker => faker.Random.Bool());
15+
}
16+
17+
[Fact]
18+
public void ListValuesSByte()
19+
{
20+
ListValuesInternal("TinyInt", faker => faker.Random.SByte());
21+
}
22+
23+
[Fact]
24+
public void ListValuesInt()
25+
{
26+
ListValuesInternal("Integer", faker => faker.Random.Int());
27+
}
28+
29+
[Fact]
30+
public void ListValuesLong()
31+
{
32+
ListValuesInternal("BigInt", faker => faker.Random.Long());
33+
}
34+
35+
public void ListValuesInternal<T>(string typeName, Func<Faker, T> generator)
36+
{
37+
var rows = 2000;
38+
var table = $"managedAppender{typeName}Lists";
39+
40+
Command.CommandText = $"CREATE TABLE {table} (a Integer, b {typeName}[], c {typeName}[][]);";
41+
Command.ExecuteNonQuery();
42+
43+
var lists = new List<List<T>>();
44+
var nestedLists = new List<List<List<T>>>();
45+
46+
for (var i = 0; i < rows; i++)
47+
{
48+
lists.Add(GetRandomList(generator, Random.Shared.Next(0, 200)));
49+
50+
var item = new List<List<T>>();
51+
nestedLists.Add(item);
52+
53+
for (var j = 0; j < Random.Shared.Next(0, 10); j++)
54+
{
55+
item.Add(GetRandomList(generator, Random.Shared.Next(0, 20)));
56+
}
57+
}
58+
59+
using (var appender = Connection.CreateAppender(table))
60+
{
61+
for (var i = 0; i < rows; i++)
62+
{
63+
appender.CreateRow().AppendValue(i).AppendValue(lists[i]).AppendValue(nestedLists[i]).EndRow();
64+
}
65+
}
66+
67+
Command.CommandText = $"SELECT * FROM {table} order by 1";
68+
var reader = Command.ExecuteReader();
69+
70+
var index = 0;
71+
while (reader.Read())
72+
{
73+
var list = reader.GetFieldValue<List<T>>(1);
74+
list.Should().BeEquivalentTo(lists[index]);
75+
76+
var nestedList = reader.GetFieldValue<List<List<T>>>(2);
77+
nestedList.Should().BeEquivalentTo(nestedLists[index]);
78+
79+
index++;
80+
}
81+
}
82+
}

DuckDB.NET.Test/ManagedAppenderTests.cs renamed to DuckDB.NET.Test/DuckDBManagedAppenderTests.cs

Lines changed: 5 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
using System;
2-
using System.Globalization;
1+
using Dapper;
32
using DuckDB.NET.Data;
4-
using Xunit;
53
using FluentAssertions;
4+
using FluentAssertions.Common;
5+
using System;
66
using System.Collections.Generic;
77
using System.Data;
8+
using System.Globalization;
89
using System.IO;
910
using System.Linq;
1011
using System.Numerics;
11-
using Dapper;
12-
using FluentAssertions.Common;
12+
using Xunit;
1313

1414
namespace DuckDB.NET.Test;
1515

@@ -268,54 +268,6 @@ public void TemporalValues()
268268
result.Select(tuple => tuple.Item8).Should().BeEquivalentTo(dates.Select(TimeOnly.FromDateTime));
269269
}
270270

271-
[Fact]
272-
public void ListValues()
273-
{
274-
Command.CommandText = "CREATE TABLE managedAppenderLists(a INTEGER, b INTEGER[], c INTEGER[][]);";
275-
Command.ExecuteNonQuery();
276-
277-
var rows = 2000;
278-
279-
var lists = new List<List<int>>();
280-
var nestedLists = new List<List<List<int>>>();
281-
282-
for (var i = 0; i < rows; i++)
283-
{
284-
lists.Add(GetRandomList(faker => faker.Random.Int(), Random.Shared.Next(0, 200)));
285-
286-
var item = new List<List<int>>();
287-
nestedLists.Add(item);
288-
289-
for (var j = 0; j < Random.Shared.Next(0, 10); j++)
290-
{
291-
item.Add(GetRandomList(faker => faker.Random.Int(), Random.Shared.Next(0, 20)));
292-
}
293-
}
294-
295-
using (var appender = Connection.CreateAppender("managedAppenderLists"))
296-
{
297-
for (var i = 0; i < rows; i++)
298-
{
299-
appender.CreateRow().AppendValue(i).AppendValue(lists[i]).AppendValue(nestedLists[i]).EndRow();
300-
}
301-
}
302-
303-
Command.CommandText = "SELECT * FROM managedAppenderLists order by 1";
304-
var reader = Command.ExecuteReader();
305-
306-
var index = 0;
307-
while (reader.Read())
308-
{
309-
var list = reader.GetFieldValue<List<int>>(1);
310-
list.Should().BeEquivalentTo(lists[index]);
311-
312-
var nestedList = reader.GetFieldValue<List<List<int>>>(2);
313-
nestedList.Should().BeEquivalentTo(nestedLists[index]);
314-
315-
index++;
316-
}
317-
}
318-
319271
[Fact]
320272
public void IncompleteRowThrowsException()
321273
{

0 commit comments

Comments
 (0)