The golang mock package has been archived and is now maintained by uber. > Update, June 2023: This repo and tool are no longer maintained. Please > see go.uber.org/mock for a maintained fork instead. [1] https://github.com/golang/mock [2] https://github.com/uber-go/mock
66 lines
1.7 KiB
Go
66 lines
1.7 KiB
Go
package core
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/evcc-io/evcc/api"
|
|
"github.com/evcc-io/evcc/util"
|
|
"github.com/stretchr/testify/assert"
|
|
"go.uber.org/mock/gomock"
|
|
)
|
|
|
|
func TestEffectiveLimitSoc(t *testing.T) {
|
|
lp := NewLoadpoint(util.NewLogger("foo"), nil)
|
|
assert.Equal(t, 100, lp.effectiveLimitSoc())
|
|
}
|
|
|
|
func TestEffectiveMinMaxCurrent(t *testing.T) {
|
|
tc := []struct {
|
|
chargerMin, chargerMax float64
|
|
vehicleMin, vehicleMax float64
|
|
effectiveMin, effectiveMax float64
|
|
}{
|
|
{0, 0, 0, 0, 6, 16},
|
|
{1, 10, 0, 0, 1, 10}, // charger lower
|
|
{10, 20, 0, 0, 10, 16}, // charger higher - max ignored
|
|
{0, 0, 1, 10, 6, 10}, // vehicle lower - min ignored
|
|
{0, 0, 10, 20, 10, 16}, // vehicle higher - max ignored
|
|
{1, 10, 2, 12, 1, 10}, // charger + vehicle lower
|
|
{10, 20, 12, 22, 10, 16}, // charger + vehicle higher
|
|
}
|
|
|
|
for _, tc := range tc {
|
|
t.Logf("%+v", tc)
|
|
ctrl := gomock.NewController(t)
|
|
|
|
lp := NewLoadpoint(util.NewLogger("foo"), nil)
|
|
lp.charger = api.NewMockCharger(ctrl)
|
|
|
|
if tc.chargerMin+tc.chargerMax > 0 {
|
|
currentLimiter := api.NewMockCurrentLimiter(ctrl)
|
|
currentLimiter.EXPECT().GetMinMaxCurrent().Return(tc.chargerMin, tc.chargerMax, nil).AnyTimes()
|
|
|
|
lp.charger = struct {
|
|
api.Charger
|
|
api.CurrentLimiter
|
|
}{
|
|
Charger: lp.charger,
|
|
CurrentLimiter: currentLimiter,
|
|
}
|
|
}
|
|
|
|
if tc.vehicleMin+tc.vehicleMax > 0 {
|
|
vehicle := api.NewMockVehicle(ctrl)
|
|
ac := api.ActionConfig{
|
|
MinCurrent: tc.vehicleMin,
|
|
MaxCurrent: tc.vehicleMax,
|
|
}
|
|
vehicle.EXPECT().OnIdentified().Return(ac).AnyTimes()
|
|
|
|
lp.vehicle = vehicle
|
|
}
|
|
|
|
assert.Equal(t, tc.effectiveMin, lp.effectiveMinCurrent())
|
|
assert.Equal(t, tc.effectiveMax, lp.effectiveMaxCurrent())
|
|
}
|
|
}
|