github.com/enbility/spine-go@v0.7.0/spine/util_test.go (about)

     1  package spine
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/enbility/spine-go/api"
     8  	"github.com/enbility/spine-go/model"
     9  	"github.com/stretchr/testify/assert"
    10  	"github.com/stretchr/testify/suite"
    11  )
    12  
    13  func TestUtilsSuite(t *testing.T) {
    14  	suite.Run(t, new(UtilsSuite))
    15  }
    16  
    17  type UtilsSuite struct {
    18  	suite.Suite
    19  
    20  	localDevice  api.DeviceLocalInterface
    21  	remoteDevice api.DeviceRemoteInterface
    22  }
    23  
    24  func (s *UtilsSuite) WriteShipMessageWithPayload([]byte) {}
    25  
    26  func (s *UtilsSuite) Test_DataCopyOfType() {
    27  	s.localDevice = NewDeviceLocal("brand", "model", "serial", "code", "address", model.DeviceTypeTypeEnergyManagementSystem, model.NetworkManagementFeatureSetTypeSmart)
    28  	localEntity := NewEntityLocal(s.localDevice, model.EntityTypeTypeCEM, NewAddressEntityType([]uint{1}), time.Second*4)
    29  	s.localDevice.AddEntity(localEntity)
    30  
    31  	localFeature := NewFeatureLocal(1, localEntity, model.FeatureTypeTypeElectricalConnection, model.RoleTypeServer)
    32  	localFeature.AddFunctionType(model.FunctionTypeElectricalConnectionDescriptionListData, true, false)
    33  	localEntity.AddFeature(localFeature)
    34  	assert.Equal(s.T(), 1, len(localEntity.Features()))
    35  
    36  	// this function does not exist
    37  	_, err := LocalFeatureDataCopyOfType[*model.NodeManagementUseCaseDataType](localFeature, "dummy")
    38  	assert.NotNil(s.T(), err)
    39  
    40  	_, err = LocalFeatureDataCopyOfType[*model.ElectricalConnectionDescriptionListDataType](
    41  		localFeature,
    42  		model.FunctionTypeElectricalConnectionDescriptionListData,
    43  	)
    44  	assert.NotNil(s.T(), err)
    45  
    46  	data := &model.ElectricalConnectionDescriptionListDataType{
    47  		ElectricalConnectionDescriptionData: []model.ElectricalConnectionDescriptionDataType{},
    48  	}
    49  	updatedData, err1 := localFeature.updateData(false, model.FunctionTypeElectricalConnectionDescriptionListData, data, nil, nil)
    50  	assert.NotNil(s.T(), updatedData)
    51  	assert.Nil(s.T(), err1)
    52  
    53  	_, err = LocalFeatureDataCopyOfType[*model.ElectricalConnectionDescriptionListDataType](
    54  		localFeature,
    55  		model.FunctionTypeElectricalConnectionDescriptionListData,
    56  	)
    57  	assert.Nil(s.T(), err)
    58  
    59  	_, err = LocalFeatureDataCopyOfType[string](
    60  		localFeature,
    61  		model.FunctionTypeElectricalConnectionDescriptionListData,
    62  	)
    63  	assert.NotNil(s.T(), err)
    64  
    65  	ski := "test"
    66  	sender := NewSender(s)
    67  
    68  	s.remoteDevice = NewDeviceRemote(s.localDevice, ski, sender)
    69  	remoteEntity := NewEntityRemote(s.remoteDevice, model.EntityTypeTypeCEM, NewAddressEntityType([]uint{1}))
    70  	s.remoteDevice.AddEntity(remoteEntity)
    71  
    72  	remoteFeature := NewFeatureRemote(1, remoteEntity, model.FeatureTypeTypeElectricalConnection, model.RoleTypeServer)
    73  	remoteEntity.AddFeature(remoteFeature)
    74  
    75  	// this function does not exist
    76  	_, err = RemoteFeatureDataCopyOfType[*model.NodeManagementUseCaseDataType](remoteFeature, "dummy")
    77  	assert.NotNil(s.T(), err)
    78  }