64 lines
3.0 KiB
Go
64 lines
3.0 KiB
Go
// -*- Mode: Go; indent-tabs-mode: t -*-
|
|
//
|
|
// Copyright (C) 2019-2021 IOTech Ltd
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package transformer
|
|
|
|
import (
|
|
"math"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func Test_checkTransformedValueInRange(t *testing.T) {
|
|
var tests = []struct {
|
|
name string
|
|
origin interface{}
|
|
transformed float64
|
|
expected bool
|
|
}{
|
|
{"valid - uint8 in range", uint8(10), float64(math.MaxUint8), true},
|
|
{"invalid - uint8 out of range", uint8(10), float64(math.MaxUint8 + 1), false},
|
|
{"invalid - uint8 transformed to float", uint8(10), float64(123.456), false},
|
|
{"invalid - uint8 transformed to signed number", uint8(10), float64(-123), false},
|
|
{"valid - uint16 in range", uint16(10), float64(math.MaxUint16), true},
|
|
{"invalid - uint16 out of range", uint16(10), float64(math.MaxUint16 + 1), false},
|
|
{"invalid - uint16 transformed to float", uint16(10), float64(123.456), false},
|
|
{"invalid - uint16 transformed to signed number", uint16(10), float64(-123), false},
|
|
{"valid - uint32 in range", uint32(10), float64(math.MaxUint32), true},
|
|
{"invalid - uint32 out of range", uint32(10), float64(math.MaxUint32 + 1), false},
|
|
{"invalid - uint32 transformed to float", uint32(10), float64(123.456), false},
|
|
{"invalid - uint32 transformed to signed number", uint32(10), float64(-123), false},
|
|
{"valid - uint64 in range", uint64(10), float64(math.MaxUint64), true},
|
|
{"invalid - uint64 out of range", uint64(10), float64(math.MaxUint64 * 2), false},
|
|
{"invalid - uint64 transformed to float", uint64(10), float64(123.456), false},
|
|
{"invalid - uint64 transformed to signed number", uint64(10), float64(-123), false},
|
|
{"valid - int8 in range", int8(10), float64(math.MaxInt8), true},
|
|
{"invalid - int8 out of range", int8(10), float64(math.MaxInt8 + 1), false},
|
|
{"invalid - int8 transformed to float", int8(10), float64(-123.456), false},
|
|
{"valid - int16 in range", int16(10), float64(math.MaxInt16), true},
|
|
{"invalid - int16 out of range", int16(10), float64(math.MaxInt16 + 1), false},
|
|
{"invalid - int16 transformed to float", int16(10), float64(-123.456), false},
|
|
{"valid - int32 in range", int32(10), float64(math.MaxInt32), true},
|
|
{"invalid - int32 out of range", int32(10), float64(math.MaxInt32 + 1), false},
|
|
{"invalid - int32 transformed to float", int32(10), float64(-123.456), false},
|
|
{"valid - int64 in range", int64(10), float64(math.MaxInt64), true},
|
|
{"invalid - int64 out of range", int64(10), float64(math.MaxUint64), false},
|
|
{"invalid - int64 transformed to float", int64(10), float64(-123.456), false},
|
|
{"valid - float32 in range", float32(10), float64(math.MaxFloat32), true},
|
|
{"invalid - float32 out of range", float32(10), float64(math.MaxFloat32 * 2), false},
|
|
{"valid - float64 in range", float64(10), float64(math.MaxFloat64), true},
|
|
{"invalid - unsupported origin value type", "invalid", float64(0), false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
res := checkTransformedValueInRange(tt.origin, tt.transformed)
|
|
assert.Equal(t, tt.expected, res)
|
|
})
|
|
}
|
|
}
|