Simplify dummy meter to use power instead of current

This commit is contained in:
andig 2020-05-02 11:02:10 +02:00
parent 73753e1212
commit 32bc279dba
3 changed files with 23 additions and 44 deletions

View file

@ -8,20 +8,14 @@ import (
// It uses the charger's actual or max current to calculate power consumption.
type ChargeMeter struct {
sync.Mutex
Phases int64
Voltage float64
power float64
power float64
}
func currentToPower(current, voltage float64, phases int64) float64 {
return float64(phases) * current * voltage
}
// SetChargeCurrent updates meter's current power based on actual current
func (m *ChargeMeter) SetChargeCurrent(current int64) {
// SetPower updates meter's current power
func (m *ChargeMeter) SetPower(power float64) {
m.Lock()
defer m.Unlock()
m.power = currentToPower(float64(current), m.Voltage, m.Phases)
m.power = power
}
// CurrentPower implements the Meter.CurrentPower interface

View file

@ -6,31 +6,18 @@ import (
"github.com/golang/mock/gomock"
)
func TestProxyMeterSinglePhase(t *testing.T) {
func TestProxyChargeMeter(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()
tc := []struct {
phases int64
voltage float64
current int64
power float64
}{
{1, 100, 10, 1000},
{3, 200, 1, 600},
}
tc := []float64{600, 1000, 2000}
m := ChargeMeter{}
for _, tc := range tc {
m := ChargeMeter{
Phases: tc.phases,
Voltage: tc.voltage,
}
for _, f := range tc {
m.SetPower(f)
m.SetChargeCurrent(tc.current)
if p, err := m.CurrentPower(); p != tc.power || err != nil {
if p, err := m.CurrentPower(); p != f || err != nil {
t.Errorf("power: %.1f %v", p, err)
}
}
}