github.com/enbility/spine-go@v0.7.0/spine/function_data_factory_test.go (about) 1 package spine 2 3 import ( 4 "testing" 5 6 "github.com/enbility/spine-go/api" 7 "github.com/enbility/spine-go/model" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestFunctionDataFactory_FunctionData(t *testing.T) { 12 result := CreateFunctionData[api.FunctionDataInterface](model.FeatureTypeTypeBill) 13 assert.Equal(t, 3, len(result)) 14 assert.IsType(t, &FunctionData[model.BillDescriptionListDataType]{}, result[0]) 15 assert.IsType(t, &FunctionData[model.BillConstraintsListDataType]{}, result[1]) 16 assert.IsType(t, &FunctionData[model.BillListDataType]{}, result[2]) 17 18 result = CreateFunctionData[api.FunctionDataInterface](model.FeatureTypeTypeDeviceClassification) 19 assert.Equal(t, 2, len(result)) 20 assert.IsType(t, &FunctionData[model.DeviceClassificationManufacturerDataType]{}, result[0]) 21 assert.IsType(t, &FunctionData[model.DeviceClassificationUserDataType]{}, result[1]) 22 23 result = CreateFunctionData[api.FunctionDataInterface](model.FeatureTypeTypeDeviceConfiguration) 24 assert.Equal(t, 3, len(result)) 25 assert.IsType(t, &FunctionData[model.DeviceConfigurationKeyValueConstraintsListDataType]{}, result[0]) 26 assert.IsType(t, &FunctionData[model.DeviceConfigurationKeyValueDescriptionListDataType]{}, result[1]) 27 assert.IsType(t, &FunctionData[model.DeviceConfigurationKeyValueListDataType]{}, result[2]) 28 29 result = CreateFunctionData[api.FunctionDataInterface](model.FeatureTypeTypeDeviceDiagnosis) 30 assert.Equal(t, 3, len(result)) 31 assert.IsType(t, &FunctionData[model.DeviceDiagnosisStateDataType]{}, result[0]) 32 assert.IsType(t, &FunctionData[model.DeviceDiagnosisHeartbeatDataType]{}, result[1]) 33 34 result = CreateFunctionData[api.FunctionDataInterface](model.FeatureTypeTypeElectricalConnection) 35 assert.Equal(t, 6, len(result)) 36 assert.IsType(t, &FunctionData[model.ElectricalConnectionDescriptionListDataType]{}, result[0]) 37 assert.IsType(t, &FunctionData[model.ElectricalConnectionParameterDescriptionListDataType]{}, result[1]) 38 assert.IsType(t, &FunctionData[model.ElectricalConnectionPermittedValueSetListDataType]{}, result[2]) 39 40 result = CreateFunctionData[api.FunctionDataInterface](model.FeatureTypeTypeHvac) 41 assert.Equal(t, 8, len(result)) 42 assert.IsType(t, &FunctionData[model.HvacOperationModeDescriptionDataType]{}, result[0]) 43 assert.IsType(t, &FunctionData[model.HvacOverrunDescriptionListDataType]{}, result[1]) 44 assert.IsType(t, &FunctionData[model.HvacOverrunListDataType]{}, result[2]) 45 assert.IsType(t, &FunctionData[model.HvacSystemFunctionDescriptionDataType]{}, result[3]) 46 assert.IsType(t, &FunctionData[model.HvacSystemFunctionListDataType]{}, result[4]) 47 48 result = CreateFunctionData[api.FunctionDataInterface](model.FeatureTypeTypeIdentification) 49 assert.Equal(t, 3, len(result)) 50 assert.IsType(t, &FunctionData[model.IdentificationListDataType]{}, result[0]) 51 52 result = CreateFunctionData[api.FunctionDataInterface](model.FeatureTypeTypeIncentiveTable) 53 assert.Equal(t, 3, len(result)) 54 assert.IsType(t, &FunctionData[model.IncentiveTableDescriptionDataType]{}, result[0]) 55 assert.IsType(t, &FunctionData[model.IncentiveTableConstraintsDataType]{}, result[1]) 56 assert.IsType(t, &FunctionData[model.IncentiveTableDataType]{}, result[2]) 57 58 result = CreateFunctionData[api.FunctionDataInterface](model.FeatureTypeTypeLoadControl) 59 assert.Equal(t, 6, len(result)) 60 assert.IsType(t, &FunctionData[model.LoadControlEventListDataType]{}, result[0]) 61 assert.IsType(t, &FunctionData[model.LoadControlLimitConstraintsListDataType]{}, result[1]) 62 assert.IsType(t, &FunctionData[model.LoadControlLimitDescriptionListDataType]{}, result[2]) 63 assert.IsType(t, &FunctionData[model.LoadControlLimitListDataType]{}, result[3]) 64 65 result = CreateFunctionData[api.FunctionDataInterface](model.FeatureTypeTypeMeasurement) 66 assert.Equal(t, 5, len(result)) 67 assert.IsType(t, &FunctionData[model.MeasurementListDataType]{}, result[0]) 68 assert.IsType(t, &FunctionData[model.MeasurementDescriptionListDataType]{}, result[1]) 69 assert.IsType(t, &FunctionData[model.MeasurementConstraintsListDataType]{}, result[2]) 70 assert.IsType(t, &FunctionData[model.MeasurementThresholdRelationListDataType]{}, result[3]) 71 72 result = CreateFunctionData[api.FunctionDataInterface](model.FeatureTypeTypeTimeSeries) 73 assert.Equal(t, 3, len(result)) 74 assert.IsType(t, &FunctionData[model.TimeSeriesDescriptionListDataType]{}, result[0]) 75 assert.IsType(t, &FunctionData[model.TimeSeriesConstraintsListDataType]{}, result[1]) 76 assert.IsType(t, &FunctionData[model.TimeSeriesListDataType]{}, result[2]) 77 78 result = CreateFunctionData[api.FunctionDataInterface](model.FeatureTypeTypeGeneric) 79 assert.Equal(t, 124, len(result)) 80 } 81 82 func TestFunctionDataFactory_FunctionDataCmd(t *testing.T) { 83 result := CreateFunctionData[api.FunctionDataCmdInterface](model.FeatureTypeTypeDeviceClassification) 84 assert.Equal(t, 2, len(result)) 85 assert.IsType(t, &FunctionDataCmd[model.DeviceClassificationManufacturerDataType]{}, result[0]) 86 assert.IsType(t, &FunctionDataCmd[model.DeviceClassificationUserDataType]{}, result[1]) 87 } 88 89 func TestFunctionDataFactory_NodeMgmtFeatureType(t *testing.T) { 90 result := CreateFunctionData[api.FunctionDataCmdInterface](model.FeatureTypeTypeNodeManagement) 91 assert.Equal(t, 3, len(result)) 92 } 93 94 func TestFunctionDataFactory_unknownFunctionDataType(t *testing.T) { 95 assert.PanicsWithError(t, "only FunctionData and FunctionDataCmd are supported", 96 func() { CreateFunctionData[int](model.FeatureTypeTypeDeviceClassification) }) 97 }