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  }