github.com/enbility/spine-go@v0.7.0/model/nodemanagement_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  	"github.com/stretchr/testify/suite"
     9  )
    10  
    11  func TestNodeManagementUseCaseDataTypeSuite(t *testing.T) {
    12  	suite.Run(t, new(NodeManagementUseCaseDataTypeSuite))
    13  }
    14  
    15  type NodeManagementUseCaseDataTypeSuite struct {
    16  	suite.Suite
    17  }
    18  
    19  func (s *NodeManagementUseCaseDataTypeSuite) Test_AdditionsAndRemovals() {
    20  	ucs := &NodeManagementUseCaseDataType{}
    21  	assert.NotNil(s.T(), ucs)
    22  	assert.Equal(s.T(), 0, len(ucs.UseCaseInformation))
    23  
    24  	address := FeatureAddressType{
    25  		Device: util.Ptr(AddressDeviceType("test")),
    26  		Entity: []AddressEntityType{1},
    27  	}
    28  	ucs.AddUseCaseSupport(
    29  		address,
    30  		UseCaseActorTypeCEM,
    31  		UseCaseNameTypeControlOfBattery,
    32  		SpecificationVersionType(""),
    33  		"",
    34  		true,
    35  		[]UseCaseScenarioSupportType{},
    36  	)
    37  	assert.Equal(s.T(), 1, len(ucs.UseCaseInformation))
    38  	assert.Equal(s.T(), 1, len(ucs.UseCaseInformation[0].UseCaseSupport))
    39  
    40  	ucs.AddUseCaseSupport(
    41  		address,
    42  		UseCaseActorTypeCEM,
    43  		UseCaseNameTypeEVSECommissioningAndConfiguration,
    44  		SpecificationVersionType(""),
    45  		"",
    46  		true,
    47  		[]UseCaseScenarioSupportType{},
    48  	)
    49  	assert.Equal(s.T(), 1, len(ucs.UseCaseInformation))
    50  	assert.Equal(s.T(), 2, len(ucs.UseCaseInformation[0].UseCaseSupport))
    51  
    52  	ucs.AddUseCaseSupport(
    53  		address,
    54  		UseCaseActorTypeCEM,
    55  		UseCaseNameTypeEVSECommissioningAndConfiguration,
    56  		SpecificationVersionType(""),
    57  		"",
    58  		true,
    59  		[]UseCaseScenarioSupportType{},
    60  	)
    61  	assert.Equal(s.T(), 1, len(ucs.UseCaseInformation))
    62  	assert.Equal(s.T(), 2, len(ucs.UseCaseInformation[0].UseCaseSupport))
    63  
    64  	ucs.AddUseCaseSupport(
    65  		address,
    66  		UseCaseActorTypeEnergyGuard,
    67  		UseCaseNameTypeLimitationOfPowerConsumption,
    68  		SpecificationVersionType(""),
    69  		"",
    70  		true,
    71  		[]UseCaseScenarioSupportType{},
    72  	)
    73  	assert.Equal(s.T(), 2, len(ucs.UseCaseInformation))
    74  	assert.Equal(s.T(), 2, len(ucs.UseCaseInformation[0].UseCaseSupport))
    75  	assert.Equal(s.T(), 1, len(ucs.UseCaseInformation[1].UseCaseSupport))
    76  
    77  	hasUC := ucs.HasUseCaseSupport(address, UseCaseActorTypeCEM, UseCaseNameTypeEVChargingSummary)
    78  	assert.Equal(s.T(), false, hasUC)
    79  
    80  	ucs.RemoveUseCaseSupport(
    81  		address,
    82  		UseCaseActorTypeCEM,
    83  		UseCaseNameTypeEVChargingSummary,
    84  	)
    85  	assert.Equal(s.T(), 2, len(ucs.UseCaseInformation))
    86  	assert.Equal(s.T(), 2, len(ucs.UseCaseInformation[0].UseCaseSupport))
    87  
    88  	hasUC = ucs.HasUseCaseSupport(address, UseCaseActorTypeCEM, UseCaseNameTypeControlOfBattery)
    89  	assert.Equal(s.T(), true, hasUC)
    90  
    91  	assert.Equal(s.T(), true, *ucs.UseCaseInformation[0].UseCaseSupport[0].UseCaseAvailable)
    92  	ucs.SetAvailability(address, UseCaseActorTypeCEM, UseCaseNameTypeControlOfBattery, false)
    93  	assert.Equal(s.T(), false, *ucs.UseCaseInformation[0].UseCaseSupport[0].UseCaseAvailable)
    94  	ucs.SetAvailability(address, UseCaseActorTypeCEM, UseCaseNameTypeConfigurationOfDhwTemperature, false)
    95  
    96  	ucs.RemoveUseCaseSupport(
    97  		address,
    98  		UseCaseActorTypeCEM,
    99  		UseCaseNameTypeControlOfBattery,
   100  	)
   101  	assert.Equal(s.T(), 2, len(ucs.UseCaseInformation))
   102  	assert.Equal(s.T(), 1, len(ucs.UseCaseInformation[0].UseCaseSupport))
   103  
   104  	ucs.RemoveUseCaseSupport(
   105  		address,
   106  		UseCaseActorTypeCEM,
   107  		UseCaseNameTypeEVSECommissioningAndConfiguration,
   108  	)
   109  	assert.Equal(s.T(), 1, len(ucs.UseCaseInformation))
   110  
   111  	ucs.RemoveUseCaseSupport(
   112  		address,
   113  		"",
   114  		"",
   115  	)
   116  	assert.Equal(s.T(), 1, len(ucs.UseCaseInformation))
   117  
   118  	invalidAddress := FeatureAddressType{
   119  		Device: util.Ptr(AddressDeviceType("test")),
   120  		Entity: []AddressEntityType{2},
   121  	}
   122  	ucs.RemoveUseCaseSupport(
   123  		invalidAddress,
   124  		UseCaseActorTypeCEM,
   125  		UseCaseNameTypeEVSECommissioningAndConfiguration,
   126  	)
   127  	assert.Equal(s.T(), 1, len(ucs.UseCaseInformation))
   128  
   129  	ucs.AddUseCaseSupport(
   130  		address,
   131  		UseCaseActorTypeEnergyGuard,
   132  		UseCaseNameTypeLimitationOfPowerConsumption,
   133  		SpecificationVersionType(""),
   134  		"",
   135  		true,
   136  		[]UseCaseScenarioSupportType{},
   137  	)
   138  	assert.Equal(s.T(), 1, len(ucs.UseCaseInformation))
   139  	assert.Equal(s.T(), 1, len(ucs.UseCaseInformation[0].UseCaseSupport))
   140  
   141  	ucs.RemoveUseCaseDataForAddress(address)
   142  	assert.Equal(s.T(), 0, len(ucs.UseCaseInformation))
   143  }