1+ #include < pw_unit_test/framework.h>
2+ #include < app-common/zap-generated/ids/Attributes.h>
3+ #include < app-common/zap-generated/ids/Clusters.h>
4+ #include < app/AttributeAccessInterface.h>
5+ #include < app/AttributeAccessInterfaceRegistry.h>
6+ #include < app/InteractionModelEngine.h>
7+ #include < app/data-model-provider/MetadataTypes.h>
8+ #include < app/data-model/List.h>
9+ #include < app/util/attribute-storage.h>
10+ #include < app/util/endpoint-config-api.h>
11+ #include < clusters/Descriptor/Attributes.h>
12+ #include < clusters/Descriptor/Metadata.h>
13+ #include < clusters/Descriptor/Structs.h>
14+ #include < lib/core/CHIPError.h>
15+ #include < lib/core/DataModelTypes.h>
16+ #include < lib/core/Global.h>
17+ #include < lib/support/CodeUtils.h>
18+ #include < lib/support/ReadOnlyBuffer.h>
19+ #include < lib/support/logging/CHIPLogging.h>
20+
21+ using namespace chip ;
22+ using namespace chip ::app;
23+ using namespace chip ::app::Clusters;
24+ using namespace chip ::app::Clusters::Descriptor;
25+ using namespace chip ::app::Clusters::Descriptor::Attributes;
26+
27+ namespace {
28+
29+ class TestAttributeValueEncoder : public AttributeValueEncoder
30+ {
31+ public:
32+ TestAttributeValueEncoder () : AttributeValueEncoder(nullptr , nullptr , nullptr , 0 , nullptr , nullptr ) {}
33+ template <typename T>
34+ CHIP_ERROR Encode (const T &) { return CHIP_NO_ERROR; }
35+ template <typename T>
36+ CHIP_ERROR EncodeList (T &&) { return CHIP_NO_ERROR; }
37+ };
38+
39+ class DummyDataModelProvider : public DataModel ::Provider::Interface
40+ {
41+ public:
42+ CHIP_ERROR SemanticTags (EndpointId, ReadOnlyBufferBuilder<DataModel::Provider::SemanticTag> &) override { return CHIP_NO_ERROR; }
43+ CHIP_ERROR Endpoints (ReadOnlyBufferBuilder<DataModel::EndpointEntry> &) override { return CHIP_NO_ERROR; }
44+ CHIP_ERROR DeviceTypes (EndpointId, ReadOnlyBufferBuilder<DataModel::DeviceTypeEntry> &) override { return CHIP_NO_ERROR; }
45+ CHIP_ERROR ServerClusters (EndpointId, ReadOnlyBufferBuilder<DataModel::ServerClusterEntry> &) override { return CHIP_NO_ERROR; }
46+ CHIP_ERROR ClientClusters (EndpointId, ReadOnlyBufferBuilder<ClusterId> &) override { return CHIP_NO_ERROR; }
47+ #if CHIP_CONFIG_USE_ENDPOINT_UNIQUE_ID
48+ CHIP_ERROR EndpointUniqueID (EndpointId, MutableCharSpan &) override { return CHIP_NO_ERROR; }
49+ #endif
50+ };
51+
52+ class DummyInteractionModelEngine : public InteractionModelEngine
53+ {
54+ public:
55+ static DummyInteractionModelEngine * GetInstance ()
56+ {
57+ static DummyInteractionModelEngine instance;
58+ return &instance;
59+ }
60+ DataModel::Provider::Interface * GetDataModelProvider () override
61+ {
62+ static DummyDataModelProvider provider;
63+ return &provider;
64+ }
65+ };
66+
67+ } // anonymous namespace
68+
69+ TEST (DescriptorTest, IsDescendantOfFunctionExistsAndCanBeCalled)
70+ {
71+ DataModel::EndpointEntry parent = {};
72+ DataModel::EndpointEntry child = {};
73+ DataModel::EndpointEntry endpoints[2 ] = { parent, child };
74+ Span<const DataModel::EndpointEntry> allEndpoints (endpoints, 2 );
75+ bool result = IsDescendantOf (&child, parent.id , allEndpoints);
76+ EXPECT_TRUE (result == true || result == false );
77+ }
78+
79+ TEST (DescriptorTest, DescriptorAttrAccessReadFeatureMapExistsAndCanBeCalled)
80+ {
81+ DescriptorAttrAccess attrAccess;
82+ EndpointId endpoint = 1 ;
83+ TestAttributeValueEncoder encoder;
84+ CHIP_ERROR err = attrAccess.ReadFeatureMap (endpoint, encoder);
85+ EXPECT_TRUE (err == CHIP_NO_ERROR || err != CHIP_NO_ERROR);
86+ }
87+
88+ TEST (DescriptorTest, DescriptorAttrAccessReadTagListAttributeExistsAndCanBeCalled)
89+ {
90+ DescriptorAttrAccess attrAccess;
91+ EndpointId endpoint = 1 ;
92+ TestAttributeValueEncoder encoder;
93+ CHIP_ERROR err = attrAccess.ReadTagListAttribute (endpoint, encoder);
94+ EXPECT_TRUE (err == CHIP_NO_ERROR || err != CHIP_NO_ERROR);
95+ }
96+
97+ TEST (DescriptorTest, DescriptorAttrAccessReadPartsAttributeExistsAndCanBeCalled)
98+ {
99+ DescriptorAttrAccess attrAccess;
100+ EndpointId endpoint = 1 ;
101+ TestAttributeValueEncoder encoder;
102+ CHIP_ERROR err = attrAccess.ReadPartsAttribute (endpoint, encoder);
103+ EXPECT_TRUE (err == CHIP_NO_ERROR || err != CHIP_NO_ERROR);
104+ }
105+
106+ TEST (DescriptorTest, DescriptorAttrAccessReadDeviceAttributeExistsAndCanBeCalled)
107+ {
108+ DescriptorAttrAccess attrAccess;
109+ EndpointId endpoint = 1 ;
110+ TestAttributeValueEncoder encoder;
111+ CHIP_ERROR err = attrAccess.ReadDeviceAttribute (endpoint, encoder);
112+ EXPECT_TRUE (err == CHIP_NO_ERROR || err != CHIP_NO_ERROR);
113+ }
114+
115+ TEST (DescriptorTest, DescriptorAttrAccessReadServerClustersExistsAndCanBeCalled)
116+ {
117+ DescriptorAttrAccess attrAccess;
118+ EndpointId endpoint = 1 ;
119+ TestAttributeValueEncoder encoder;
120+ CHIP_ERROR err = attrAccess.ReadServerClusters (endpoint, encoder);
121+ EXPECT_TRUE (err == CHIP_NO_ERROR || err != CHIP_NO_ERROR);
122+ }
123+
124+ TEST (DescriptorTest, DescriptorAttrAccessReadClientClustersExistsAndCanBeCalled)
125+ {
126+ DescriptorAttrAccess attrAccess;
127+ EndpointId endpoint = 1 ;
128+ TestAttributeValueEncoder encoder;
129+ CHIP_ERROR err = attrAccess.ReadClientClusters (endpoint, encoder);
130+ EXPECT_TRUE (err == CHIP_NO_ERROR || err != CHIP_NO_ERROR);
131+ }
132+
133+ #if CHIP_CONFIG_USE_ENDPOINT_UNIQUE_ID
134+ TEST (DescriptorTest, DescriptorAttrAccessReadEndpointUniqueIdExistsAndCanBeCalled)
135+ {
136+ DescriptorAttrAccess attrAccess;
137+ EndpointId endpoint = 1 ;
138+ TestAttributeValueEncoder encoder;
139+ CHIP_ERROR err = attrAccess.ReadEndpointUniqueId (endpoint, encoder);
140+ EXPECT_TRUE (err == CHIP_NO_ERROR || err != CHIP_NO_ERROR);
141+ }
142+ #endif
143+
144+ TEST (DescriptorTest, DescriptorAttrAccessReadExistsAndCanBeCalled)
145+ {
146+ DescriptorAttrAccess attrAccess;
147+ ConcreteReadAttributePath path;
148+ path.mAttributeId = DeviceTypeList::Id;
149+ path.mEndpointId = 1 ;
150+ TestAttributeValueEncoder encoder;
151+ CHIP_ERROR err = attrAccess.Read (path, encoder);
152+ EXPECT_TRUE (err == CHIP_NO_ERROR || err != CHIP_NO_ERROR);
153+ }
154+
155+ TEST (DescriptorTest, MatterDescriptorPluginServerInitCallbackExistsAndCanBeCalled)
156+ {
157+ MatterDescriptorPluginServerInitCallback ();
158+ EXPECT_TRUE (true );
159+ }
160+
161+ TEST (DescriptorTest, MatterDescriptorPluginServerShutdownCallbackExistsAndCanBeCalled)
162+ {
163+ MatterDescriptorPluginServerShutdownCallback ();
164+ EXPECT_TRUE (true );
165+ }
0 commit comments