public void BindParameter_BindAndRebindParameterFact()
        {
            var builder = new SqlExpressionBuilderSelect();

            builder.From("table", "t");
            builder.Where("t.foo = @foo");

            var param = new SqlParameter("@foo", SqlDbType.Int)
            {
                Value = 5
            };

            builder.BindParameter(param);
            Assert.Equal(1, builder.Parameters.Count());
            Assert.Equal(param, builder.Parameters.First());

            // Rebind by new param
            var newParam = new SqlParameter("@foo", SqlDbType.Int)
            {
                Value = 6
            };

            builder.BindParameter(newParam);
            Assert.Equal(1, builder.Parameters.Count());
            Assert.Equal(newParam, builder.Parameters.First());

            // Rebind by overwrite
            builder.BindParameter("@foo", 7);
            Assert.Equal(1, builder.Parameters.Count());
            Assert.Equal(newParam, builder.Parameters.First());
            Assert.Equal(7, builder.Parameters.First().Value);
        }
        public void BindParameter_ThrowsOnParameterNotFoundFact()
        {
            var builder = new SqlExpressionBuilderSelect();

            builder.From("table", "t");

            Assert.Throws <InvalidOperationException>(() => builder.BindParameter("@foo", DbType.Int32, 12));

            Assert.Throws <InvalidOperationException>(() => builder.BindParameter("@foo", 12));
        }
        public void BindParameter_DoesNotThrowOnSupressedWarningFact()
        {
            var builder = new SqlExpressionBuilderSelect();

            builder.From("table", "t");

            Assert.DoesNotThrow(() => builder.BindParameter("@foo", DbType.Int32, 12, true));
        }
        public void BindParameter_DoesNotThrowOnParameterFoundFact()
        {
            var builder = new SqlExpressionBuilderSelect();

            builder.From("table", "t");

            builder.Where("t.foo = @foo");

            Assert.DoesNotThrow(() => builder.BindParameter("@foo", DbType.Int32, 12));
        }