예제 #1
0
        public async Task Test_UnmappedProgram_RunsAndReturnsExpectedResult()
        {
            DatabasesConfiguration configuration   = DatabasesConfiguration.Active;
            SqlProgram             unmappedProgram = await configuration.GetSqlProgram("test2", "spReturnsScalar");

            Assert.AreEqual("spReturnsScalar", unmappedProgram.Name);
            Assert.AreEqual("HelloWorld", await unmappedProgram.ExecuteScalarAsync <string>());
        }
예제 #2
0
        public async Task ExecuteScalarAsync_ExecutesAndReturnsExpectedResult()
        {
            SqlProgram scalarTest =
                await SqlProgram.Create((Connection)DifferentLocalDatabaseConnectionString, "spReturnsScalar");

            Task <string> task = scalarTest.ExecuteScalarAsync <string>();

            Assert.IsNotNull(task);
            task.Wait();
            Assert.IsTrue(task.IsCompleted);
            Assert.AreEqual("HelloWorld", task.Result);
        }
예제 #3
0
        public async Task ExecuteScalarAsync_WithParameter_ExecutesAndReturnsExpectedResult()
        {
            SqlProgram <string> scalarTest =
                await SqlProgram <string> .Create((Connection)DifferentLocalDatabaseConnectionString, "spTakesParamAndReturnsScalar", "@firstName");

            string        randomString = Random.RandomString(10, false);
            Task <string> task         = scalarTest.ExecuteScalarAsync <string>(randomString);

            Assert.IsNotNull(task);
            task.Wait();
            Assert.IsTrue(task.IsCompleted);
            Assert.AreEqual("Hello " + randomString, task.Result);
        }
예제 #4
0
        public async Task Test_UnmappedProgramOnDifferentConnection_RunsAndReturnsExpectedResult()
        {
            DatabasesConfiguration configuration = DatabasesConfiguration.Active;

            // Get a program which does not use the default lbc.
            SqlProgram diffConnection = await configuration.GetSqlProgram("test", "spReturnsScalarString");

            // Check name was not mapped
            Assert.AreEqual("spReturnsScalarString", diffConnection.Name);

            // Check the sproc runs
            Assert.AreEqual("HelloWorld", await diffConnection.ExecuteScalarAsync <string>());
        }
예제 #5
0
        public async Task ExecuteScalarAsync_WithParameterSetViaAction_ExecutesAndReturnsExpectedResult()
        {
            SqlProgram <string> scalarTest =
                await SqlProgram <string> .Create((Connection)DifferentLocalDatabaseConnectionString, "spTakesParamAndReturnsScalar");

            string        name = Random.RandomString(10, false);
            Task <string> task = scalarTest.ExecuteScalarAsync <string>(c => c.SetParameter("@firstName", name));

            Assert.IsNotNull(task);
            task.Wait();
            Assert.IsTrue(task.IsCompleted);

            // Note we won't get the full GUID back as the name is truncated.
            Assert.AreEqual("Hello " + name, task.Result);
        }
예제 #6
0
        public async Task ExecuteScalarAsync_WithOutputParameters_ExecutesSuccessfully()
        {
            SqlProgram <int, Out <int>, Out <int> > program =
                await SqlProgram <int, Out <int>, Out <int> > .Create((Connection)LocalDatabaseConnectionString, "spOutputParameters");

            const int inputVal       = 123;
            const int inputOutputVal = 321;

            Out <int> inputOutput = new Out <int>(inputOutputVal);
            Out <int> output      = new Out <int>();

            string scalarResult = await program.ExecuteScalarAsync <string>(inputVal, inputOutput, output);

            Assert.AreEqual("<foo>bar</foo>", scalarResult);

            Assert.IsNull(inputOutput.OutputError, inputOutput.OutputError?.Message);
            Assert.IsNull(output.OutputError, output.OutputError?.Message);

            Assert.AreEqual(inputOutputVal * 2, inputOutput.OutputValue.Value);
            Assert.AreEqual(inputVal, output.OutputValue.Value);
        }
예제 #7
0
        public async Task TestScalarStringReturnsExpectedValue()
        {
            SqlProgram program =
                await
                DatabasesConfiguration.Active.GetSqlProgram(
                    "test",
                    ReturnsScalarProcedureName,
                    null,
                    true,
                    false);

            Assert.IsNotNull(program, "Program is null");

            string helloWorld = await program.ExecuteScalarAsync <string>();

            Assert.IsTrue(
                String.Equals(helloWorld, ReturnsScalarProcedureResult),
                String.Format(
                    "The values {0} and {1} are not equal",
                    helloWorld,
                    ReturnsScalarProcedureResult));
        }
예제 #8
0
        public async Task TestSqlProgram_ScalarWithParameters()
        {
            const string  stringParam  = "System";
            const int     intParam     = -1;
            const decimal decimalParam = 100M;
            const bool    boolParam    = true;

            string expectedResult = String.Format(
                "{0} - {1} - {2:0.00} - {3}",
                stringParam,
                intParam,
                decimalParam,
                Convert.ToByte(boolParam));

            SqlProgram <string, int, decimal, bool> program =
                await DatabasesConfiguration.Active.GetSqlProgram <string, int, decimal, bool>(
                    "test",
                    ReturnsScalarWithParamsProcedureName,
                    "@stringParam",
                    "@intParam",
                    "@decimalParam",
                    "@boolParam");

            Assert.IsNotNull(program);

            string actualResult =
                await program.ExecuteScalarAsync <string>(stringParam, intParam, decimalParam, boolParam);

            Assert.AreEqual(
                expectedResult,
                actualResult,
                String.Format(
                    "The string '{0}' (expected) is not equal to '{1}' (actual)",
                    expectedResult,
                    actualResult));
        }