64 lines
1.6 KiB
Go
64 lines
1.6 KiB
Go
package meter
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/evcc-io/evcc/api"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestPV(t *testing.T) {
|
|
m, err := NewConfigurableFromConfig(t.Context(), map[string]any{
|
|
"power": map[string]any{
|
|
"source": "const",
|
|
"value": 1000,
|
|
},
|
|
"maxacpower": 1000,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
// must not have soc/capacity
|
|
_, ok := api.Cap[api.MaxACPowerGetter](m)
|
|
assert.True(t, ok, "MaxACPowerGetter")
|
|
}
|
|
|
|
func TestPVMaxACPowerPlugin(t *testing.T) {
|
|
newMeter := func(maxacpower any) api.Meter {
|
|
m, err := NewConfigurableFromConfig(t.Context(), map[string]any{
|
|
"power": map[string]any{"source": "const", "value": 1000},
|
|
"maxacpower": maxacpower,
|
|
})
|
|
require.NoError(t, err)
|
|
return m
|
|
}
|
|
|
|
m := newMeter(map[string]any{"source": "const", "value": 5000})
|
|
mp, ok := api.Cap[api.MaxACPowerGetter](m)
|
|
require.True(t, ok, "MaxACPowerGetter")
|
|
assert.Equal(t, 5000.0, mp.MaxACPower())
|
|
|
|
// device without rating must not be decorated
|
|
m = newMeter(map[string]any{"source": "error", "error": "ErrNotAvailable"})
|
|
_, ok = api.Cap[api.MaxACPowerGetter](m)
|
|
assert.False(t, ok, "MaxACPowerGetter")
|
|
}
|
|
func TestBattery(t *testing.T) {
|
|
m, err := NewConfigurableFromConfig(t.Context(), map[string]any{
|
|
"power": map[string]any{
|
|
"source": "const",
|
|
"value": 1000,
|
|
},
|
|
"capacity": 23,
|
|
"soc": map[string]any{
|
|
"source": "const",
|
|
"value": 47,
|
|
},
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
_, ok := api.Cap[api.Battery](m)
|
|
assert.True(t, ok, "Battery")
|
|
_, ok = api.Cap[api.BatteryCapacity](m)
|
|
assert.True(t, ok, "BatteryCapacity")
|
|
}
|