[#493] node/config: Implement integer casters

Implement `Int` / `Uint` functions which casts value to `int64` / `uint64`.
Implement safe functions `IntSafe` / `UintSafe`.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2021-06-01 19:45:26 +03:00 committed by Leonard Lyubich
parent efcd12c71e
commit 2bbd4d0ee3
4 changed files with 107 additions and 1 deletions

View file

@ -62,3 +62,37 @@ func TestDuration(t *testing.T) {
require.Equal(t, time.Duration(0), val)
})
}
func TestNumbers(t *testing.T) {
configtest.ForEachFileType("test/config", func(c *config.Config) {
c = c.Sub("number")
const (
intPos = "int_pos"
intNeg = "int_neg"
fractPos = "fract_pos"
fractNeg = "fract_neg"
incorrect = "incorrect"
)
require.EqualValues(t, 1, config.Int(c, intPos))
require.EqualValues(t, 1, config.Uint(c, intPos))
require.EqualValues(t, -1, config.Int(c, intNeg))
require.Panics(t, func() { config.Uint(c, intNeg) })
require.EqualValues(t, 2, config.Int(c, fractPos))
require.EqualValues(t, 2, config.Uint(c, fractPos))
require.EqualValues(t, -2, config.Int(c, fractNeg))
require.Panics(t, func() { config.Uint(c, fractNeg) })
require.Panics(t, func() { config.Int(c, incorrect) })
require.Panics(t, func() { config.Uint(c, incorrect) })
require.Zero(t, config.IntSafe(c, incorrect))
require.Zero(t, config.UintSafe(c, incorrect))
})
}