@@ -2,6 +2,7 @@ package value
2
2
3
3
import (
4
4
"database/sql/driver"
5
+ "errors"
5
6
"reflect"
6
7
"testing"
7
8
"time"
@@ -32,12 +33,32 @@ func loadLocation(t *testing.T, name string) *time.Location {
32
33
return loc
33
34
}
34
35
35
- type testStringValueScanner struct {
36
- field string
37
- }
36
+ type testStringValueScanner string
38
37
39
38
func (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
41
62
}
42
63
43
64
func TestCastTo (t * testing.T ) {
@@ -440,7 +461,14 @@ func TestCastTo(t *testing.T) {
440
461
name : xtest .CurrentFileLine (),
441
462
value : TextValue ("text-string" ),
442
463
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" ),
444
472
err : nil ,
445
473
},
446
474
}
0 commit comments