CK.SqlServer.Tests.ISqlConnectionControllerExtensionTests.reading_big_text_with_execute_scalar_fails_limit_is_2033_characters C# (CSharp) Method

reading_big_text_with_execute_scalar_fails_limit_is_2033_characters() private method

        public void reading_big_text_with_execute_scalar_fails_limit_is_2033_characters()
        {
            using( var ctx = new SqlStandardCallContext( TestHelper.Monitor ) )
            {
                var c = ctx[TestHelper.MasterConnectionString];

                string read;

                SqlCommand cFailXml = new SqlCommand( "select * from sys.objects for xml path" );
                read = (string)c.ExecuteScalar( cFailXml );
                read.Should().HaveLength( 2033, "2033 is the upper limit for ExecuteScalar." );

                SqlCommand cFailJson = new SqlCommand( "select * from sys.objects for json auto" );
                read = (string)c.ExecuteScalar( cFailJson );
                read.Should().HaveLength( 2033, "2033 is the upper limit for ExecuteScalar." );

                // Using convert works for Json and Xml.
                SqlCommand cConvJson = new SqlCommand( "select convert( nvarchar(max), (select * from sys.objects for json auto))" );
                string readJsonConvert = (string)c.ExecuteScalar( cConvJson );
                readJsonConvert.Length.Should().BeGreaterThan( 20 * 1024 );

                SqlCommand cConvXml = new SqlCommand( "select convert( nvarchar(max), (select * from sys.objects for xml path))" );
                string readXmlConvert = (string)c.ExecuteScalar( cConvXml );
                readXmlConvert.Length.Should().BeGreaterThan( 20 * 1024 );

                // Using the SqlDataReader works for Json and Xml.
                SqlCommand cReaderJson = new SqlCommand( "select 1, Json = (select * from sys.objects for json auto)" );
                string readJsonViaReader = c.ExecuteSingleRow( cReaderJson, r => r.GetString( 1 ) );
                readJsonViaReader.Length.Should().BeGreaterThan( 20 * 1024 );

                Assert.That( readJsonViaReader, Is.EqualTo( readJsonConvert ) );

                SqlCommand cReaderXml = new SqlCommand( "select Xml = (select * from sys.objects for xml path)" );
                string readXmlViaReader = c.ExecuteSingleRow( cReaderXml, r => r.GetString( 0 ) );
                readXmlViaReader.Length.Should().BeGreaterThan( 20 * 1024 );

                readXmlViaReader.Should().Be( readXmlConvert );
            }
        }