Skip to content

Commit b4dd864

Browse files
committed
NH-4004 - Restrict tests running on SqlServer CE
1 parent 21007cc commit b4dd864

30 files changed

+498
-342
lines changed

src/NHibernate.Test/Criteria/CriteriaQueryTest.cs

Lines changed: 159 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ public void ScrollCriteria()
112112
[Test]
113113
public void AllowToSetLimitOnSubqueries()
114114
{
115+
if (!TestDialect.SupportsNakedSubqueryInWhereClause)
116+
Assert.Ignore(Dialect.GetType().Name + " does not support subqueries in where clause");
117+
115118
using (ISession session = OpenSession())
116119
{
117120
DetachedCriteria dc = DetachedCriteria.For(typeof(Student))
@@ -129,6 +132,9 @@ public void AllowToSetLimitOnSubqueries()
129132
[Test]
130133
public void TestSubcriteriaBeingNull()
131134
{
135+
if (!TestDialect.SupportsNakedSubqueryInWhereClause)
136+
Assert.Ignore(Dialect.GetType().Name + " does not support subqueries in where clause");
137+
132138
ISession session = OpenSession();
133139
ITransaction t = session.BeginTransaction();
134140

@@ -205,37 +211,40 @@ public void Subselect()
205211
.Add(Subqueries.In("Gavin King", dc))
206212
.List();
207213

208-
DetachedCriteria dc2 = DetachedCriteria.For(typeof(Student), "st")
209-
.Add(Property.ForName("st.StudentNumber").EqProperty("e.StudentNumber"))
210-
.SetProjection(Property.ForName("Name"));
214+
if (TestDialect.SupportsNakedSubqueryInWhereClause)
215+
{
216+
DetachedCriteria dc2 = DetachedCriteria.For(typeof(Student), "st")
217+
.Add(Property.ForName("st.StudentNumber").EqProperty("e.StudentNumber"))
218+
.SetProjection(Property.ForName("Name"));
211219

212-
session.CreateCriteria(typeof(Enrolment), "e")
213-
.Add(Subqueries.Eq("Gavin King", dc2))
214-
.List();
220+
session.CreateCriteria(typeof(Enrolment), "e")
221+
.Add(Subqueries.Eq("Gavin King", dc2))
222+
.List();
215223

216-
DetachedCriteria dc3 = DetachedCriteria.For(typeof(Student), "st")
217-
.CreateCriteria("Enrolments")
218-
.CreateCriteria("Course")
219-
.Add(Property.ForName("Description").Eq("Hibernate Training"))
220-
.SetProjection(Property.ForName("st.Name"));
224+
DetachedCriteria dc3 = DetachedCriteria.For(typeof(Student), "st")
225+
.CreateCriteria("Enrolments")
226+
.CreateCriteria("Course")
227+
.Add(Property.ForName("Description").Eq("Hibernate Training"))
228+
.SetProjection(Property.ForName("st.Name"));
221229

222-
session.CreateCriteria(typeof(Enrolment), "e")
223-
.Add(Subqueries.Eq("Gavin King", dc3))
224-
.List();
230+
session.CreateCriteria(typeof(Enrolment), "e")
231+
.Add(Subqueries.Eq("Gavin King", dc3))
232+
.List();
225233

226-
DetachedCriteria courseCriteria = DetachedCriteria.For(typeof(Course))
227-
.Add(Property.ForName("Description").Eq("Hibernate Training"))
228-
.SetProjection(Projections.Property("CourseCode"));
234+
DetachedCriteria courseCriteria = DetachedCriteria.For(typeof(Course))
235+
.Add(Property.ForName("Description").Eq("Hibernate Training"))
236+
.SetProjection(Projections.Property("CourseCode"));
229237

230-
DetachedCriteria enrolmentCriteria = DetachedCriteria.For(typeof(Enrolment))
231-
.Add(Property.ForName("CourseCode").Eq(courseCriteria))
232-
.SetProjection(Projections.Property("CourseCode"));
238+
DetachedCriteria enrolmentCriteria = DetachedCriteria.For(typeof(Enrolment))
239+
.Add(Property.ForName("CourseCode").Eq(courseCriteria))
240+
.SetProjection(Projections.Property("CourseCode"));
233241

234-
DetachedCriteria studentCriteria = DetachedCriteria.For(typeof(Student))
235-
.Add(Subqueries.Exists(enrolmentCriteria));
242+
DetachedCriteria studentCriteria = DetachedCriteria.For(typeof(Student))
243+
.Add(Subqueries.Exists(enrolmentCriteria));
236244

237-
object result = studentCriteria.GetExecutableCriteria(session).UniqueResult();
238-
Assert.AreSame(gavin, result);
245+
object result = studentCriteria.GetExecutableCriteria(session).UniqueResult();
246+
Assert.AreSame(gavin, result);
247+
}
239248

240249
session.Delete(enrolment2);
241250
session.Delete(gavin);
@@ -929,10 +938,13 @@ public void ProjectionsTest()
929938

930939
//s.flush();
931940

932-
int count = (int)s.CreateCriteria(typeof(Enrolment))
933-
.SetProjection(Projections.Count("StudentNumber").SetDistinct())
934-
.UniqueResult();
935-
Assert.AreEqual(2, count);
941+
if (TestDialect.SupportsCountDistinct)
942+
{
943+
int count = (int) s.CreateCriteria(typeof(Enrolment))
944+
.SetProjection(Projections.Count("StudentNumber").SetDistinct())
945+
.UniqueResult();
946+
Assert.AreEqual(2, count);
947+
}
936948

937949
object obj = s.CreateCriteria(typeof(Enrolment))
938950
.SetProjection(Projections.ProjectionList()
@@ -1043,17 +1055,20 @@ public void ProjectionsTest()
10431055
.UniqueResult();
10441056
Assert.AreEqual(typeof(Int64), r.GetType());
10451057

1046-
IList list = s.CreateCriteria(typeof(Enrolment))
1047-
.CreateAlias("Student", "st")
1048-
.CreateAlias("Course", "co")
1049-
.SetProjection(Projections.ProjectionList()
1050-
.Add(Projections.GroupProperty("co.CourseCode"))
1051-
.Add(Projections.Count("st.StudentNumber").SetDistinct())
1052-
.Add(Projections.GroupProperty("Year"))
1053-
)
1054-
.List();
1058+
if (TestDialect.SupportsCountDistinct)
1059+
{
1060+
IList list = s.CreateCriteria(typeof(Enrolment))
1061+
.CreateAlias("Student", "st")
1062+
.CreateAlias("Course", "co")
1063+
.SetProjection(Projections.ProjectionList()
1064+
.Add(Projections.GroupProperty("co.CourseCode"))
1065+
.Add(Projections.Count("st.StudentNumber").SetDistinct())
1066+
.Add(Projections.GroupProperty("Year"))
1067+
)
1068+
.List();
10551069

1056-
Assert.AreEqual(2, list.Count);
1070+
Assert.AreEqual(2, list.Count);
1071+
}
10571072

10581073
object g = s.CreateCriteria(typeof(Student))
10591074
.Add(Expression.IdEq(667L))
@@ -1113,11 +1128,14 @@ public void CloningProjectionsTest()
11131128

11141129
//s.flush();
11151130

1116-
ICriteria criteriaToBeCloned = s.CreateCriteria(typeof(Enrolment))
1117-
.SetProjection(Projections.Count("StudentNumber").SetDistinct());
1118-
int count = (int)CriteriaTransformer.Clone(criteriaToBeCloned)
1119-
.UniqueResult();
1120-
Assert.AreEqual(2, count);
1131+
if (TestDialect.SupportsCountDistinct)
1132+
{
1133+
ICriteria criteriaToBeCloned = s.CreateCriteria(typeof(Enrolment))
1134+
.SetProjection(Projections.Count("StudentNumber").SetDistinct());
1135+
int count = (int)CriteriaTransformer.Clone(criteriaToBeCloned)
1136+
.UniqueResult();
1137+
Assert.AreEqual(2, count);
1138+
}
11211139

11221140
ICriteria criteriaToClone = s.CreateCriteria(typeof(Enrolment))
11231141
.SetProjection(Projections.ProjectionList()
@@ -1226,18 +1244,21 @@ public void CloningProjectionsTest()
12261244

12271245
Assert.AreEqual(7, array.Length);
12281246

1229-
ICriteria criteriaToClone5 = s.CreateCriteria(typeof(Enrolment))
1230-
.CreateAlias("Student", "st")
1231-
.CreateAlias("Course", "co")
1232-
.SetProjection(Projections.ProjectionList()
1233-
.Add(Projections.GroupProperty("co.CourseCode"))
1234-
.Add(Projections.Count("st.StudentNumber").SetDistinct())
1235-
.Add(Projections.GroupProperty("Year"))
1236-
);
1237-
IList list = CriteriaTransformer.Clone(criteriaToClone5)
1238-
.List();
1247+
if (TestDialect.SupportsCountDistinct)
1248+
{
1249+
ICriteria criteriaToClone5 = s.CreateCriteria(typeof(Enrolment))
1250+
.CreateAlias("Student", "st")
1251+
.CreateAlias("Course", "co")
1252+
.SetProjection(Projections.ProjectionList()
1253+
.Add(Projections.GroupProperty("co.CourseCode"))
1254+
.Add(Projections.Count("st.StudentNumber").SetDistinct())
1255+
.Add(Projections.GroupProperty("Year"))
1256+
);
1257+
IList list = CriteriaTransformer.Clone(criteriaToClone5)
1258+
.List();
12391259

1240-
Assert.AreEqual(2, list.Count);
1260+
Assert.AreEqual(2, list.Count);
1261+
}
12411262

12421263
ICriteria criteriaToClone6 = s.CreateCriteria(typeof(Student))
12431264
.Add(Expression.IdEq(667L))
@@ -1377,13 +1398,17 @@ public void ProjectionsUsingProperty()
13771398
Assert.That(aResult[1], Is.InstanceOf<string>());
13781399
Assert.That(aResult[2], Is.InstanceOf<CityState>());
13791400
Assert.That(aResult[3], Is.InstanceOf<Course>());
1380-
1401+
13811402
// Subtest #5
1382-
int count = (int)s.CreateCriteria(typeof(Enrolment))
1383-
.SetProjection(Property.ForName("StudentNumber").Count().SetDistinct())
1384-
.UniqueResult();
1385-
1386-
Assert.AreEqual(2, count);
1403+
1404+
if (TestDialect.SupportsCountDistinct)
1405+
{
1406+
int count = (int) s.CreateCriteria(typeof(Enrolment))
1407+
.SetProjection(Property.ForName("StudentNumber").Count().SetDistinct())
1408+
.UniqueResult();
1409+
1410+
Assert.AreEqual(2, count);
1411+
}
13871412

13881413
// Subtest #6
13891414
object obj = s.CreateCriteria(typeof(Enrolment))
@@ -1518,48 +1543,53 @@ public void ProjectionsUsingProperty()
15181543

15191544
Assert.AreEqual(7, array.Length);
15201545

1521-
// Subtest #15
1522-
IList list = s.CreateCriteria(typeof(Enrolment))
1523-
.CreateAlias("Student", "st")
1524-
.CreateAlias("Course", "co")
1525-
.SetProjection(Projections.ProjectionList()
1526-
.Add(Property.ForName("co.CourseCode").Group())
1527-
.Add(Property.ForName("st.StudentNumber").Count().SetDistinct())
1528-
.Add(Property.ForName("Year").Group())
1529-
)
1530-
.List();
1546+
IList list;
15311547

1532-
Assert.AreEqual(2, list.Count);
1548+
if (TestDialect.SupportsCountDistinct)
1549+
{
1550+
// Subtest #15
1551+
list = s.CreateCriteria(typeof(Enrolment))
1552+
.CreateAlias("Student", "st")
1553+
.CreateAlias("Course", "co")
1554+
.SetProjection(Projections.ProjectionList()
1555+
.Add(Property.ForName("co.CourseCode").Group())
1556+
.Add(Property.ForName("st.StudentNumber").Count().SetDistinct())
1557+
.Add(Property.ForName("Year").Group())
1558+
)
1559+
.List();
15331560

1534-
// Subtest #16
1535-
list = s.CreateCriteria<Enrolment>()
1536-
.CreateAlias("Student", "st")
1537-
.CreateAlias("Course", "co")
1538-
.SetProjection(Projections.ProjectionList()
1539-
.Add(Property.ForName("co.CourseCode").Group().As("courseCode"))
1540-
.Add(Property.ForName("st.StudentNumber").Count().SetDistinct().As("studentNumber"))
1541-
.Add(Property.ForName("Year").Group())
1542-
)
1543-
.AddOrder(Order.Asc("courseCode"))
1544-
.AddOrder(Order.Asc("studentNumber"))
1545-
.List();
1561+
Assert.AreEqual(2, list.Count);
1562+
1563+
// Subtest #16
1564+
list = s.CreateCriteria<Enrolment>()
1565+
.CreateAlias("Student", "st")
1566+
.CreateAlias("Course", "co")
1567+
.SetProjection(Projections.ProjectionList()
1568+
.Add(Property.ForName("co.CourseCode").Group().As("courseCode"))
1569+
.Add(Property.ForName("st.StudentNumber").Count().SetDistinct().As("studentNumber"))
1570+
.Add(Property.ForName("Year").Group())
1571+
)
1572+
.AddOrder(Order.Asc("courseCode"))
1573+
.AddOrder(Order.Asc("studentNumber"))
1574+
.List();
15461575

1547-
Assert.That(list.Count, Is.EqualTo(2));
1576+
Assert.That(list.Count, Is.EqualTo(2));
15481577

1549-
// Subtest #17
1550-
list = s.CreateCriteria<Enrolment>()
1551-
.CreateAlias("Student", "st")
1552-
.CreateAlias("Course", "co")
1553-
.SetProjection(Projections.ProjectionList()
1554-
.Add(Property.ForName("co.CourseCode").Group().As("cCode"))
1555-
.Add(Property.ForName("st.StudentNumber").Count().SetDistinct().As("stNumber"))
1556-
.Add(Property.ForName("Year").Group())
1557-
)
1558-
.AddOrder(Order.Asc("cCode"))
1559-
.AddOrder(Order.Asc("stNumber"))
1560-
.List();
1578+
// Subtest #17
1579+
list = s.CreateCriteria<Enrolment>()
1580+
.CreateAlias("Student", "st")
1581+
.CreateAlias("Course", "co")
1582+
.SetProjection(Projections.ProjectionList()
1583+
.Add(Property.ForName("co.CourseCode").Group().As("cCode"))
1584+
.Add(Property.ForName("st.StudentNumber").Count().SetDistinct().As("stNumber"))
1585+
.Add(Property.ForName("Year").Group())
1586+
)
1587+
.AddOrder(Order.Asc("cCode"))
1588+
.AddOrder(Order.Asc("stNumber"))
1589+
.List();
15611590

1562-
Assert.That(list.Count, Is.EqualTo(2));
1591+
Assert.That(list.Count, Is.EqualTo(2));
1592+
}
15631593

15641594
s.Delete(gavin);
15651595
s.Delete(xam);
@@ -1636,13 +1666,16 @@ public void DistinctProjectionsOfComponents()
16361666
.UniqueResult();
16371667

16381668
Assert.That(result, Is.EqualTo(2));
1639-
1640-
result = s.CreateCriteria<Student>()
1641-
.SetProjection(Projections.CountDistinct("CityState.City"))
1642-
.UniqueResult();
1643-
1644-
Assert.That(result, Is.EqualTo(1));
1645-
1669+
1670+
if (TestDialect.SupportsCountDistinct)
1671+
{
1672+
result = s.CreateCriteria<Student>()
1673+
.SetProjection(Projections.CountDistinct("CityState.City"))
1674+
.UniqueResult();
1675+
1676+
Assert.That(result, Is.EqualTo(1));
1677+
}
1678+
16461679
t.Commit();
16471680
s.Close();
16481681

@@ -1880,11 +1913,13 @@ public void CloningProjectionsUsingProperty()
18801913
s.Save(enrolment);
18811914
s.Flush();
18821915

1883-
int count = (int)CriteriaTransformer.Clone(s.CreateCriteria(typeof(Enrolment))
1884-
.SetProjection(Property.ForName("StudentNumber").Count().SetDistinct())
1885-
)
1886-
.UniqueResult();
1887-
Assert.AreEqual(2, count);
1916+
if (TestDialect.SupportsCountDistinct)
1917+
{
1918+
int count = (int) CriteriaTransformer.Clone(
1919+
s.CreateCriteria(typeof(Enrolment)).SetProjection(Property.ForName("StudentNumber").Count().SetDistinct())
1920+
).UniqueResult();
1921+
Assert.AreEqual(2, count);
1922+
}
18881923

18891924
object obj = CriteriaTransformer.Clone(s.CreateCriteria(typeof(Enrolment))
18901925
.SetProjection(Projections.ProjectionList()
@@ -2003,18 +2038,22 @@ public void CloningProjectionsUsingProperty()
20032038
.UniqueResult();
20042039
Assert.AreEqual(7, array.Length);
20052040

2006-
IList list = CriteriaTransformer.Clone(s.CreateCriteria(typeof(Enrolment))
2007-
.CreateAlias("Student", "st")
2008-
.CreateAlias("Course", "co")
2009-
.SetProjection(Projections.ProjectionList()
2010-
.Add(Property.ForName("co.CourseCode").Group())
2011-
.Add(Property.ForName("st.StudentNumber").Count().SetDistinct())
2012-
.Add(Property.ForName("Year").Group())
2013-
)
2014-
)
2015-
.List();
2041+
if (TestDialect.SupportsCountDistinct)
2042+
{
2043+
IList list = CriteriaTransformer.Clone(
2044+
s.CreateCriteria(typeof(Enrolment))
2045+
.CreateAlias("Student", "st")
2046+
.CreateAlias("Course", "co")
2047+
.SetProjection(
2048+
Projections.ProjectionList()
2049+
.Add(Property.ForName("co.CourseCode").Group())
2050+
.Add(Property.ForName("st.StudentNumber").Count().SetDistinct())
2051+
.Add(Property.ForName("Year").Group())
2052+
)
2053+
).List();
20162054

2017-
Assert.AreEqual(2, list.Count);
2055+
Assert.AreEqual(2, list.Count);
2056+
}
20182057

20192058
s.Delete(gavin);
20202059
s.Delete(xam);

src/NHibernate.Test/Criteria/DetachedCriteriaSerializable.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,9 +357,12 @@ public void ExecutableCriteria()
357357
.Add(Expression.Lt("StudentNumber", 668L));
358358
SerializeAndList(dc);
359359

360-
dc = DetachedCriteria.For(typeof(Enrolment))
361-
.SetProjection(Projections.Count("StudentNumber").SetDistinct());
362-
SerializeAndList(dc);
360+
if (TestDialect.SupportsCountDistinct)
361+
{
362+
dc = DetachedCriteria.For(typeof(Enrolment))
363+
.SetProjection(Projections.Count("StudentNumber").SetDistinct());
364+
SerializeAndList(dc);
365+
}
363366

364367
dc = DetachedCriteria.For(typeof(Enrolment))
365368
.SetProjection(Projections.ProjectionList()

0 commit comments

Comments
 (0)