Skip to content

Commit b0b2463

Browse files
Test cases for NH-3951
1 parent 90f5234 commit b0b2463

File tree

4 files changed

+136
-0
lines changed

4 files changed

+136
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace NHibernate.Test.NHSpecificTest.NH3951
5+
{
6+
class Entity
7+
{
8+
public virtual Guid Id { get; set; }
9+
public virtual string Name { get; set; }
10+
public virtual Guid? RelatedId { get; set; }
11+
12+
public virtual ISet<Entity> Related { get; set; }
13+
}
14+
}
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
using System.Linq;
2+
using NHibernate.Linq;
3+
using NUnit.Framework;
4+
5+
namespace NHibernate.Test.NHSpecificTest.NH3951
6+
{
7+
[TestFixture]
8+
public class Fixture : BugTestCase
9+
{
10+
protected override void OnSetUp()
11+
{
12+
using (ISession session = OpenSession())
13+
using (ITransaction transaction = session.BeginTransaction())
14+
{
15+
var e1 = new Entity {Name = "Bob"};
16+
session.Save(e1);
17+
18+
var e2 = new Entity {Name = "Sally"};
19+
session.Save(e2);
20+
21+
session.Flush();
22+
transaction.Commit();
23+
}
24+
}
25+
26+
protected override void OnTearDown()
27+
{
28+
using (ISession session = OpenSession())
29+
using (ITransaction transaction = session.BeginTransaction())
30+
{
31+
session.Delete("from System.Object");
32+
33+
session.Flush();
34+
transaction.Commit();
35+
}
36+
}
37+
38+
[Test]
39+
public void AllNamedBob()
40+
{
41+
using (ISession session = OpenSession())
42+
using (session.BeginTransaction())
43+
{
44+
var result = session.Query<Entity>()
45+
.All(e => e.Name == "Bob");
46+
47+
Assert.AreEqual(false, result);
48+
}
49+
}
50+
51+
[Test]
52+
public void AllNamedWithAtLeast3Char()
53+
{
54+
using (ISession session = OpenSession())
55+
using (session.BeginTransaction())
56+
{
57+
var result = session.Query<Entity>()
58+
.All(e => e.Name.Length > 2);
59+
60+
Assert.AreEqual(true, result);
61+
}
62+
}
63+
64+
[Test]
65+
public void AllNamedBobWorkaround()
66+
{
67+
using (ISession session = OpenSession())
68+
using (session.BeginTransaction())
69+
{
70+
var result = !session.Query<Entity>()
71+
.Any(e => e.Name != "Bob");
72+
73+
Assert.AreEqual(false, result);
74+
}
75+
}
76+
77+
[Test]
78+
public void AllNamedWithAtLeast3CharWorkaround()
79+
{
80+
using (ISession session = OpenSession())
81+
using (session.BeginTransaction())
82+
{
83+
var result = !session.Query<Entity>()
84+
.Any(e => e.Name.Length < 3);
85+
86+
Assert.AreEqual(true, result);
87+
}
88+
}
89+
90+
[Test]
91+
public void AnyAndAllInSubQueries()
92+
{
93+
using (ISession session = OpenSession())
94+
using (session.BeginTransaction())
95+
{
96+
var result = session.Query<Entity>()
97+
.Select(e => new { e.Id, hasRelated = e.Related.Any(), allBobRelated = e.Related.All(r => r.Name == "Bob") })
98+
.ToList();
99+
100+
Assert.AreEqual(false, result[0].hasRelated);
101+
Assert.AreEqual(true, result[0].allBobRelated);
102+
}
103+
}
104+
}
105+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" namespace="NHibernate.Test.NHSpecificTest.NH3951">
3+
4+
<class name="Entity">
5+
<id name="Id" generator="guid.comb" />
6+
<property name="Name" />
7+
<property name="RelatedId" />
8+
<set name="Related">
9+
<key column="RelatedId"/>
10+
<one-to-many class="Entity" />
11+
</set>
12+
</class>
13+
14+
</hibernate-mapping>

src/NHibernate.Test/NHibernate.Test.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -736,6 +736,8 @@
736736
<Compile Include="NHSpecificTest\EntityWithUserTypeCanHaveLinqGenerators\Fixture.cs" />
737737
<Compile Include="NHSpecificTest\EntityWithUserTypeCanHaveLinqGenerators\FooExample.cs" />
738738
<Compile Include="NHSpecificTest\EntityWithUserTypeCanHaveLinqGenerators\IExample.cs" />
739+
<Compile Include="NHSpecificTest\NH3951\Entity.cs" />
740+
<Compile Include="NHSpecificTest\NH3951\Fixture.cs" />
739741
<Compile Include="NHSpecificTest\NH2204\Model.cs" />
740742
<Compile Include="NHSpecificTest\NH2204\Fixture.cs" />
741743
<Compile Include="NHSpecificTest\NH3912\BatcherLovingEntity.cs" />
@@ -3201,6 +3203,7 @@
32013203
<EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" />
32023204
</ItemGroup>
32033205
<ItemGroup>
3206+
<EmbeddedResource Include="NHSpecificTest\NH3951\Mappings.hbm.xml" />
32043207
<EmbeddedResource Include="NHSpecificTest\NH2204\Mappings.hbm.xml" />
32053208
<EmbeddedResource Include="NHSpecificTest\NH3874\Mappings.hbm.xml" />
32063209
<EmbeddedResource Include="NHSpecificTest\EntityWithUserTypeCanHaveLinqGenerators\Mappings.hbm.xml" />

0 commit comments

Comments
 (0)