Skip to content
Snippets Groups Projects
Commit b1136ef9 authored by ko_oler's avatar ko_oler
Browse files

правки по ПР: интервал от -1<<53+1 до 1<<53-1.

parent d478706c
No related branches found
No related tags found
No related merge requests found
......@@ -10,6 +10,8 @@ import (
const (
NumberFormatInt = "int"
NumberFormatFloat = "float"
maxInt = 1<<53 - 1
minInt = -1<<53 + 1
)
var numberType = &NumberType{}
......@@ -88,8 +90,8 @@ func (NumberType) decode(_ context.Context, field *Field, v interface{}) (interf
case uint64:
return i, nil
case float64:
if i >= math.MaxInt64 || i <= math.MinInt64 {
return nil, errors.Errorf("the passed value %f must be no more than %d and no less than %d", i, math.MaxInt64, math.MinInt64)
if i > maxInt || i < minInt {
return nil, errors.Errorf("the passed value %f must be in the range from %d to %d", i, maxInt, minInt)
}
return int64(math.Round(i)), nil
}
......
......@@ -22,17 +22,19 @@ func TestNumberField_Decode(t *testing.T) {
{"Correct", Number("int"), 2.6, int64(3), false}, // #5
{"MaxInt64", Number(NumberFormatInt), int64(math.MaxInt64), int64(math.MaxInt64), false}, // #6
{"MinInt64", Number(NumberFormatInt), int64(math.MinInt64), int64(math.MinInt64), false}, // #7
{"Convert error", Number(NumberFormatInt), math.MaxFloat64, nil, true}, // #8
{"Convert error", Number(NumberFormatInt), -9223372036854776000.0, nil, true}, // #9
{"Convert error", Number(NumberFormatInt), 9223372036854776000.0, nil, true}, // #10
{"Convert error", Number(NumberFormatInt), float64(math.MaxInt64), nil, true}, // #11
{"Convert error", Number(NumberFormatInt), float64(math.MinInt64), nil, true}, // #12
{"maxInt in float", Number(NumberFormatInt), float64(maxInt), int64(maxInt), false}, // #8
{"minInt in float", Number(NumberFormatInt), float64(minInt), int64(minInt), false}, // #9
{"Convert error", Number(NumberFormatInt), math.MaxFloat64, nil, true}, // #10
{"Convert error", Number(NumberFormatInt), -9223372036854776000.0, nil, true}, // #11
{"Convert error", Number(NumberFormatInt), 9223372036854776000.0, nil, true}, // #12
{"Convert error", Number(NumberFormatInt), float64(math.MaxInt64), nil, true}, // #13
{"Convert error", Number(NumberFormatInt), float64(math.MinInt64), nil, true}, // #14
{"Correct", Number("float"), int8(2), 2.0, false}, // #13
{"Correct", Number("float"), 2.2, 2.2, false}, // #14
{"Correct", Number("float"), 2, 2.0, false}, // #15
{"Correct", Number("float"), float32(2.2), 2.200000047683716, false}, // #16
{"Correct", Number("float"), int64(2), 2.0, false}, // #17
{"Correct", Number("float"), int8(2), 2.0, false}, // #15
{"Correct", Number("float"), 2.2, 2.2, false}, // #16
{"Correct", Number("float"), 2, 2.0, false}, // #17
{"Correct", Number("float"), float32(2.2), 2.200000047683716, false}, // #18
{"Correct", Number("float"), int64(2), 2.0, false}, // #19
{"Wrong data", Number("int"), "", nil, true}, // #0
{"Wrong data", Number("int"), []byte(""), nil, true}, // #1
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment