Skip to content

Commit 2be88fd

Browse files
author
James Cor
committed
add unit tests for ConvertRound
1 parent 82cfaf5 commit 2be88fd

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

sql/types/number_test.go

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,86 @@ func TestNumberConvert(t *testing.T) {
242242
}
243243
}
244244

245+
func TestNumberConvertRound(t *testing.T) {
246+
ctx := sql.NewEmptyContext()
247+
tests := []struct {
248+
typ sql.Type
249+
inp interface{}
250+
exp interface{}
251+
err bool
252+
inRange sql.ConvertInRange
253+
}{
254+
// Boolean, Int8, Uint8, ... all use convertToInt64
255+
{
256+
typ: Int64,
257+
inp: "1.1",
258+
exp: int64(1),
259+
err: false,
260+
inRange: sql.InRange,
261+
},
262+
{
263+
typ: Int64,
264+
inp: "1.9",
265+
exp: int64(2),
266+
err: false,
267+
inRange: sql.InRange,
268+
},
269+
{
270+
typ: Int64,
271+
inp: "100.1ABC",
272+
exp: int64(100),
273+
err: true,
274+
inRange: sql.InRange,
275+
},
276+
{
277+
typ: Int64,
278+
inp: "100.9ABC",
279+
exp: int64(101),
280+
err: true,
281+
inRange: sql.InRange,
282+
},
283+
{
284+
typ: Uint64,
285+
inp: "1.1",
286+
exp: uint64(1),
287+
err: false,
288+
inRange: sql.InRange,
289+
},
290+
{
291+
typ: Uint64,
292+
inp: "1.9",
293+
exp: uint64(2),
294+
err: false,
295+
inRange: sql.InRange,
296+
},
297+
{
298+
typ: Uint64,
299+
inp: "100.1ABC",
300+
exp: uint64(100),
301+
err: true,
302+
inRange: sql.InRange,
303+
},
304+
{
305+
typ: Uint64,
306+
inp: "100.9ABC",
307+
exp: uint64(101),
308+
err: true,
309+
inRange: sql.InRange,
310+
},
311+
}
312+
313+
for _, test := range tests {
314+
t.Run(fmt.Sprintf("%v %v %v", test.typ, test.inp, test.exp), func(t *testing.T) {
315+
val, inRange, err := test.typ.(sql.RoundingNumberType).ConvertRound(ctx, test.inp)
316+
if test.err {
317+
assert.True(t, sql.ErrTruncatedIncorrect.Is(err))
318+
}
319+
assert.Equal(t, test.exp, val)
320+
assert.Equal(t, test.inRange, inRange)
321+
})
322+
}
323+
}
324+
245325
func TestNumberSQL_BooleanFromBoolean(t *testing.T) {
246326
val, err := Boolean.SQL(sql.NewEmptyContext(), nil, true)
247327
require.NoError(t, err)

0 commit comments

Comments
 (0)