github.com/enbility/spine-go@v0.7.0/model/commandframe_additions_test.go (about) 1 package model 2 3 import ( 4 "testing" 5 6 "github.com/enbility/spine-go/util" 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestFilterType_Selector_Data(t *testing.T) { 11 data := &ElectricalConnectionDescriptionListDataSelectorsType{ 12 ElectricalConnectionId: util.Ptr(ElectricalConnectionIdType(1)), 13 ScopeType: util.Ptr(ScopeTypeTypeACPower), 14 } 15 16 sut := &FilterType{ 17 ElectricalConnectionDescriptionListDataSelectors: data, 18 } 19 20 // Act 21 cmdData, err := sut.Data() 22 assert.Nil(t, err) 23 assert.NotNil(t, cmdData) 24 assert.Equal(t, FunctionTypeElectricalConnectionDescriptionListData, *cmdData.Function) 25 assert.Equal(t, data, cmdData.Selector) 26 } 27 28 func TestFilterType_Selector_SetDataForFunction(t *testing.T) { 29 cmd := FilterType{} 30 cmd.SetDataForFunction(EEBusTagTypeTypeSelector, FunctionTypeElectricalConnectionDescriptionListData, &ElectricalConnectionDescriptionListDataSelectorsType{}) 31 assert.NotNil(t, cmd.ElectricalConnectionDescriptionListDataSelectors) 32 33 cmd = FilterType{} 34 cmd.SetDataForFunction(EEBusTagTypeTypeSelector, FunctionTypeElectricalConnectionDescriptionListData, nil) 35 assert.Nil(t, cmd.ElectricalConnectionDescriptionListDataSelectors) 36 37 test := &ElectricalConnectionDescriptionListDataSelectorsType{ 38 ElectricalConnectionId: util.Ptr(ElectricalConnectionIdType(1)), 39 } 40 cmd = FilterType{} 41 cmd.SetDataForFunction(EEBusTagTypeTypeSelector, FunctionTypeElectricalConnectionDescriptionListData, test) 42 assert.NotNil(t, cmd.ElectricalConnectionDescriptionListDataSelectors) 43 } 44 45 func TestFilterType_Elements_Data(t *testing.T) { 46 data := &ElectricalConnectionDescriptionDataElementsType{ 47 ElectricalConnectionId: util.Ptr(ElementTagType{}), 48 } 49 50 sut := &FilterType{ 51 ElectricalConnectionDescriptionDataElements: data, 52 } 53 54 // Act 55 cmdData, err := sut.Data() 56 assert.Nil(t, err) 57 assert.NotNil(t, cmdData) 58 assert.Equal(t, FunctionTypeElectricalConnectionDescriptionListData, *cmdData.Function) 59 assert.Equal(t, data, cmdData.Elements) 60 } 61 62 func TestFilterType_Elements_SetDataForFunction(t *testing.T) { 63 cmd := FilterType{} 64 cmd.SetDataForFunction(EEbusTagTypeTypeElements, FunctionTypeElectricalConnectionDescriptionListData, &ElectricalConnectionDescriptionDataElementsType{}) 65 assert.NotNil(t, cmd.ElectricalConnectionDescriptionDataElements) 66 67 cmd = FilterType{} 68 cmd.SetDataForFunction(EEbusTagTypeTypeElements, FunctionTypeElectricalConnectionDescriptionListData, nil) 69 assert.Nil(t, cmd.ElectricalConnectionDescriptionDataElements) 70 71 var test *ElectricalConnectionDescriptionDataElementsType 72 cmd = FilterType{} 73 cmd.SetDataForFunction(EEbusTagTypeTypeElements, FunctionTypeElectricalConnectionDescriptionListData, test) 74 assert.NotNil(t, cmd.ElectricalConnectionDescriptionDataElements) 75 } 76 77 func TestCmdType_Data(t *testing.T) { 78 data := &NodeManagementDetailedDiscoveryDataType{ 79 SpecificationVersionList: &NodeManagementSpecificationVersionListType{[]SpecificationVersionDataType{SpecificationVersionDataType("dummy")}}, 80 } 81 82 sut := &CmdType{ 83 NodeManagementDetailedDiscoveryData: data, 84 } 85 86 // Act 87 cmdData, err := sut.Data() 88 assert.Nil(t, err) 89 assert.NotNil(t, cmdData) 90 assert.Equal(t, "NodeManagementDetailedDiscoveryData", cmdData.FieldName) 91 assert.Equal(t, FunctionTypeNodeManagementDetailedDiscoveryData, *cmdData.Function) 92 assert.Equal(t, data, cmdData.Value) 93 } 94 95 func TestCmdType_SetDataForFunction(t *testing.T) { 96 cmd := CmdType{} 97 cmd.SetDataForFunction(FunctionTypeElectricalConnectionDescriptionListData, &ElectricalConnectionDescriptionListDataType{}) 98 assert.NotNil(t, cmd.ElectricalConnectionDescriptionListData) 99 100 cmd = CmdType{} 101 cmd.SetDataForFunction(FunctionTypeElectricalConnectionDescriptionListData, nil) 102 assert.Nil(t, cmd.ElectricalConnectionDescriptionListData) 103 104 var test *ElectricalConnectionDescriptionListDataType 105 cmd = CmdType{} 106 cmd.SetDataForFunction(FunctionTypeElectricalConnectionDescriptionListData, test) 107 assert.NotNil(t, cmd.ElectricalConnectionDescriptionListData) 108 } 109 110 func TestCmdType_ExtractFilter_NoFilter(t *testing.T) { 111 sut := &CmdType{ 112 NodeManagementDetailedDiscoveryData: &NodeManagementDetailedDiscoveryDataType{}, 113 } 114 115 // Act 116 filterPartial, filterDelete := sut.ExtractFilter() 117 assert.Nil(t, filterPartial) 118 assert.Nil(t, filterDelete) 119 } 120 121 func TestCmdType_ExtractFilter_FilterPartialDelete(t *testing.T) { 122 filterP := FilterType{ 123 CmdControl: &CmdControlType{Partial: &ElementTagType{}}, 124 NodeManagementDetailedDiscoveryDataSelectors: &NodeManagementDetailedDiscoveryDataSelectorsType{}, 125 } 126 filterD := FilterType{ 127 CmdControl: &CmdControlType{Delete: &ElementTagType{}}, 128 NodeManagementDetailedDiscoveryDataSelectors: &NodeManagementDetailedDiscoveryDataSelectorsType{}, 129 } 130 131 sut := &CmdType{ 132 Filter: []FilterType{filterD, filterP}, 133 NodeManagementDetailedDiscoveryData: &NodeManagementDetailedDiscoveryDataType{}, 134 } 135 136 // Act 137 filterPartial, filterDelete := sut.ExtractFilter() 138 assert.NotNil(t, filterPartial) 139 assert.Equal(t, &filterP, filterPartial) 140 assert.NotNil(t, filterDelete) 141 assert.Equal(t, &filterD, filterDelete) 142 }