public void ParametersBuilder_Add_NullValue()
        {
            var subject = new ParametersBuilder();

            // For this test we are assuming that the developer user will have a
            // variable that contains a null value, and that variable is not of just type object.
            string nullString = null;

            subject.And("Param4", nullString);

            var output = subject.GetProcedureParameters().ToArray();

            Assert.AreEqual(1, output.Count());

            Assert.AreEqual("Param4", output[0].Name);
            Assert.IsNull(output[0].GetValue());
        }
        public void ParametersBuilder_Add_AddsOne()
        {
            const string expectedName  = "param1";
            const int    expectedValue = 100;

            var subject = new ParametersBuilder();

            subject.And(expectedName, expectedValue);

            var output = subject.GetProcedureParameters();

            Assert.AreEqual(1, output.Count());

            var onlyParameter = output.First();

            Assert.AreEqual(expectedName, onlyParameter.Name);
            Assert.AreEqual(expectedValue, onlyParameter.GetValue());
        }
        public void ParametersBuilder_Add_AddManyWithChaining()
        {
            var subject = new ParametersBuilder();

            subject
            .And("Param1", 200)
            .And("Param2", "string-value")
            .And("Param3", true);

            var output = subject.GetProcedureParameters().ToArray();

            Assert.AreEqual(3, output.Count());

            Assert.AreEqual("Param1", output[0].Name);
            Assert.AreEqual("Param2", output[1].Name);
            Assert.AreEqual("Param3", output[2].Name);

            Assert.AreEqual(200, output[0].GetValue());
            Assert.AreEqual("string-value", output[1].GetValue());
            Assert.AreEqual(true, output[2].GetValue());
        }