github.com/enbility/spine-go@v0.7.0/spine/function_data_test.go (about) 1 package spine 2 3 import ( 4 "testing" 5 6 "github.com/enbility/spine-go/model" 7 "github.com/enbility/spine-go/util" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestFunctionData_UpdateData(t *testing.T) { 12 newData := &model.DeviceClassificationManufacturerDataType{ 13 DeviceName: util.Ptr(model.DeviceClassificationStringType("device name")), 14 } 15 functionType := model.FunctionTypeDeviceClassificationManufacturerData 16 sut := NewFunctionData[model.DeviceClassificationManufacturerDataType](functionType) 17 _, _ = sut.UpdateData(false, true, newData, nil, nil) 18 getData := sut.DataCopy() 19 20 assert.Equal(t, newData.DeviceName, getData.DeviceName) 21 assert.Equal(t, functionType, sut.FunctionType()) 22 23 // another update should not be reflected in the first dataset 24 newData = &model.DeviceClassificationManufacturerDataType{ 25 DeviceName: util.Ptr(model.DeviceClassificationStringType("new device name")), 26 } 27 _, _ = sut.UpdateData(false, true, newData, nil, nil) 28 getNewData := sut.DataCopy() 29 30 assert.Equal(t, newData.DeviceName, getNewData.DeviceName) 31 assert.NotEqual(t, getData.DeviceName, getNewData.DeviceName) 32 assert.Equal(t, functionType, sut.FunctionType()) 33 34 _, _ = sut.UpdateDataAny(false, true, newData, nil, nil) 35 getNewDataAny := sut.DataCopyAny() 36 newDataAny := getNewDataAny.(*model.DeviceClassificationManufacturerDataType) 37 38 assert.Equal(t, newData.DeviceName, newDataAny.DeviceName) 39 assert.NotEqual(t, getData.DeviceName, newDataAny.DeviceName) 40 assert.Equal(t, functionType, sut.FunctionType()) 41 } 42 43 func TestFunctionData_UpdateDataPartial(t *testing.T) { 44 newData := &model.ElectricalConnectionPermittedValueSetListDataType{ 45 ElectricalConnectionPermittedValueSetData: []model.ElectricalConnectionPermittedValueSetDataType{ 46 { 47 ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(1)), 48 ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(1)), 49 PermittedValueSet: []model.ScaledNumberSetType{ 50 { 51 Range: []model.ScaledNumberRangeType{ 52 { 53 Min: &model.ScaledNumberType{ 54 Number: util.Ptr(model.NumberType(6)), 55 Scale: util.Ptr(model.ScaleType(0)), 56 }, 57 }, 58 }, 59 }, 60 }, 61 }, 62 }, 63 } 64 functionType := model.FunctionTypeElectricalConnectionPermittedValueSetListData 65 sut := NewFunctionData[model.ElectricalConnectionPermittedValueSetListDataType](functionType) 66 67 _, err := sut.UpdateData(false, true, newData, &model.FilterType{CmdControl: &model.CmdControlType{Partial: &model.ElementTagType{}}}, nil) 68 if assert.Nil(t, err) { 69 getData := sut.DataCopy() 70 assert.Equal(t, 1, len(getData.ElectricalConnectionPermittedValueSetData)) 71 } 72 } 73 74 func TestFunctionData_UpdateDataPartial_Supported(t *testing.T) { 75 newData := &model.HvacOverrunListDataType{ 76 HvacOverrunData: []model.HvacOverrunDataType{ 77 { 78 OverrunId: util.Ptr(model.HvacOverrunIdType(1)), 79 }, 80 }, 81 } 82 functionType := model.FunctionTypeHvacOverrunListData 83 sut := NewFunctionData[model.HvacOverrunListDataType](functionType) 84 85 ok := sut.SupportsPartialWrite() 86 assert.True(t, ok) 87 88 _, err := sut.UpdateData(false, true, newData, &model.FilterType{CmdControl: &model.CmdControlType{Partial: &model.ElementTagType{}}}, nil) 89 assert.Nil(t, err) 90 91 functionType = model.FunctionTypeNetworkManagementAddNodeCall 92 sut2 := NewFunctionData[model.NetworkManagementAddNodeCallType](functionType) 93 ok = sut2.SupportsPartialWrite() 94 assert.False(t, ok) 95 }