public void EqOrNullTest() { using (ISession session = OpenSession()) { var criteria = (CriteriaImpl)session.CreateCriteria(typeof(Simple)); var criteriaQuery = new CriteriaQueryTranslator(sessions, criteria, criteria.EntityOrClassName, "sql_alias"); ICriterion exp = Criterion.EqOrNull("Name", "foo"); SqlString sqlString = exp.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass <string, IFilter>()); string expectedSql = "sql_alias.Name = ?"; Assert.AreEqual(expectedSql, sqlString.ToString()); Assert.AreEqual(1, sqlString.GetParameterCount()); exp = Criterion.EqOrNull("Name", null); sqlString = exp.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass <string, IFilter>()); expectedSql = "sql_alias.Name is null"; Assert.AreEqual(expectedSql, sqlString.ToString()); Assert.AreEqual(0, sqlString.GetParameterCount()); // Check that the result is the same than using official Restriction ICriterion orExpExpected = Restrictions.Or(Restrictions.IsNull("Name"), Restrictions.Eq("Name", "foo")); ICriterion orExpActual = Restrictions.Or(Criterion.EqOrNull("Name", null), Criterion.EqOrNull("Name", "foo")); SqlString sqlStringExpected = orExpExpected.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass <string, IFilter>()); SqlString sqlStringActual = orExpActual.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass <string, IFilter>()); Assert.AreEqual(sqlStringExpected.ToString(), sqlStringActual.ToString()); } }