private void TestBooleanUnaryOperation(string operationCriterion, SpatialProjectionUnaryDelegate projection, SpatialCriterionUnaryDelegate criterion)
        {
            IList results = session.CreateCriteria(typeof(NtsTestCase))
                            .Add(Restrictions.Eq("Operation", operationCriterion))
                            .SetProjection(Projections.ProjectionList()
                                           .Add(Projections.Property("Description"))
                                           .Add(Projections.Property("BooleanResult"))
                                           .Add(projection("GeometryA"))
                                           )
                            .List();

            Assert.Greater(results.Count, 0);

            long countTrue = 0;

            foreach (object[] result in results)
            {
                string description = (string)result[0];
                bool   expected    = (bool)result[1];
                bool   operation   = (bool)result[2];

                Assert.AreEqual(expected, operation, description);

                if (operation)
                {
                    countTrue++;
                }
            }

            // RowCount uses "count(*)" which in PostgreSQL returns Int64 and
            // in MS SQL Server return Int32.
            long countRows = Convert.ToInt64(session.CreateCriteria(typeof(NtsTestCase))
                                             .Add(Restrictions.Eq("Operation", operationCriterion))
                                             .Add(criterion("GeometryA"))
                                             .SetProjection(Projections.RowCount())
                                             .UniqueResult());

            Assert.AreEqual(countTrue, countRows);
        }
		private void TestBooleanUnaryOperation(string operationCriterion, SpatialProjectionUnaryDelegate projection, SpatialCriterionUnaryDelegate criterion)
		{
			IList results = session.CreateCriteria(typeof(NtsTestCase))
				.Add(Restrictions.Eq("Operation", operationCriterion))
				.SetProjection(Projections.ProjectionList()
					.Add(Projections.Property("Description"))
					.Add(Projections.Property("BooleanResult"))
					.Add(projection("GeometryA"))
					)
				.List();

			Assert.Greater(results.Count, 0);

			long countTrue = 0;

			foreach (object[] result in results)
			{
				string description = (string)result[0];
				bool expected = (bool)result[1];
				bool operation = (bool)result[2];

				Assert.AreEqual(expected, operation, description);

				if (operation)
					countTrue++;
			}

			// RowCount uses "count(*)" which in PostgreSQL returns Int64 and
			// in MS SQL Server return Int32.
			long countRows = Convert.ToInt64(session.CreateCriteria(typeof(NtsTestCase))
				.Add(Restrictions.Eq("Operation", operationCriterion))
				.Add(criterion("GeometryA"))
				.SetProjection(Projections.RowCount())
				.UniqueResult());

			Assert.AreEqual(countTrue, countRows);
		}