public async Task ExecuteXmlReaderAsync_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>();

            XElement result = await program.ExecuteXmlReaderAsync(
                async (reader, token) => XElement.Load(reader),
                inputVal,
                inputOutput,
                output);

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

            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);
        }
        public async Task ExecuteXmlReaderAsync_WithNoParameters_ExecuteReturnsExpectedString()
        {
            SqlProgram program = await SqlProgram.Create((Connection)DifferentLocalDatabaseConnectionString, name : "spReturnsXml");

            XElement result = await program.ExecuteXmlReaderAsync(async (reader, token) => XElement.Load(reader));

            Assert.AreEqual("<foo>bar</foo>", result.ToString());
        }
        public async Task ExecuteXmlReaderAsync_WithParameters_ReturnedExpectedXml()
        {
            SqlProgram <XElement> program =
                await SqlProgram <XElement> .Create(
                    (Connection)DifferentLocalDatabaseConnectionString,
                    name : "spTakesXml");

            XElement element = XElement.Parse("<foo>bar</foo>");

            XElement result = await program.ExecuteXmlReaderAsync(async (reader, token) => XElement.Load(reader), element);

            Assert.AreEqual(element.ToString(), result.ToString());
        }