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)) } }