Exemplo n.º 1
0
        public async Task ExecuteReaderAllAsync_WithAllParametersSet_ExecutesAndReturnsExpectedResult()
        {
            SqlProgram <string, int, decimal, bool> readerTest = await SqlProgram <string, int, decimal, bool> .Create(
                new LoadBalancedConnection(LocalDatabaseConnectionString, LocalDatabaseCopyConnectionString), "spReturnsTable");

            Task <IEnumerable <dynamic> > result = readerTest.ExecuteReaderAllAsync(
                c =>
            {
                c.SetParameter("@stringParam", AString);
                c.SetParameter("@intParam", AInt);
                c.SetParameter("@decimalParam", ADecimal);
                c.SetParameter("@boolParam", ABool);
            },
                async(reader, token) =>
            {
                if (await reader.ReadAsync(token))
                {
                    return(CreateDatabaseResult(reader));
                }

                throw new Exception("Critical Test Error");
            });

            Assert.IsNotNull(result);
            result.Wait();

            foreach (dynamic o in result.Result)
            {
                Assert.AreEqual(AString, o.Name);
                Assert.AreEqual(AInt, o.Age);
                Assert.AreEqual(ADecimal, o.Balance);
                Assert.AreEqual(ABool, o.IsValued);
            }
        }
Exemplo n.º 2
0
        public async Task ExecuteReaderAllAsync_ExecutesAndReturnsExpectedResult()
        {
            SqlProgram program = await SqlProgram.Create(new LoadBalancedConnection(LocalDatabaseConnectionString, LocalDatabaseCopyConnectionString), "spReturnsTable");

            Task readerTask = program.ExecuteReaderAllAsync();

            Assert.IsNotNull(readerTask);
        }
Exemplo n.º 3
0
        public async Task ExecuteReaderAllAsync_WithOutputParametersAndMultiOut_ExecutesSuccessfully()
        {
            SqlProgram <int, Out <int>, Out <int> > program =
                await SqlProgram <int, Out <int>, Out <int> > .Create(
                    new LoadBalancedConnection(LocalDatabaseConnectionString, LocalDatabaseCopyConnectionString),
                    "spOutputParameters");

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

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

            string[] result = (await program.ExecuteReaderAllAsync(
                                   async(reader, token) =>
            {
                Assert.IsTrue(await reader.ReadAsync());

                string res = reader.GetString(0);

                Assert.IsFalse(await reader.ReadAsync());
                Assert.IsFalse(await reader.NextResultAsync());

                return(res);
            },
                                   inputVal,
                                   inputOutput,
                                   output)).ToArray();

            Assert.AreEqual(2, result.Length);
            Assert.IsTrue(result.All(i => i == "<foo>bar</foo>"));

            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);

            Assert.IsTrue(inputOutput.All(o => o.OutputValue.Value == inputOutputVal * 2));
            Assert.IsTrue(output.All(o => o.OutputValue.Value == inputVal));
        }
Exemplo n.º 4
0
        public async Task ExecuteReaderAllAsync_WithOutputParametersAndOut_ThrowsArgumentException()
        {
            SqlProgram <int, Out <int>, Out <int> > program =
                await SqlProgram <int, Out <int>, Out <int> > .Create(
                    new LoadBalancedConnection(LocalDatabaseConnectionString, LocalDatabaseCopyConnectionString),
                    "spOutputParameters");

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

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

            await program.ExecuteReaderAllAsync(
                async (reader, token) =>
            {
                Assert.Fail("Shouldnt reach this point.");
            },
                inputVal,
                inputOutput,
                output);
        }