evcc-io/core/site_circuit_test.go
2025-11-02 17:17:57 +01:00

52 lines
981 B
Go

package core
import (
"testing"
"github.com/evcc-io/evcc/api"
"github.com/evcc-io/evcc/util"
"github.com/evcc-io/evcc/util/config"
"github.com/stretchr/testify/require"
"go.uber.org/mock/gomock"
)
func TestDimming(t *testing.T) {
ctrl := gomock.NewController(t)
meter := api.NewMockMeter(ctrl)
dimmer := api.NewMockDimmer(ctrl)
mm := &struct {
api.Meter
api.Dimmer
}{
Meter: meter,
Dimmer: dimmer,
}
s := &Site{
log: util.NewLogger("foo"),
auxMeters: []config.Device[api.Meter]{config.NewStaticDevice[api.Meter](config.Named{}, mm)},
}
for _, tc := range []struct {
has, want bool
}{
{has: false, want: false},
{has: false, want: true},
{has: true, want: false},
{has: true, want: true},
} {
t.Logf("%+v", tc)
dimmer.EXPECT().Dimmed().Return(tc.has, nil)
if tc.has != tc.want {
dimmer.EXPECT().Dim(tc.want).Return(nil)
}
require.NoError(t, s.dimMeters(tc.want))
if !ctrl.Satisfied() {
ctrl.Finish()
}
}
}