flucky/pkg/types/sensor_test.go

68 lines
2.4 KiB
Go

package types_test
import (
"testing"
"git.cryptic.systems/volker.raschek/flucky/pkg/types"
"github.com/stretchr/testify/require"
)
func TestFilterSensorByMeasuredValueTypes(t *testing.T) {
require := require.New(t)
testCases := []struct {
sensors []*types.Sensor
expectedSensors []*types.Sensor
measuredValueTypes []types.MeasuredValueType
}{
{
sensors: []*types.Sensor{
{ID: "af7f845f-9a79-4638-8005-292754367d33", Model: "BME280"},
{ID: "2d2c20e4-2628-4660-9f8c-a301b4e5933b", Model: "DHT11"},
{ID: "30e69d52-c0cd-48a7-841a-3918b2ed5941", Model: "DHT22"},
{ID: "2d1ecf2e-2dc6-48f6-8158-822cab6e561b", Model: "DS18B20"},
},
expectedSensors: []*types.Sensor{
{ID: "af7f845f-9a79-4638-8005-292754367d33", Model: "BME280"},
{ID: "2d2c20e4-2628-4660-9f8c-a301b4e5933b", Model: "DHT11"},
{ID: "30e69d52-c0cd-48a7-841a-3918b2ed5941", Model: "DHT22"},
{ID: "2d1ecf2e-2dc6-48f6-8158-822cab6e561b", Model: "DS18B20"},
},
measuredValueTypes: []types.MeasuredValueType{types.Temperature},
},
{
sensors: []*types.Sensor{
{ID: "af7f845f-9a79-4638-8005-292754367d33", Model: "BME280"},
{ID: "2d2c20e4-2628-4660-9f8c-a301b4e5933b", Model: "DHT11"},
{ID: "30e69d52-c0cd-48a7-841a-3918b2ed5941", Model: "DHT22"},
{ID: "2d1ecf2e-2dc6-48f6-8158-822cab6e561b", Model: "DS18B20"},
},
expectedSensors: []*types.Sensor{
{ID: "af7f845f-9a79-4638-8005-292754367d33", Model: "BME280"},
{ID: "2d2c20e4-2628-4660-9f8c-a301b4e5933b", Model: "DHT11"},
{ID: "30e69d52-c0cd-48a7-841a-3918b2ed5941", Model: "DHT22"},
},
measuredValueTypes: []types.MeasuredValueType{types.Humidity},
},
{
sensors: []*types.Sensor{
{ID: "af7f845f-9a79-4638-8005-292754367d33", Model: "BME280"},
{ID: "2d2c20e4-2628-4660-9f8c-a301b4e5933b", Model: "DHT11"},
{ID: "30e69d52-c0cd-48a7-841a-3918b2ed5941", Model: "DHT22"},
{ID: "2d1ecf2e-2dc6-48f6-8158-822cab6e561b", Model: "DS18B20"},
},
expectedSensors: []*types.Sensor{
{ID: "af7f845f-9a79-4638-8005-292754367d33", Model: "BME280"},
},
measuredValueTypes: []types.MeasuredValueType{types.Pressure},
},
}
for i := range testCases {
s, err := types.FilterSensorByMeasuredValueTypes(testCases[i].sensors, testCases[i].measuredValueTypes...)
require.NoError(err)
require.ElementsMatch(testCases[i].expectedSensors, s)
require.Equal(len(testCases[i].expectedSensors), len(s))
}
}