@@ -2,6 +2,7 @@ package value
22
33import  (
44	"database/sql/driver" 
5+ 	"errors" 
56	"reflect" 
67	"testing" 
78	"time" 
@@ -32,12 +33,32 @@ func loadLocation(t *testing.T, name string) *time.Location {
3233	return  loc 
3334}
3435
35- type  testStringValueScanner  struct  {
36- 	field  string 
37- }
36+ type  testStringValueScanner  string 
3837
3938func  (s  * testStringValueScanner ) UnmarshalYDBValue (v  Value ) error  {
40- 	return  CastTo (v , & s .field )
39+ 	var  tmp  string 
40+ 
41+ 	err  :=  CastTo (v , & tmp )
42+ 	if  err  !=  nil  {
43+ 		return  err 
44+ 	}
45+ 
46+ 	* s  =  testStringValueScanner (tmp )
47+ 
48+ 	return  nil 
49+ }
50+ 
51+ type  testStringSqlScanner  string 
52+ 
53+ func  (s  * testStringSqlScanner ) Scan (value  any ) error  {
54+ 	ts , ok  :=  value .(string )
55+ 	if  ! ok  {
56+ 		return  errors .New ("can't cast from "  +  reflect .TypeOf (value ).String () +  " to string" )
57+ 	}
58+ 
59+ 	* s  =  testStringSqlScanner (ts )
60+ 
61+ 	return  nil 
4162}
4263
4364func  TestCastTo (t  * testing.T ) {
@@ -440,7 +461,14 @@ func TestCastTo(t *testing.T) {
440461			name :  xtest .CurrentFileLine (),
441462			value : TextValue ("text-string" ),
442463			dst :   ptr [testStringValueScanner ](),
443- 			exp :   testStringValueScanner {field : "text-string" },
464+ 			exp :   testStringValueScanner ("text-string" ),
465+ 			err :   nil ,
466+ 		},
467+ 		{
468+ 			name :  xtest .CurrentFileLine (),
469+ 			value : TextValue ("text-string" ),
470+ 			dst :   ptr [testStringSqlScanner ](),
471+ 			exp :   testStringSqlScanner ("text-string" ),
444472			err :   nil ,
445473		},
446474	}
0 commit comments