@@ -1166,6 +1166,147 @@ func TestCastNumbers(t *testing.T) {
11661166 })
11671167 }
11681168 }
1169+ for _ , tt := range []struct {
1170+ v Value
1171+ dst interface {}
1172+ result interface {}
1173+ error bool
1174+ }{
1175+ {
1176+ v : Int8Value (- 128 ),
1177+ dst : func (v string ) * string { return & v }("" ),
1178+ result : func (v string ) * string { return & v }("-128" ),
1179+ },
1180+ {
1181+ v : Int8Value (127 ),
1182+ dst : func (v string ) * string { return & v }("" ),
1183+ result : func (v string ) * string { return & v }("127" ),
1184+ },
1185+ {
1186+ v : Uint8Value (128 ),
1187+ dst : func (v string ) * string { return & v }("" ),
1188+ result : func (v string ) * string { return & v }("128" ),
1189+ },
1190+ {
1191+ v : Int8Value (- 128 ),
1192+ dst : func (v []byte ) * []byte { return & v }([]byte ("" )),
1193+ result : func (v []byte ) * []byte { return & v }([]byte ("-128" )),
1194+ },
1195+ {
1196+ v : Int8Value (127 ),
1197+ dst : func (v []byte ) * []byte { return & v }([]byte ("" )),
1198+ result : func (v []byte ) * []byte { return & v }([]byte ("127" )),
1199+ },
1200+ {
1201+ v : Uint8Value (128 ),
1202+ dst : func (v []byte ) * []byte { return & v }([]byte ("" )),
1203+ result : func (v []byte ) * []byte { return & v }([]byte ("128" )),
1204+ },
1205+ {
1206+ v : Int16Value (- 32768 ),
1207+ dst : func (v string ) * string { return & v }("" ),
1208+ result : func (v string ) * string { return & v }("-32768" ),
1209+ },
1210+ {
1211+ v : Int16Value (32767 ),
1212+ dst : func (v string ) * string { return & v }("" ),
1213+ result : func (v string ) * string { return & v }("32767" ),
1214+ },
1215+ {
1216+ v : Uint16Value (32768 ),
1217+ dst : func (v string ) * string { return & v }("" ),
1218+ result : func (v string ) * string { return & v }("32768" ),
1219+ },
1220+ {
1221+ v : Int16Value (- 32768 ),
1222+ dst : func (v []byte ) * []byte { return & v }([]byte ("" )),
1223+ result : func (v []byte ) * []byte { return & v }([]byte ("-32768" )),
1224+ },
1225+ {
1226+ v : Int16Value (32767 ),
1227+ dst : func (v []byte ) * []byte { return & v }([]byte ("" )),
1228+ result : func (v []byte ) * []byte { return & v }([]byte ("32767" )),
1229+ },
1230+ {
1231+ v : Uint16Value (32768 ),
1232+ dst : func (v []byte ) * []byte { return & v }([]byte ("" )),
1233+ result : func (v []byte ) * []byte { return & v }([]byte ("32768" )),
1234+ },
1235+ {
1236+ v : Int32Value (- 2147483648 ),
1237+ dst : func (v string ) * string { return & v }("" ),
1238+ result : func (v string ) * string { return & v }("-2147483648" ),
1239+ },
1240+ {
1241+ v : Int32Value (2147483647 ),
1242+ dst : func (v string ) * string { return & v }("" ),
1243+ result : func (v string ) * string { return & v }("2147483647" ),
1244+ },
1245+ {
1246+ v : Uint32Value (2147483648 ),
1247+ dst : func (v string ) * string { return & v }("" ),
1248+ result : func (v string ) * string { return & v }("2147483648" ),
1249+ },
1250+ {
1251+ v : Int32Value (- 2147483648 ),
1252+ dst : func (v []byte ) * []byte { return & v }([]byte ("" )),
1253+ result : func (v []byte ) * []byte { return & v }([]byte ("-2147483648" )),
1254+ },
1255+ {
1256+ v : Int32Value (2147483647 ),
1257+ dst : func (v []byte ) * []byte { return & v }([]byte ("" )),
1258+ result : func (v []byte ) * []byte { return & v }([]byte ("2147483647" )),
1259+ },
1260+ {
1261+ v : Uint32Value (2147483648 ),
1262+ dst : func (v []byte ) * []byte { return & v }([]byte ("" )),
1263+ result : func (v []byte ) * []byte { return & v }([]byte ("2147483648" )),
1264+ },
1265+ {
1266+ v : Int64Value (- 9223372036854775808 ),
1267+ dst : func (v string ) * string { return & v }("" ),
1268+ result : func (v string ) * string { return & v }("-9223372036854775808" ),
1269+ },
1270+ {
1271+ v : Int64Value (9223372036854775807 ),
1272+ dst : func (v string ) * string { return & v }("" ),
1273+ result : func (v string ) * string { return & v }("9223372036854775807" ),
1274+ },
1275+ {
1276+ v : Uint64Value (9223372036854775808 ),
1277+ dst : func (v string ) * string { return & v }("" ),
1278+ result : func (v string ) * string { return & v }("9223372036854775808" ),
1279+ },
1280+ {
1281+ v : Int64Value (- 9223372036854775808 ),
1282+ dst : func (v []byte ) * []byte { return & v }([]byte ("" )),
1283+ result : func (v []byte ) * []byte { return & v }([]byte ("-9223372036854775808" )),
1284+ },
1285+ {
1286+ v : Int64Value (9223372036854775807 ),
1287+ dst : func (v []byte ) * []byte { return & v }([]byte ("" )),
1288+ result : func (v []byte ) * []byte { return & v }([]byte ("9223372036854775807" )),
1289+ },
1290+ {
1291+ v : Uint64Value (9223372036854775808 ),
1292+ dst : func (v []byte ) * []byte { return & v }([]byte ("" )),
1293+ result : func (v []byte ) * []byte { return & v }([]byte ("9223372036854775808" )),
1294+ },
1295+ } {
1296+ t .Run (fmt .Sprintf ("%s(%s)→%s" ,
1297+ tt .v .Type ().Yql (), tt .v .Yql (), reflect .ValueOf (tt .dst ).Type ().Elem ()),
1298+ func (t * testing.T ) {
1299+ if err := CastTo (tt .v , tt .dst ); (err != nil ) != tt .error {
1300+ t .Errorf ("castTo() error = %v, want %v" , err , tt .error )
1301+ } else if ! reflect .DeepEqual (tt .dst , tt .result ) {
1302+ t .Errorf ("castTo() result = %+v, want %+v" ,
1303+ reflect .ValueOf (tt .dst ).Elem (),
1304+ reflect .ValueOf (tt .result ).Elem (),
1305+ )
1306+ }
1307+ },
1308+ )
1309+ }
11691310}
11701311
11711312func TestCastList (t * testing.T ) {
0 commit comments