@@ -68,6 +68,34 @@ public async Task ExecuteScalarAsync_WhenSetYdbParameterThenPrepare_ReturnThisVa
6868 Assert . Equal ( data . Expected , await dbCommand . ExecuteScalarAsync ( ) ) ;
6969 }
7070
71+ [ Theory ]
72+ [ ClassData ( typeof ( YdbParameterTests . TestDataGenerator ) ) ]
73+ public async Task ExecuteScalarAsync_WhenDbTypeIsObject_ReturnThisValue < T > (
74+ YdbParameterTests . Data < T > data )
75+ {
76+ if ( data . IsNullable )
77+ {
78+ return ;
79+ }
80+
81+ await using var connection = new YdbConnection ( ) ;
82+ await connection . OpenAsync ( ) ;
83+
84+ var dbCommand = connection . CreateCommand ( ) ;
85+
86+ dbCommand . CommandText = "SELECT @var;" ;
87+
88+ var dbParameter = new YdbParameter
89+ {
90+ ParameterName = "@var" ,
91+ Value = data . Expected ,
92+ IsNullable = data . IsNullable
93+ } ;
94+ dbCommand . Parameters . Add ( dbParameter ) ;
95+
96+ Assert . Equal ( data . Expected , await dbCommand . ExecuteScalarAsync ( ) ) ;
97+ }
98+
7199 [ Fact ]
72100 public async Task ExecuteScalarAsync_WhenNoDbTypeParameter_ReturnThisValue ( )
73101 {
@@ -404,4 +432,41 @@ public async Task ExecuteScalar_WhenSelectNull_ReturnNull()
404432
405433 Assert . Null ( await new YdbCommand ( ydbConnection ) { CommandText = "SELECT NULL" } . ExecuteScalarAsync ( ) ) ;
406434 }
435+
436+ [ Theory ]
437+ [ InlineData ( "123e4567-e89b-12d3-a456-426614174000" ) ]
438+ [ InlineData ( "2d9e498b-b746-9cfb-084d-de4e1cb4736e" ) ]
439+ [ InlineData ( "6E73B41C-4EDE-4D08-9CFB-B7462D9E498B" ) ]
440+ public async Task Guid_WhenSelectUuid_ReturnThisUuid ( string guid )
441+ {
442+ await using var ydbConnection = new YdbConnection ( ) ;
443+ await ydbConnection . OpenAsync ( ) ;
444+
445+ var actualGuid = await new YdbCommand ( ydbConnection )
446+ { CommandText = $ "SELECT CAST('{ guid } ' AS UUID);" }
447+ . ExecuteScalarAsync ( ) ;
448+
449+ Assert . Equal ( new Guid ( guid ) , actualGuid ) ;
450+ Assert . Equal ( guid . ToLower ( ) , actualGuid ? . ToString ( ) ) ; // Guid.ToString() method represents lowercase
451+ }
452+
453+ [ Theory ]
454+ [ InlineData ( "123e4567-e89b-12d3-a456-426614174000" ) ]
455+ [ InlineData ( "2d9e498b-b746-9cfb-084d-de4e1cb4736e" ) ]
456+ [ InlineData ( "6E73B41C-4EDE-4D08-9CFB-B7462D9E498B" ) ]
457+ public async Task Guid_WhenSetUuid_ReturnThisUtf8Uuid ( string guid )
458+ {
459+ await using var ydbConnection = new YdbConnection ( ) ;
460+ await ydbConnection . OpenAsync ( ) ;
461+
462+ var ydbCommand = new YdbCommand ( ydbConnection )
463+ {
464+ CommandText = "SELECT CAST(@guid AS Text);"
465+ } ;
466+ ydbCommand . Parameters . Add ( new YdbParameter ( "guid" , DbType . Guid , new Guid ( guid ) ) ) ;
467+
468+ var actualGuidText = await ydbCommand . ExecuteScalarAsync ( ) ;
469+
470+ Assert . Equal ( guid . ToLower ( ) , actualGuidText ) ; // Guid.ToString() method represents lowercase
471+ }
407472}
0 commit comments