public void SqlQueryParameterExtensions_EmptyArray_ReturnEmptyArray()
        {
            SqlQueryParameter[] array  = new SqlQueryParameter[0];
            SqlParameter[]      result = array.ToSqlParameters();

            Assert.IsNotNull(result);
            Assert.AreEqual(0, result.Length);
        }
        public void SqlQueryParameterExtensions_ArrayWithNull_ReturnDBNull()
        {
            SqlQueryParameter[] array = new SqlQueryParameter[]
            {
                new SqlQueryParameter("ColumnA", null)
            };
            SqlParameter[] result = array.ToSqlParameters();

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Length);
            Assert.AreEqual("@ColumnA", result[0].ParameterName);
            Assert.AreEqual(DBNull.Value, result[0].Value);
        }
        public void SqlQueryParameterExtensions_ArrayWithResolver_CallResolverAndReturnResult()
        {
            Func <int> resolveAction = () => 123;

            SqlQueryParameter[] array = new SqlQueryParameter[]
            {
                new SqlQueryParameter("ColumnA", new Resolver <int>(resolveAction))
            };
            SqlParameter[] result = array.ToSqlParameters();

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Length);
            Assert.AreEqual("@ColumnA", result[0].ParameterName);
            Assert.AreEqual(123, result[0].Value);
        }
        public void SqlQueryParameterExtensions_ArrayWithMultipleRequiredPlaceholder_ThrowFirstError()
        {
            SqlQueryParameter[] array = new SqlQueryParameter[]
            {
                new SqlQueryParameter("ColumnA", Placeholders.IsRequired()),
                new SqlQueryParameter("ColumnB", Placeholders.IsRequired())
            };
            RequiredPlaceholderIsNullException exception = Assert.Throws <RequiredPlaceholderIsNullException>(() => array.ToSqlParameters());

            Assert.AreEqual("ColumnA", exception.ColumnName);
            Assert.AreEqual("The value for ColumnA is required but has not been set", exception.Message);
        }