Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit e0adbd0

Browse files
committed
More thorough unit tests for array/list Contains() method expressions
1 parent a46498e commit e0adbd0

File tree

1 file changed

+31
-6
lines changed

1 file changed

+31
-6
lines changed

tests/ServiceStack.OrmLite.Tests/Expression/MethodExpressionTests.cs

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,22 @@ public class MethodExpressionTests : ExpressionsTestBase
1212
[Test]
1313
public void Can_select_ints_using_array_contains()
1414
{
15-
var ints = new[] { 1, 2, 3 };
15+
var ints = new[] { 1, 20, 30 };
16+
var nullableInts = new int?[] { 5, 30, null, 20 };
1617

1718
using (var db = OpenDbConnection())
1819
{
19-
db.Select<TestType>(x => ints.Contains(x.Id));
20+
var int10 = new TestType { IntColumn = 10 };
21+
var int20 = new TestType { IntColumn = 20 };
22+
var int30 = new TestType { IntColumn = 30 };
23+
24+
EstablishContext(0, int10, int20, int30);
25+
26+
var results = db.Select<TestType>(x => ints.Contains(x.IntColumn));
27+
var resultsNullable = db.Select<TestType>(x => nullableInts.Contains(x.IntColumn));
28+
29+
CollectionAssert.AreEquivalent(new[] { int20, int30 }, results);
30+
CollectionAssert.AreEquivalent(new[] { int20, int30 }, resultsNullable);
2031

2132
Assert.That(db.GetLastSql(), Is.StringContaining("(@0,@1,@2)").
2233
Or.StringContaining("(:0,:1,:2)"));
@@ -26,11 +37,22 @@ public void Can_select_ints_using_array_contains()
2637
[Test]
2738
public void Can_select_ints_using_list_contains()
2839
{
29-
var ints = new[] { 1, 2, 3 }.ToList();
40+
var ints = new[] { 1, 20, 30 }.ToList();
41+
var nullableInts = new int?[] { 5, 30, null, 20 }.ToList();
3042

3143
using (var db = OpenDbConnection())
3244
{
33-
db.Select<TestType>(x => ints.Contains(x.Id));
45+
var int10 = new TestType { IntColumn = 10 };
46+
var int20 = new TestType { IntColumn = 20 };
47+
var int30 = new TestType { IntColumn = 30 };
48+
49+
EstablishContext(0, int10, int20, int30);
50+
51+
var results = db.Select<TestType>(x => ints.Contains(x.IntColumn));
52+
var resultsNullable = db.Select<TestType>(x => nullableInts.Contains(x.IntColumn));
53+
54+
CollectionAssert.AreEquivalent(new[] { int20, int30 }, results);
55+
CollectionAssert.AreEquivalent(new[] { int20, int30 }, resultsNullable);
3456

3557
Assert.That(db.GetLastSql(), Is.StringContaining("(@0,@1,@2)").
3658
Or.StringContaining("(:0,:1,:2)"));
@@ -44,8 +66,11 @@ public void Can_select_ints_using_empty_array_contains()
4466

4567
using (var db = OpenDbConnection())
4668
{
47-
db.Select<TestType>(x => ints.Contains(x.Id));
48-
69+
EstablishContext(5);
70+
71+
var results = db.Select<TestType>(x => ints.Contains(x.Id));
72+
73+
CollectionAssert.IsEmpty(results);
4974
Assert.That(db.GetLastSql(), Is.StringContaining("(NULL)"));
5075
}
5176
}

0 commit comments

Comments
 (0)