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