136 lines
3.2 KiB
Go
136 lines
3.2 KiB
Go
package tools
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestNewThresholdConfigFromJson(t *testing.T) {
|
|
type args struct {
|
|
fileName string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want *ThresholdConfig
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "default config",
|
|
args: args{
|
|
fileName: "test_data/config.json",
|
|
},
|
|
want: &defaultThresholdConfig,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := NewThresholdConfigFromJson(tt.args.fileName)
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("NewThresholdConfigFromJson() error = %v, wantErr %v", err, tt.wantErr)
|
|
return
|
|
}
|
|
if !reflect.DeepEqual(*got, *tt.want) {
|
|
t.Errorf("NewThresholdConfigFromJson() got = %v, want %v", got, tt.want)
|
|
}
|
|
if !reflect.DeepEqual(got.MinValid, tt.want.MinValid) {
|
|
t.Errorf("NewThresholdConfigFromJson(), bad minValid value: got = %v, want %v", got.MinValid, tt.want.MinValid)
|
|
}
|
|
if !reflect.DeepEqual(got.ThresholdSteps, tt.want.ThresholdSteps) {
|
|
t.Errorf("NewThresholdConfigFromJson(), bad ThresholdSteps: got = %v, want %v", got.ThresholdSteps, tt.want.ThresholdSteps)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestThresholdConfig_ValueOf(t *testing.T) {
|
|
type fields struct {
|
|
ThresholdSteps []float64
|
|
MinValue int
|
|
Data []int
|
|
}
|
|
type args struct {
|
|
pwm int
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
fields fields
|
|
args args
|
|
want float64
|
|
}{
|
|
{
|
|
name: "big value",
|
|
fields: fields{
|
|
ThresholdSteps: defaultThresholdConfig.ThresholdSteps,
|
|
MinValue: defaultThresholdConfig.MinValid,
|
|
Data: defaultThresholdConfig.Data,
|
|
},
|
|
args: args{
|
|
pwm: 11000.,
|
|
},
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "little value",
|
|
fields: fields{
|
|
ThresholdSteps: defaultThresholdConfig.ThresholdSteps,
|
|
MinValue: defaultThresholdConfig.MinValid,
|
|
Data: defaultThresholdConfig.Data,
|
|
},
|
|
args: args{
|
|
pwm: defaultThresholdConfig.MinValid - 1,
|
|
},
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "pwm at limit",
|
|
fields: fields{
|
|
ThresholdSteps: defaultThresholdConfig.ThresholdSteps,
|
|
MinValue: defaultThresholdConfig.MinValid,
|
|
Data: defaultThresholdConfig.Data,
|
|
},
|
|
args: args{
|
|
pwm: defaultThresholdConfig.Data[2],
|
|
},
|
|
want: defaultThresholdConfig.ThresholdSteps[2],
|
|
},
|
|
{
|
|
name: "between 2 limits",
|
|
fields: fields{
|
|
ThresholdSteps: defaultThresholdConfig.ThresholdSteps,
|
|
MinValue: defaultThresholdConfig.MinValid,
|
|
Data: defaultThresholdConfig.Data,
|
|
},
|
|
args: args{
|
|
pwm: 800,
|
|
},
|
|
want: 0.275,
|
|
},
|
|
{
|
|
name: "over last value and > minValue",
|
|
fields: fields{
|
|
ThresholdSteps: defaultThresholdConfig.ThresholdSteps,
|
|
MinValue: defaultThresholdConfig.MinValid,
|
|
Data: defaultThresholdConfig.Data,
|
|
},
|
|
args: args{
|
|
pwm: defaultThresholdConfig.MinValid + 3,
|
|
},
|
|
want: 1.,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
f := &ThresholdConfig{
|
|
ThresholdSteps: tt.fields.ThresholdSteps,
|
|
MinValid: tt.fields.MinValue,
|
|
Data: tt.fields.Data,
|
|
}
|
|
got := f.ValueOf(tt.args.pwm)
|
|
if !reflect.DeepEqual(got, tt.want) {
|
|
t.Errorf("ValueOf() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|