blob: 4235e5356b4ae003e25fcf397b4b23b455506fab [file] [log] [blame]
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001/*
2 *
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05003 * Copyright (c) 2020-2021 Project CHIP Authors
yunhanw-googlefb62fb02020-11-20 08:27:21 -08004 * All rights reserved.
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19/**
20 * @file
21 * This file implements a test for CHIP Interaction Model Message Def
22 *
23 */
24
Michael Spange00eac32021-06-21 17:25:47 -040025#include <app/AppBuildConfig.h>
yunhanw-googlef1117272021-12-02 19:59:44 -080026#include <app/MessageDef/EventFilterIBs.h>
yunhanw-google1f6c6e62021-11-02 10:09:53 -070027#include <app/MessageDef/EventStatusIB.h>
yunhanw-google36e61e32021-11-02 08:31:34 -070028#include <app/MessageDef/InvokeRequestMessage.h>
29#include <app/MessageDef/InvokeResponseMessage.h>
yunhanw-google12ec7022021-11-01 19:53:29 -070030#include <app/MessageDef/ReadRequestMessage.h>
31#include <app/MessageDef/ReportDataMessage.h>
32#include <app/MessageDef/SubscribeRequestMessage.h>
33#include <app/MessageDef/SubscribeResponseMessage.h>
yunhanw-google7f05fb62021-10-29 06:55:58 -070034#include <app/MessageDef/TimedRequestMessage.h>
yunhanw-google12ec7022021-11-01 19:53:29 -070035#include <app/MessageDef/WriteRequestMessage.h>
36#include <app/MessageDef/WriteResponseMessage.h>
Zang MingJie53dd5832021-09-03 03:05:16 +080037#include <lib/core/CHIPError.h>
38#include <lib/core/CHIPTLVDebug.hpp>
39#include <lib/support/CHIPMem.h>
Justin Wood0e149792022-01-06 21:52:51 +010040#include <lib/support/EnforceFormat.h>
Zang MingJie53dd5832021-09-03 03:05:16 +080041#include <lib/support/UnitTestRegistration.h>
Justin Wood0e149792022-01-06 21:52:51 +010042#include <lib/support/logging/Constants.h>
Kevin Schoedel4bb0e532021-01-11 22:28:18 -050043#include <system/TLVPacketBufferBackingStore.h>
yunhanw-googlefb62fb02020-11-20 08:27:21 -080044
45#include <nlunit-test.h>
46
47namespace {
48
49using namespace chip::app;
50
Justin Wood0e149792022-01-06 21:52:51 +010051void ENFORCE_FORMAT(1, 2) TLVPrettyPrinter(const char * aFormat, ...)
yunhanw-googlefb62fb02020-11-20 08:27:21 -080052{
53 va_list args;
54
55 va_start(args, aFormat);
56
57 vprintf(aFormat, args);
58
59 va_end(args);
60}
61
Kevin Schoedel4bb0e532021-01-11 22:28:18 -050062CHIP_ERROR DebugPrettyPrint(const chip::System::PacketBufferHandle & aMsgBuf)
yunhanw-googlefb62fb02020-11-20 08:27:21 -080063{
64 CHIP_ERROR err = CHIP_NO_ERROR;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -050065 chip::System::PacketBufferTLVReader reader;
66 reader.Init(aMsgBuf.Retain());
yunhanw-googlefb62fb02020-11-20 08:27:21 -080067 err = reader.Next();
68 chip::TLV::Debug::Dump(reader, TLVPrettyPrinter);
69
70 if (CHIP_NO_ERROR != err)
71 {
Kevin Schoedel0fe17ec2021-08-05 08:52:07 -040072 ChipLogProgress(DataManagement, "DebugPrettyPrint fails with err %" CHIP_ERROR_FORMAT, err.Format());
yunhanw-googlefb62fb02020-11-20 08:27:21 -080073 }
74
75 return err;
76}
77
yunhanw-google3bec0f92021-11-03 16:12:39 -070078void BuildStatusIB(nlTestSuite * apSuite, StatusIB::Builder & aStatusIBBuilder)
79{
80 CHIP_ERROR err = CHIP_NO_ERROR;
81
82 StatusIB statusIB;
83 statusIB.mStatus = chip::Protocols::InteractionModel::Status::InvalidSubscription;
84 aStatusIBBuilder.EncodeStatusIB(statusIB);
85 err = aStatusIBBuilder.GetError();
86 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
87}
88
89void ParseStatusIB(nlTestSuite * apSuite, StatusIB::Parser & aStatusIBParser)
90{
91 CHIP_ERROR err = CHIP_NO_ERROR;
92 StatusIB::Parser StatusIBParser;
93 StatusIB statusIB;
94
95#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
96 err = aStatusIBParser.CheckSchemaValidity();
97 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
98#endif
99 err = aStatusIBParser.DecodeStatusIB(statusIB);
100 NL_TEST_ASSERT(apSuite,
101 err == CHIP_NO_ERROR && statusIB.mStatus == chip::Protocols::InteractionModel::Status::InvalidSubscription &&
102 !statusIB.mClusterStatus.HasValue());
103}
104
yunhanw-googlea1cb3412021-12-06 13:32:40 -0800105void BuildClusterPathIB(nlTestSuite * apSuite, ClusterPathIB::Builder & aClusterPathBuilder)
106{
107 CHIP_ERROR err = CHIP_NO_ERROR;
108 aClusterPathBuilder.Node(1).Endpoint(2).Cluster(3).EndOfClusterPathIB();
109 err = aClusterPathBuilder.GetError();
110 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
111}
112
113void ParseClusterPathIB(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
114{
115 ClusterPathIB::Parser clusterPathParser;
116 CHIP_ERROR err = CHIP_NO_ERROR;
117 chip::NodeId node = 0;
118 chip::EndpointId endpoint = 0;
119 chip::ClusterId cluster = 0;
120
121 err = clusterPathParser.Init(aReader);
122 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
123#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
124 err = clusterPathParser.CheckSchemaValidity();
125 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
126#endif
127
128 err = clusterPathParser.GetNode(&node);
129 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && node == 1);
130
131 err = clusterPathParser.GetEndpoint(&endpoint);
132 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && endpoint == 2);
133
134 err = clusterPathParser.GetCluster(&cluster);
135 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && cluster == 3);
136}
137
138void BuildDataVersionFilterIB(nlTestSuite * apSuite, DataVersionFilterIB::Builder & aDataVersionFilterIBBuilder)
139{
yunhanw-google45847072021-12-08 14:14:10 -0800140 ClusterPathIB::Builder & clusterPathBuilder = aDataVersionFilterIBBuilder.CreatePath();
yunhanw-googlea1cb3412021-12-06 13:32:40 -0800141 NL_TEST_ASSERT(apSuite, clusterPathBuilder.GetError() == CHIP_NO_ERROR);
142 BuildClusterPathIB(apSuite, clusterPathBuilder);
143 aDataVersionFilterIBBuilder.DataVersion(2).EndOfDataVersionFilterIB();
144 NL_TEST_ASSERT(apSuite, aDataVersionFilterIBBuilder.GetError() == CHIP_NO_ERROR);
145}
146
147void ParseDataVersionFilterIB(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
148{
149 CHIP_ERROR err = CHIP_NO_ERROR;
150 DataVersionFilterIB::Parser dataVersionFilterIBParser;
151 ClusterPathIB::Parser clusterPath;
152 chip::DataVersion dataVersion = 2;
153
154 err = dataVersionFilterIBParser.Init(aReader);
155 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
156#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
157 err = dataVersionFilterIBParser.CheckSchemaValidity();
158 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
159#endif
160
161 err = dataVersionFilterIBParser.GetPath(&clusterPath);
162 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
163
164 err = dataVersionFilterIBParser.GetDataVersion(&dataVersion);
165 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && dataVersion == 2);
166}
167
168void BuildDataVersionFilterIBs(nlTestSuite * apSuite, DataVersionFilterIBs::Builder & aDataVersionFilterIBsBuilder)
169{
170 DataVersionFilterIB::Builder & dataVersionFilterIBBuilder = aDataVersionFilterIBsBuilder.CreateDataVersionFilter();
171 NL_TEST_ASSERT(apSuite, aDataVersionFilterIBsBuilder.GetError() == CHIP_NO_ERROR);
172 BuildDataVersionFilterIB(apSuite, dataVersionFilterIBBuilder);
173 aDataVersionFilterIBsBuilder.EndOfDataVersionFilterIBs();
174 NL_TEST_ASSERT(apSuite, aDataVersionFilterIBsBuilder.GetError() == CHIP_NO_ERROR);
175}
176
177void ParseDataVersionFilterIBs(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
178{
179 CHIP_ERROR err = CHIP_NO_ERROR;
180 DataVersionFilterIBs::Parser dataVersionFilterIBsParser;
181
182 err = dataVersionFilterIBsParser.Init(aReader);
183 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
184#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
185 err = dataVersionFilterIBsParser.CheckSchemaValidity();
186 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
187#endif
188}
189
yunhanw-googlebf585f82021-10-29 19:20:07 -0700190void BuildEventFilterIB(nlTestSuite * apSuite, EventFilterIB::Builder & aEventFilterIBBuilder)
191{
192 aEventFilterIBBuilder.Node(1).EventMin(2).EndOfEventFilterIB();
193 NL_TEST_ASSERT(apSuite, aEventFilterIBBuilder.GetError() == CHIP_NO_ERROR);
194}
195
196void ParseEventFilterIB(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
197{
198 CHIP_ERROR err = CHIP_NO_ERROR;
199 EventFilterIB::Parser eventFilterIBParser;
200 chip::NodeId node = 1;
201 uint64_t eventMin = 2;
202
203 err = eventFilterIBParser.Init(aReader);
204 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
205#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
206 err = eventFilterIBParser.CheckSchemaValidity();
207 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
208#endif
209 err = eventFilterIBParser.GetNode(&node);
210 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && node == 1);
211
212 err = eventFilterIBParser.GetEventMin(&eventMin);
213 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && eventMin == 2);
214}
215
yunhanw-googlef1117272021-12-02 19:59:44 -0800216void BuildEventFilters(nlTestSuite * apSuite, EventFilterIBs::Builder & aEventFiltersBuilder)
yunhanw-googlebf585f82021-10-29 19:20:07 -0700217{
yunhanw-google299393b2021-12-06 09:59:34 -0800218 EventFilterIB::Builder & eventFilterBuilder = aEventFiltersBuilder.CreateEventFilter();
yunhanw-googlebf585f82021-10-29 19:20:07 -0700219 NL_TEST_ASSERT(apSuite, aEventFiltersBuilder.GetError() == CHIP_NO_ERROR);
220 BuildEventFilterIB(apSuite, eventFilterBuilder);
221 aEventFiltersBuilder.EndOfEventFilters();
222 NL_TEST_ASSERT(apSuite, aEventFiltersBuilder.GetError() == CHIP_NO_ERROR);
223}
224
225void ParseEventFilters(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
226{
227 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googlef1117272021-12-02 19:59:44 -0800228 EventFilterIBs::Parser eventFiltersParser;
yunhanw-googlebf585f82021-10-29 19:20:07 -0700229
230 err = eventFiltersParser.Init(aReader);
231 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googlebf585f82021-10-29 19:20:07 -0700232#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
233 err = eventFiltersParser.CheckSchemaValidity();
234 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
235#endif
236}
237
yunhanw-google64ffda02021-11-04 18:05:36 -0700238void BuildAttributePathIB(nlTestSuite * apSuite, AttributePathIB::Builder & aAttributePathBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800239{
240 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google64ffda02021-11-04 18:05:36 -0700241 aAttributePathBuilder.EnableTagCompression(false)
242 .Node(1)
243 .Endpoint(2)
244 .Cluster(3)
245 .Attribute(4)
246 .ListIndex(5)
247 .EndOfAttributePathIB();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800248 err = aAttributePathBuilder.GetError();
249 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
250}
251
yunhanw-google64ffda02021-11-04 18:05:36 -0700252void ParseAttributePathIB(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800253{
yunhanw-google64ffda02021-11-04 18:05:36 -0700254 AttributePathIB::Parser attributePathParser;
yunhanw-googledf5569f2021-02-25 11:14:18 -0800255 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google64ffda02021-11-04 18:05:36 -0700256 bool enableTagCompression = true;
257 chip::NodeId node = 1;
258 chip::EndpointId endpoint = 2;
259 chip::ClusterId cluster = 3;
260 chip::AttributeId attribute = 4;
yunhanw-googleebb73962021-04-16 16:02:17 -0700261 chip::ListIndex listIndex = 5;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800262
263 err = attributePathParser.Init(aReader);
264 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700265#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800266 err = attributePathParser.CheckSchemaValidity();
267 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700268#endif
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800269
yunhanw-google64ffda02021-11-04 18:05:36 -0700270 err = attributePathParser.GetEnableTagCompression(&enableTagCompression);
271 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && enableTagCompression == false);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800272
yunhanw-google64ffda02021-11-04 18:05:36 -0700273 err = attributePathParser.GetNode(&node);
274 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && node == 1);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800275
yunhanw-google64ffda02021-11-04 18:05:36 -0700276 err = attributePathParser.GetEndpoint(&endpoint);
277 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && endpoint == 2);
278
279 err = attributePathParser.GetCluster(&cluster);
280 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && cluster == 3);
281
282 err = attributePathParser.GetAttribute(&attribute);
283 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && attribute == 4);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800284
285 err = attributePathParser.GetListIndex(&listIndex);
286 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && listIndex == 5);
287}
288
yunhanw-googleb717b362021-11-08 13:34:19 -0800289void BuildAttributePathList(nlTestSuite * apSuite, AttributePathIBs::Builder & aAttributePathListBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800290{
yunhanw-google299393b2021-12-06 09:59:34 -0800291 AttributePathIB::Builder & attributePathBuilder = aAttributePathListBuilder.CreatePath();
yunhanw-google0c183552021-01-22 09:12:14 -0800292 NL_TEST_ASSERT(apSuite, attributePathBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google64ffda02021-11-04 18:05:36 -0700293 BuildAttributePathIB(apSuite, attributePathBuilder);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800294
yunhanw-googleb717b362021-11-08 13:34:19 -0800295 aAttributePathListBuilder.EndOfAttributePathIBs();
yunhanw-google0c183552021-01-22 09:12:14 -0800296 NL_TEST_ASSERT(apSuite, aAttributePathListBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800297}
298
299void ParseAttributePathList(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
300{
301 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googleb717b362021-11-08 13:34:19 -0800302 AttributePathIBs::Parser attributePathListParser;
yunhanw-google64ffda02021-11-04 18:05:36 -0700303 AttributePathIB::Parser attributePathParser;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800304
305 err = attributePathListParser.Init(aReader);
306 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
307
yunhanw-googled644bb02021-04-13 07:26:17 -0700308#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800309 err = attributePathListParser.CheckSchemaValidity();
310 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700311#endif
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800312}
313
yunhanw-google2fe90242021-11-01 15:13:44 -0700314void BuildEventPath(nlTestSuite * apSuite, EventPathIB::Builder & aEventPathBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800315{
316 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google1f6c6e62021-11-02 10:09:53 -0700317 aEventPathBuilder.Node(1).Endpoint(2).Cluster(3).Event(4).IsUrgent(true).EndOfEventPathIB();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800318 err = aEventPathBuilder.GetError();
319 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
320}
321
yunhanw-google2fe90242021-11-01 15:13:44 -0700322void ParseEventPath(nlTestSuite * apSuite, EventPathIB::Parser & aEventPathParser)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800323{
yunhanw-google64ffda02021-11-04 18:05:36 -0700324 CHIP_ERROR err = CHIP_NO_ERROR;
325 chip::NodeId node = 1;
326 chip::EndpointId endpoint = 2;
327 chip::ClusterId cluster = 3;
328 chip::EventId event = 4;
329 bool isUrgent = false;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800330
yunhanw-googled644bb02021-04-13 07:26:17 -0700331#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800332 err = aEventPathParser.CheckSchemaValidity();
333 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700334#endif
yunhanw-google64ffda02021-11-04 18:05:36 -0700335 err = aEventPathParser.GetNode(&node);
336 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && node == 1);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800337
yunhanw-google64ffda02021-11-04 18:05:36 -0700338 err = aEventPathParser.GetEndpoint(&endpoint);
339 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && endpoint == 2);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800340
yunhanw-google64ffda02021-11-04 18:05:36 -0700341 err = aEventPathParser.GetCluster(&cluster);
342 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && cluster == 3);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800343
yunhanw-google64ffda02021-11-04 18:05:36 -0700344 err = aEventPathParser.GetEvent(&event);
345 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && event == 4);
yunhanw-google1f6c6e62021-11-02 10:09:53 -0700346
347 err = aEventPathParser.GetIsUrgent(&isUrgent);
348 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && isUrgent == true);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800349}
350
yunhanw-googlef1117272021-12-02 19:59:44 -0800351void BuildEventPaths(nlTestSuite * apSuite, EventPathIBs::Builder & aEventPathsBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800352{
yunhanw-google299393b2021-12-06 09:59:34 -0800353 EventPathIB::Builder & eventPathBuilder = aEventPathsBuilder.CreatePath();
yunhanw-google0c183552021-01-22 09:12:14 -0800354 NL_TEST_ASSERT(apSuite, eventPathBuilder.GetError() == CHIP_NO_ERROR);
355 BuildEventPath(apSuite, eventPathBuilder);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800356
yunhanw-google2fe90242021-11-01 15:13:44 -0700357 aEventPathsBuilder.EndOfEventPaths();
358 NL_TEST_ASSERT(apSuite, aEventPathsBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800359}
360
yunhanw-google2fe90242021-11-01 15:13:44 -0700361void ParseEventPaths(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800362{
363 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googlef1117272021-12-02 19:59:44 -0800364 EventPathIBs::Parser eventPathListParser;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800365
366 err = eventPathListParser.Init(aReader);
367 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700368#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800369 err = eventPathListParser.CheckSchemaValidity();
370 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700371#endif
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800372}
373
yunhanw-google8c2638c2021-10-20 16:33:42 -0700374void BuildCommandPath(nlTestSuite * apSuite, CommandPathIB::Builder & aCommandPathBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800375{
yunhanw-google36e61e32021-11-02 08:31:34 -0700376 aCommandPathBuilder.EndpointId(1).ClusterId(3).CommandId(4).EndOfCommandPathIB();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800377 NL_TEST_ASSERT(apSuite, aCommandPathBuilder.GetError() == CHIP_NO_ERROR);
378}
379
380void ParseCommandPath(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
381{
382 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google8c2638c2021-10-20 16:33:42 -0700383 CommandPathIB::Parser commandPathParser;
yunhanw-googledf5569f2021-02-25 11:14:18 -0800384 chip::EndpointId endpointId = 0;
385 chip::ClusterId clusterId = 0;
386 chip::CommandId commandId = 0;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800387
388 err = commandPathParser.Init(aReader);
389 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
390
yunhanw-googled644bb02021-04-13 07:26:17 -0700391#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800392 err = commandPathParser.CheckSchemaValidity();
393 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700394#endif
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800395 err = commandPathParser.GetEndpointId(&endpointId);
396 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && endpointId == 1);
397
yunhanw-googledf5569f2021-02-25 11:14:18 -0800398 err = commandPathParser.GetClusterId(&clusterId);
399 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && clusterId == 3);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800400
401 err = commandPathParser.GetCommandId(&commandId);
402 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && commandId == 4);
403}
404
yunhanw-google3bec0f92021-11-03 16:12:39 -0700405void BuildEventDataIB(nlTestSuite * apSuite, EventDataIB::Builder & aEventDataIBBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800406{
407 CHIP_ERROR err = CHIP_NO_ERROR;
408
yunhanw-google299393b2021-12-06 09:59:34 -0800409 EventPathIB::Builder & eventPathBuilder = aEventDataIBBuilder.CreatePath();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800410 NL_TEST_ASSERT(apSuite, eventPathBuilder.GetError() == CHIP_NO_ERROR);
411 BuildEventPath(apSuite, eventPathBuilder);
412
yunhanw-google51db97b2021-12-03 08:36:41 -0800413 aEventDataIBBuilder.EventNumber(2).Priority(3).EpochTimestamp(4).SystemTimestamp(5).DeltaEpochTimestamp(6).DeltaSystemTimestamp(
yunhanw-google3bec0f92021-11-03 16:12:39 -0700414 7);
415 err = aEventDataIBBuilder.GetError();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800416 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
417 // Construct test event data
418 {
yunhanw-google3bec0f92021-11-03 16:12:39 -0700419 chip::TLV::TLVWriter * pWriter = aEventDataIBBuilder.GetWriter();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800420 chip::TLV::TLVType dummyType = chip::TLV::kTLVType_NotSpecified;
yunhanw-google3bec0f92021-11-03 16:12:39 -0700421 err = pWriter->StartContainer(chip::TLV::ContextTag(chip::to_underlying(EventDataIB::Tag::kData)),
422 chip::TLV::kTLVType_Structure, dummyType);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800423 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
424
425 err = pWriter->PutBoolean(chip::TLV::ContextTag(1), true);
426 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
427
428 err = pWriter->EndContainer(dummyType);
429 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
430 }
431
yunhanw-google3bec0f92021-11-03 16:12:39 -0700432 aEventDataIBBuilder.EndOfEventDataIB();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800433}
434
yunhanw-google3bec0f92021-11-03 16:12:39 -0700435void ParseEventDataIB(nlTestSuite * apSuite, EventDataIB::Parser & aEventDataIBParser)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800436{
yunhanw-googledf5569f2021-02-25 11:14:18 -0800437 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google3bec0f92021-11-03 16:12:39 -0700438 uint8_t priorityLevel = 0;
439 chip::EventNumber number = 0;
440 uint64_t EpochTimestamp = 0;
yunhanw-googledf5569f2021-02-25 11:14:18 -0800441 uint64_t systemTimestamp = 0;
442 uint64_t deltaUTCTimestamp = 0;
443 uint64_t deltaSystemTimestamp = 0;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800444
yunhanw-googled644bb02021-04-13 07:26:17 -0700445#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-google3bec0f92021-11-03 16:12:39 -0700446 err = aEventDataIBParser.CheckSchemaValidity();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800447 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700448#endif
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800449 {
450 {
yunhanw-google2fe90242021-11-01 15:13:44 -0700451 EventPathIB::Parser eventPath;
yunhanw-google3bec0f92021-11-03 16:12:39 -0700452 err = aEventDataIBParser.GetPath(&eventPath);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800453 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
454 }
yunhanw-google3bec0f92021-11-03 16:12:39 -0700455 err = aEventDataIBParser.GetEventNumber(&number);
yunhanw-google51db97b2021-12-03 08:36:41 -0800456 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && number == 2);
457 err = aEventDataIBParser.GetPriority(&priorityLevel);
458 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && priorityLevel == 3);
yunhanw-google3bec0f92021-11-03 16:12:39 -0700459 err = aEventDataIBParser.GetEpochTimestamp(&EpochTimestamp);
460 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && EpochTimestamp == 4);
461 err = aEventDataIBParser.GetSystemTimestamp(&systemTimestamp);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800462 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && systemTimestamp == 5);
yunhanw-google3bec0f92021-11-03 16:12:39 -0700463 err = aEventDataIBParser.GetDeltaEpochTimestamp(&deltaUTCTimestamp);
yunhanw-googledf5569f2021-02-25 11:14:18 -0800464 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && deltaUTCTimestamp == 6);
yunhanw-google3bec0f92021-11-03 16:12:39 -0700465 err = aEventDataIBParser.GetDeltaSystemTimestamp(&deltaSystemTimestamp);
yunhanw-googledf5569f2021-02-25 11:14:18 -0800466 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && deltaSystemTimestamp == 7);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800467
468 {
469 chip::TLV::TLVReader reader;
470 bool val = false;
471 chip::TLV::TLVType container;
yunhanw-google3bec0f92021-11-03 16:12:39 -0700472 aEventDataIBParser.GetData(&reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800473 err = reader.EnterContainer(container);
474 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
475
476 err = reader.Next();
477 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
478
479 err = reader.Get(val);
480 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && val);
481
482 err = reader.ExitContainer(container);
483 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
484 }
485 }
486}
487
yunhanw-google1f6c6e62021-11-02 10:09:53 -0700488void BuildEventStatusIB(nlTestSuite * apSuite, EventStatusIB::Builder & aEventStatusIBBuilder)
489{
yunhanw-google299393b2021-12-06 09:59:34 -0800490 EventPathIB::Builder & eventPathBuilder = aEventStatusIBBuilder.CreatePath();
yunhanw-google1f6c6e62021-11-02 10:09:53 -0700491 NL_TEST_ASSERT(apSuite, aEventStatusIBBuilder.GetError() == CHIP_NO_ERROR);
492 BuildEventPath(apSuite, eventPathBuilder);
493
yunhanw-google299393b2021-12-06 09:59:34 -0800494 StatusIB::Builder & statusIBBuilder = aEventStatusIBBuilder.CreateErrorStatus();
yunhanw-google1f6c6e62021-11-02 10:09:53 -0700495 NL_TEST_ASSERT(apSuite, statusIBBuilder.GetError() == CHIP_NO_ERROR);
496 BuildStatusIB(apSuite, statusIBBuilder);
497
498 aEventStatusIBBuilder.EndOfEventStatusIB();
499 NL_TEST_ASSERT(apSuite, aEventStatusIBBuilder.GetError() == CHIP_NO_ERROR);
500}
501
502void ParseEventStatusIB(nlTestSuite * apSuite, EventStatusIB::Parser & aEventStatusIBParser)
503{
504 CHIP_ERROR err = CHIP_NO_ERROR;
505 EventPathIB::Parser eventPathParser;
506 StatusIB::Parser statusParser;
507#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
508 err = aEventStatusIBParser.CheckSchemaValidity();
509 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
510#endif
511 err = aEventStatusIBParser.GetPath(&eventPathParser);
512 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
513
514 err = aEventStatusIBParser.GetErrorStatus(&statusParser);
515 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
516}
517
yunhanw-google3bec0f92021-11-03 16:12:39 -0700518void BuildEventReportIB(nlTestSuite * apSuite, EventReportIB::Builder & aEventReportIBBuilder)
519{
yunhanw-google299393b2021-12-06 09:59:34 -0800520 EventDataIB::Builder & eventDataIBBuilder = aEventReportIBBuilder.CreateEventData();
yunhanw-google3bec0f92021-11-03 16:12:39 -0700521 NL_TEST_ASSERT(apSuite, aEventReportIBBuilder.GetError() == CHIP_NO_ERROR);
522 BuildEventDataIB(apSuite, eventDataIBBuilder);
523
524 aEventReportIBBuilder.EndOfEventReportIB();
525 NL_TEST_ASSERT(apSuite, aEventReportIBBuilder.GetError() == CHIP_NO_ERROR);
526}
527
528void ParseEventReportIB(nlTestSuite * apSuite, EventReportIB::Parser & aEventReportIBParser)
529{
530 CHIP_ERROR err = CHIP_NO_ERROR;
531 EventStatusIB::Parser eventStatusParser;
532 EventDataIB::Parser eventDataParser;
533
534#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
535 err = aEventReportIBParser.CheckSchemaValidity();
536 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
537#endif
yunhanw-googlef3d6b7c2021-11-17 13:42:38 -0800538
yunhanw-google3bec0f92021-11-03 16:12:39 -0700539 err = aEventReportIBParser.GetEventData(&eventDataParser);
540 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
541}
542
yunhanw-googlef1117272021-12-02 19:59:44 -0800543void BuildEventReports(nlTestSuite * apSuite, EventReportIBs::Builder & aEventReportsBuilder)
yunhanw-google3bec0f92021-11-03 16:12:39 -0700544{
yunhanw-google299393b2021-12-06 09:59:34 -0800545 EventReportIB::Builder & eventReportIBBuilder = aEventReportsBuilder.CreateEventReport();
yunhanw-google3bec0f92021-11-03 16:12:39 -0700546 NL_TEST_ASSERT(apSuite, aEventReportsBuilder.GetError() == CHIP_NO_ERROR);
547 BuildEventReportIB(apSuite, eventReportIBBuilder);
yunhanw-google3bec0f92021-11-03 16:12:39 -0700548 aEventReportsBuilder.EndOfEventReports();
549 NL_TEST_ASSERT(apSuite, aEventReportsBuilder.GetError() == CHIP_NO_ERROR);
550}
551
552void ParseEventReports(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
553{
554 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googlef1117272021-12-02 19:59:44 -0800555 EventReportIBs::Parser eventReportsParser;
yunhanw-google3bec0f92021-11-03 16:12:39 -0700556
557 err = eventReportsParser.Init(aReader);
558 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
559#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
560 err = eventReportsParser.CheckSchemaValidity();
561 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
562#endif
563}
564
yunhanw-google35e67172021-10-11 17:12:06 -0700565void BuildAttributeStatusIB(nlTestSuite * apSuite, AttributeStatusIB::Builder & aAttributeStatusIBBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800566{
yunhanw-google299393b2021-12-06 09:59:34 -0800567 AttributePathIB::Builder & attributePathBuilder = aAttributeStatusIBBuilder.CreatePath();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800568 NL_TEST_ASSERT(apSuite, attributePathBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google64ffda02021-11-04 18:05:36 -0700569 BuildAttributePathIB(apSuite, attributePathBuilder);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800570
yunhanw-google299393b2021-12-06 09:59:34 -0800571 StatusIB::Builder & statusIBBuilder = aAttributeStatusIBBuilder.CreateErrorStatus();
yunhanw-google35e67172021-10-11 17:12:06 -0700572 NL_TEST_ASSERT(apSuite, statusIBBuilder.GetError() == CHIP_NO_ERROR);
573 BuildStatusIB(apSuite, statusIBBuilder);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800574
yunhanw-google35e67172021-10-11 17:12:06 -0700575 aAttributeStatusIBBuilder.EndOfAttributeStatusIB();
576 NL_TEST_ASSERT(apSuite, aAttributeStatusIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800577}
578
yunhanw-google35e67172021-10-11 17:12:06 -0700579void ParseAttributeStatusIB(nlTestSuite * apSuite, AttributeStatusIB::Parser & aAttributeStatusIBParser)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800580{
581 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google64ffda02021-11-04 18:05:36 -0700582 AttributePathIB::Parser attributePathParser;
yunhanw-google35e67172021-10-11 17:12:06 -0700583 StatusIB::Parser StatusIBParser;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800584
yunhanw-googled644bb02021-04-13 07:26:17 -0700585#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-google35e67172021-10-11 17:12:06 -0700586 err = aAttributeStatusIBParser.CheckSchemaValidity();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800587 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700588#endif
yunhanw-google64ffda02021-11-04 18:05:36 -0700589 err = aAttributeStatusIBParser.GetPath(&attributePathParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800590 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
591
yunhanw-google64ffda02021-11-04 18:05:36 -0700592 err = aAttributeStatusIBParser.GetErrorStatus(&StatusIBParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800593 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
594}
595
yunhanw-googlef1117272021-12-02 19:59:44 -0800596void BuildAttributeStatuses(nlTestSuite * apSuite, AttributeStatusIBs::Builder & aAttributeStatusesBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800597{
yunhanw-google299393b2021-12-06 09:59:34 -0800598 AttributeStatusIB::Builder & aAttributeStatusIBBuilder = aAttributeStatusesBuilder.CreateAttributeStatus();
yunhanw-google64ffda02021-11-04 18:05:36 -0700599 NL_TEST_ASSERT(apSuite, aAttributeStatusesBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google35e67172021-10-11 17:12:06 -0700600 BuildAttributeStatusIB(apSuite, aAttributeStatusIBBuilder);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800601
yunhanw-google64ffda02021-11-04 18:05:36 -0700602 aAttributeStatusesBuilder.EndOfAttributeStatuses();
603 NL_TEST_ASSERT(apSuite, aAttributeStatusesBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800604}
605
yunhanw-google64ffda02021-11-04 18:05:36 -0700606void ParseAttributeStatuses(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800607{
608 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googlef1117272021-12-02 19:59:44 -0800609 AttributeStatusIBs::Parser attributeStatusParser;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800610
611 err = attributeStatusParser.Init(aReader);
612 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
613
yunhanw-googled644bb02021-04-13 07:26:17 -0700614#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800615 err = attributeStatusParser.CheckSchemaValidity();
616 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700617#endif
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800618}
619
yunhanw-googleb717b362021-11-08 13:34:19 -0800620void BuildAttributeDataIB(nlTestSuite * apSuite, AttributeDataIB::Builder & aAttributeDataIBBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800621{
622 CHIP_ERROR err = CHIP_NO_ERROR;
623
yunhanw-google51db97b2021-12-03 08:36:41 -0800624 aAttributeDataIBBuilder.DataVersion(2);
yunhanw-google299393b2021-12-06 09:59:34 -0800625 AttributePathIB::Builder & attributePathBuilder = aAttributeDataIBBuilder.CreatePath();
yunhanw-googleb717b362021-11-08 13:34:19 -0800626 NL_TEST_ASSERT(apSuite, aAttributeDataIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google64ffda02021-11-04 18:05:36 -0700627 BuildAttributePathIB(apSuite, attributePathBuilder);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800628
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800629 // Construct attribute data
630 {
yunhanw-googleb717b362021-11-08 13:34:19 -0800631 chip::TLV::TLVWriter * pWriter = aAttributeDataIBBuilder.GetWriter();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800632 chip::TLV::TLVType dummyType = chip::TLV::kTLVType_NotSpecified;
yunhanw-googleb717b362021-11-08 13:34:19 -0800633 err = pWriter->StartContainer(chip::TLV::ContextTag(chip::to_underlying(AttributeDataIB::Tag::kData)),
634 chip::TLV::kTLVType_Structure, dummyType);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800635 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
636
637 err = pWriter->PutBoolean(chip::TLV::ContextTag(1), true);
638 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
639
640 err = pWriter->EndContainer(dummyType);
641 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
642 }
yunhanw-google51db97b2021-12-03 08:36:41 -0800643
yunhanw-googleb717b362021-11-08 13:34:19 -0800644 err = aAttributeDataIBBuilder.GetError();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800645 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googleb717b362021-11-08 13:34:19 -0800646 aAttributeDataIBBuilder.EndOfAttributeDataIB();
647 NL_TEST_ASSERT(apSuite, aAttributeDataIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800648}
649
yunhanw-googleb717b362021-11-08 13:34:19 -0800650void ParseAttributeDataIB(nlTestSuite * apSuite, AttributeDataIB::Parser & aAttributeDataIBParser)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800651{
652 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google64ffda02021-11-04 18:05:36 -0700653 AttributePathIB::Parser attributePathParser;
yunhanw-google0edb9f92022-02-11 00:50:59 -0800654 chip::DataVersion version = 0;
yunhanw-googled644bb02021-04-13 07:26:17 -0700655#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-googleb717b362021-11-08 13:34:19 -0800656 err = aAttributeDataIBParser.CheckSchemaValidity();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800657 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700658#endif
yunhanw-googleb717b362021-11-08 13:34:19 -0800659 err = aAttributeDataIBParser.GetPath(&attributePathParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800660 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
661
yunhanw-googleb717b362021-11-08 13:34:19 -0800662 err = aAttributeDataIBParser.GetDataVersion(&version);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800663 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && version == 2);
664
665 {
666 chip::TLV::TLVReader reader;
667 bool val = false;
668 chip::TLV::TLVType container;
yunhanw-googleb717b362021-11-08 13:34:19 -0800669 aAttributeDataIBParser.GetData(&reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800670 err = reader.EnterContainer(container);
671 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
672
673 err = reader.Next();
674 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
675
676 err = reader.Get(val);
677 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && val);
678
679 err = reader.ExitContainer(container);
680 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
681 }
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800682}
683
yunhanw-googleb717b362021-11-08 13:34:19 -0800684void BuildAttributeDataIBs(nlTestSuite * apSuite, AttributeDataIBs::Builder & aAttributeDataIBsBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800685{
yunhanw-google299393b2021-12-06 09:59:34 -0800686 AttributeDataIB::Builder & attributeDataIBBuilder = aAttributeDataIBsBuilder.CreateAttributeDataIBBuilder();
yunhanw-googleb717b362021-11-08 13:34:19 -0800687 NL_TEST_ASSERT(apSuite, aAttributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google299393b2021-12-06 09:59:34 -0800688 BuildAttributeDataIB(apSuite, attributeDataIBBuilder);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800689
yunhanw-googleb717b362021-11-08 13:34:19 -0800690 aAttributeDataIBsBuilder.EndOfAttributeDataIBs();
691 NL_TEST_ASSERT(apSuite, aAttributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800692}
693
yunhanw-googleb717b362021-11-08 13:34:19 -0800694void ParseAttributeDataIBs(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800695{
696 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googleb717b362021-11-08 13:34:19 -0800697 AttributeDataIBs::Parser AttributeDataIBsParser;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800698
yunhanw-googleb717b362021-11-08 13:34:19 -0800699 err = AttributeDataIBsParser.Init(aReader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800700 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700701#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-googleb717b362021-11-08 13:34:19 -0800702 err = AttributeDataIBsParser.CheckSchemaValidity();
703 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
704#endif
705}
706
707void BuildAttributeReportIB(nlTestSuite * apSuite, AttributeReportIB::Builder & aAttributeReportIBBuilder)
708{
yunhanw-google299393b2021-12-06 09:59:34 -0800709 AttributeDataIB::Builder & attributeDataIBBuilder = aAttributeReportIBBuilder.CreateAttributeData();
yunhanw-googleb717b362021-11-08 13:34:19 -0800710 NL_TEST_ASSERT(apSuite, aAttributeReportIBBuilder.GetError() == CHIP_NO_ERROR);
711 BuildAttributeDataIB(apSuite, attributeDataIBBuilder);
712
713 aAttributeReportIBBuilder.EndOfAttributeReportIB();
714 NL_TEST_ASSERT(apSuite, aAttributeReportIBBuilder.GetError() == CHIP_NO_ERROR);
715}
716
717void ParseAttributeReportIB(nlTestSuite * apSuite, AttributeReportIB::Parser & aAttributeReportIBParser)
718{
719 CHIP_ERROR err = CHIP_NO_ERROR;
720 AttributeStatusIB::Parser attributeStatusParser;
721 AttributeDataIB::Parser attributeDataParser;
722
723#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
724 err = aAttributeReportIBParser.CheckSchemaValidity();
725 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
726#endif
727 err = aAttributeReportIBParser.GetAttributeData(&attributeDataParser);
728 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
729}
730
731void BuildAttributeReportIBs(nlTestSuite * apSuite, AttributeReportIBs::Builder & aAttributeReportIBsBuilder)
732{
yunhanw-google299393b2021-12-06 09:59:34 -0800733 AttributeReportIB::Builder & attributeReportIBBuilder = aAttributeReportIBsBuilder.CreateAttributeReport();
yunhanw-googleb717b362021-11-08 13:34:19 -0800734 NL_TEST_ASSERT(apSuite, aAttributeReportIBsBuilder.GetError() == CHIP_NO_ERROR);
735 BuildAttributeReportIB(apSuite, attributeReportIBBuilder);
736
737 aAttributeReportIBsBuilder.EndOfAttributeReportIBs();
738 NL_TEST_ASSERT(apSuite, aAttributeReportIBsBuilder.GetError() == CHIP_NO_ERROR);
739}
740
741void ParseAttributeReportIBs(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
742{
743 CHIP_ERROR err = CHIP_NO_ERROR;
744 AttributeReportIBs::Parser attributeReportIBsParser;
745
746 err = attributeReportIBsParser.Init(aReader);
747 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
748#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
749 err = attributeReportIBsParser.CheckSchemaValidity();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800750 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700751#endif
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800752}
753
yunhanw-google67f74a32021-10-21 12:15:08 -0700754void BuildCommandDataIB(nlTestSuite * apSuite, CommandDataIB::Builder & aCommandDataIBBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800755{
756 CHIP_ERROR err = CHIP_NO_ERROR;
757
yunhanw-google299393b2021-12-06 09:59:34 -0800758 CommandPathIB::Builder & commandPathBuilder = aCommandDataIBBuilder.CreatePath();
yunhanw-google67f74a32021-10-21 12:15:08 -0700759 NL_TEST_ASSERT(apSuite, aCommandDataIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800760 BuildCommandPath(apSuite, commandPathBuilder);
761
762 // Construct command data
763 {
yunhanw-google67f74a32021-10-21 12:15:08 -0700764 chip::TLV::TLVWriter * pWriter = aCommandDataIBBuilder.GetWriter();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800765 chip::TLV::TLVType dummyType = chip::TLV::kTLVType_NotSpecified;
yunhanw-google731ae5a2022-06-01 23:02:05 -0700766 err = pWriter->StartContainer(chip::TLV::ContextTag(chip::to_underlying(CommandDataIB::Tag::kFields)),
yunhanw-google36e61e32021-11-02 08:31:34 -0700767 chip::TLV::kTLVType_Structure, dummyType);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800768 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
769
770 err = pWriter->PutBoolean(chip::TLV::ContextTag(1), true);
771 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
772
773 err = pWriter->EndContainer(dummyType);
774 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
775 }
776
yunhanw-google67f74a32021-10-21 12:15:08 -0700777 aCommandDataIBBuilder.EndOfCommandDataIB();
778 NL_TEST_ASSERT(apSuite, aCommandDataIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800779}
780
yunhanw-google67f74a32021-10-21 12:15:08 -0700781void ParseCommandDataIB(nlTestSuite * apSuite, CommandDataIB::Parser & aCommandDataIBParser)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800782{
783 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google8c2638c2021-10-20 16:33:42 -0700784 CommandPathIB::Parser commandPathParser;
yunhanw-googled644bb02021-04-13 07:26:17 -0700785#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-google67f74a32021-10-21 12:15:08 -0700786 err = aCommandDataIBParser.CheckSchemaValidity();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800787 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700788#endif
yunhanw-google36e61e32021-11-02 08:31:34 -0700789 err = aCommandDataIBParser.GetPath(&commandPathParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800790 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
791
792 {
793 chip::TLV::TLVReader reader;
794 bool val = false;
795 chip::TLV::TLVType container;
yunhanw-google731ae5a2022-06-01 23:02:05 -0700796 aCommandDataIBParser.GetFields(&reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800797 err = reader.EnterContainer(container);
798 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
799
800 err = reader.Next();
801 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
802
803 err = reader.Get(val);
804 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && val);
805
806 err = reader.ExitContainer(container);
807 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
808 }
809}
810
yunhanw-google36e61e32021-11-02 08:31:34 -0700811void BuildCommandStatusIB(nlTestSuite * apSuite, CommandStatusIB::Builder & aCommandStatusIBBuilder)
yunhanw-google9577ff52021-04-05 12:51:14 -0700812{
yunhanw-google299393b2021-12-06 09:59:34 -0800813 CommandPathIB::Builder & commandPathBuilder = aCommandStatusIBBuilder.CreatePath();
yunhanw-google36e61e32021-11-02 08:31:34 -0700814 NL_TEST_ASSERT(apSuite, aCommandStatusIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google9577ff52021-04-05 12:51:14 -0700815 BuildCommandPath(apSuite, commandPathBuilder);
816
yunhanw-google299393b2021-12-06 09:59:34 -0800817 StatusIB::Builder & statusIBBuilder = aCommandStatusIBBuilder.CreateErrorStatus();
yunhanw-google35e67172021-10-11 17:12:06 -0700818 NL_TEST_ASSERT(apSuite, statusIBBuilder.GetError() == CHIP_NO_ERROR);
819 BuildStatusIB(apSuite, statusIBBuilder);
yunhanw-google9577ff52021-04-05 12:51:14 -0700820
yunhanw-google36e61e32021-11-02 08:31:34 -0700821 aCommandStatusIBBuilder.EndOfCommandStatusIB();
822 NL_TEST_ASSERT(apSuite, aCommandStatusIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google9577ff52021-04-05 12:51:14 -0700823}
824
yunhanw-google36e61e32021-11-02 08:31:34 -0700825void ParseCommandStatusIB(nlTestSuite * apSuite, CommandStatusIB::Parser & aCommandStatusIBParser)
yunhanw-google9577ff52021-04-05 12:51:14 -0700826{
827 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google8c2638c2021-10-20 16:33:42 -0700828 CommandPathIB::Parser commandPathParser;
yunhanw-google36e61e32021-11-02 08:31:34 -0700829 StatusIB::Parser statusParser;
yunhanw-googled644bb02021-04-13 07:26:17 -0700830#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-google36e61e32021-11-02 08:31:34 -0700831 err = aCommandStatusIBParser.CheckSchemaValidity();
yunhanw-google9577ff52021-04-05 12:51:14 -0700832 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -0700833#endif
yunhanw-google36e61e32021-11-02 08:31:34 -0700834 err = aCommandStatusIBParser.GetPath(&commandPathParser);
yunhanw-google9577ff52021-04-05 12:51:14 -0700835 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
836
yunhanw-google36e61e32021-11-02 08:31:34 -0700837 err = aCommandStatusIBParser.GetErrorStatus(&statusParser);
yunhanw-google9577ff52021-04-05 12:51:14 -0700838 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
839}
840
yunhanw-google36e61e32021-11-02 08:31:34 -0700841void BuildWrongInvokeResponseIB(nlTestSuite * apSuite, InvokeResponseIB::Builder & aInvokeResponseIBBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800842{
yunhanw-google299393b2021-12-06 09:59:34 -0800843 CommandDataIB::Builder & commandDataBuilder = aInvokeResponseIBBuilder.CreateCommand();
yunhanw-google36e61e32021-11-02 08:31:34 -0700844 NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
845 BuildCommandDataIB(apSuite, commandDataBuilder);
yunhanw-google299393b2021-12-06 09:59:34 -0800846 CommandStatusIB::Builder & commandStatusBuilder = aInvokeResponseIBBuilder.CreateStatus();
yunhanw-google36e61e32021-11-02 08:31:34 -0700847 NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
848 BuildCommandStatusIB(apSuite, commandStatusBuilder);
849 aInvokeResponseIBBuilder.EndOfInvokeResponseIB();
850 NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800851}
852
yunhanw-google36e61e32021-11-02 08:31:34 -0700853void BuildInvokeResponseIBWithCommandDataIB(nlTestSuite * apSuite, InvokeResponseIB::Builder & aInvokeResponseIBBuilder)
854{
yunhanw-google299393b2021-12-06 09:59:34 -0800855 CommandDataIB::Builder & commandDataBuilder = aInvokeResponseIBBuilder.CreateCommand();
yunhanw-google36e61e32021-11-02 08:31:34 -0700856 NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
857 BuildCommandDataIB(apSuite, commandDataBuilder);
858 aInvokeResponseIBBuilder.EndOfInvokeResponseIB();
859 NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
860}
861
862void BuildInvokeResponseIBWithCommandStatusIB(nlTestSuite * apSuite, InvokeResponseIB::Builder & aInvokeResponseIBBuilder)
863{
yunhanw-google299393b2021-12-06 09:59:34 -0800864 CommandStatusIB::Builder & commandStatusBuilder = aInvokeResponseIBBuilder.CreateStatus();
yunhanw-google36e61e32021-11-02 08:31:34 -0700865 NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
866 BuildCommandStatusIB(apSuite, commandStatusBuilder);
867 aInvokeResponseIBBuilder.EndOfInvokeResponseIB();
868 NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
869}
870
871void ParseInvokeResponseIBWithCommandDataIB(nlTestSuite * apSuite, InvokeResponseIB::Parser & aInvokeResponseIBParser)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800872{
873 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google36e61e32021-11-02 08:31:34 -0700874 CommandDataIB::Parser commandDataParser;
875 CommandStatusIB::Parser statusIBParser;
876#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
877 err = aInvokeResponseIBParser.CheckSchemaValidity();
878 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
879#endif
880 err = aInvokeResponseIBParser.GetCommand(&commandDataParser);
881 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
882}
883
884void ParseInvokeResponseIBWithCommandStatusIB(nlTestSuite * apSuite, InvokeResponseIB::Parser & aInvokeResponseIBParser)
885{
886 CHIP_ERROR err = CHIP_NO_ERROR;
887 CommandDataIB::Parser commandDataParser;
888 CommandStatusIB::Parser statusIBParser;
889#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
890 err = aInvokeResponseIBParser.CheckSchemaValidity();
891 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
892#endif
893 err = aInvokeResponseIBParser.GetStatus(&statusIBParser);
894 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
895}
896
897void ParseWrongInvokeResponseIB(nlTestSuite * apSuite, InvokeResponseIB::Parser & aInvokeResponseIBParser)
898{
899 CommandDataIB::Parser commandDataParser;
900 CommandStatusIB::Parser statusIBParser;
901#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
902 CHIP_ERROR err = aInvokeResponseIBParser.CheckSchemaValidity();
903 NL_TEST_ASSERT(apSuite, err != CHIP_NO_ERROR);
904#endif
905}
906
907void BuildInvokeRequests(nlTestSuite * apSuite, InvokeRequests::Builder & aInvokeRequestsBuilder)
908{
yunhanw-google299393b2021-12-06 09:59:34 -0800909 CommandDataIB::Builder & aCommandDataIBBuilder = aInvokeRequestsBuilder.CreateCommandData();
yunhanw-google36e61e32021-11-02 08:31:34 -0700910 NL_TEST_ASSERT(apSuite, aInvokeRequestsBuilder.GetError() == CHIP_NO_ERROR);
911 BuildCommandDataIB(apSuite, aCommandDataIBBuilder);
912
913 aInvokeRequestsBuilder.EndOfInvokeRequests();
914 NL_TEST_ASSERT(apSuite, aInvokeRequestsBuilder.GetError() == CHIP_NO_ERROR);
915}
916
917void ParseInvokeRequests(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
918{
919 CHIP_ERROR err = CHIP_NO_ERROR;
920 InvokeRequests::Parser invokeRequestsParser;
921 err = invokeRequestsParser.Init(aReader);
yunhanw-googled644bb02021-04-13 07:26:17 -0700922 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
923
924#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-google36e61e32021-11-02 08:31:34 -0700925 err = invokeRequestsParser.CheckSchemaValidity();
926 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
927#endif
928}
929
yunhanw-googlef1117272021-12-02 19:59:44 -0800930void BuildInvokeResponses(nlTestSuite * apSuite, InvokeResponseIBs::Builder & aInvokeResponsesBuilder)
yunhanw-google36e61e32021-11-02 08:31:34 -0700931{
yunhanw-google299393b2021-12-06 09:59:34 -0800932 InvokeResponseIB::Builder & invokeResponseIBBuilder = aInvokeResponsesBuilder.CreateInvokeResponse();
yunhanw-google36e61e32021-11-02 08:31:34 -0700933 NL_TEST_ASSERT(apSuite, aInvokeResponsesBuilder.GetError() == CHIP_NO_ERROR);
934 BuildInvokeResponseIBWithCommandDataIB(apSuite, invokeResponseIBBuilder);
935
936 aInvokeResponsesBuilder.EndOfInvokeResponses();
937 NL_TEST_ASSERT(apSuite, aInvokeResponsesBuilder.GetError() == CHIP_NO_ERROR);
938}
939
940void ParseInvokeResponses(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
941{
942 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googlef1117272021-12-02 19:59:44 -0800943 InvokeResponseIBs::Parser invokeResponsesParser;
yunhanw-google36e61e32021-11-02 08:31:34 -0700944 err = invokeResponsesParser.Init(aReader);
945 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
946
947#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
948 err = invokeResponsesParser.CheckSchemaValidity();
949 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
950#endif
951}
952
953void BuildInvokeRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
954{
955 CHIP_ERROR err = CHIP_NO_ERROR;
956 InvokeRequestMessage::Builder invokeRequestMessageBuilder;
957 err = invokeRequestMessageBuilder.Init(&aWriter);
958 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
959 invokeRequestMessageBuilder.SuppressResponse(true);
960 invokeRequestMessageBuilder.TimedRequest(true);
yunhanw-google299393b2021-12-06 09:59:34 -0800961 InvokeRequests::Builder & invokeRequestsBuilder = invokeRequestMessageBuilder.CreateInvokeRequests();
yunhanw-google36e61e32021-11-02 08:31:34 -0700962 NL_TEST_ASSERT(apSuite, invokeRequestsBuilder.GetError() == CHIP_NO_ERROR);
963
964 BuildInvokeRequests(apSuite, invokeRequestsBuilder);
965
966 invokeRequestMessageBuilder.EndOfInvokeRequestMessage();
967 NL_TEST_ASSERT(apSuite, invokeRequestMessageBuilder.GetError() == CHIP_NO_ERROR);
968}
969
970void ParseInvokeRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
971{
972 CHIP_ERROR err = CHIP_NO_ERROR;
973 InvokeRequestMessage::Parser invokeRequestMessageParser;
974 err = invokeRequestMessageParser.Init(aReader);
975 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
976
977 bool suppressResponse = false;
978 bool timedRequest = false;
979 invokeRequestMessageParser.GetSuppressResponse(&suppressResponse);
980 invokeRequestMessageParser.GetTimedRequest(&timedRequest);
981 NL_TEST_ASSERT(apSuite, suppressResponse == true);
982 NL_TEST_ASSERT(apSuite, timedRequest == true);
983#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
984 err = invokeRequestMessageParser.CheckSchemaValidity();
985 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
986#endif
yunhanw-google4394fcb2022-02-17 17:36:41 -0800987 NL_TEST_ASSERT(apSuite, invokeRequestMessageParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-google36e61e32021-11-02 08:31:34 -0700988}
989
990void BuildInvokeResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
991{
992 CHIP_ERROR err = CHIP_NO_ERROR;
993 InvokeResponseMessage::Builder invokeResponseMessageBuilder;
994 err = invokeResponseMessageBuilder.Init(&aWriter);
995
996 invokeResponseMessageBuilder.SuppressResponse(true);
yunhanw-google299393b2021-12-06 09:59:34 -0800997 InvokeResponseIBs::Builder & invokeResponsesBuilder = invokeResponseMessageBuilder.CreateInvokeResponses();
yunhanw-google36e61e32021-11-02 08:31:34 -0700998 NL_TEST_ASSERT(apSuite, invokeResponseMessageBuilder.GetError() == CHIP_NO_ERROR);
999
1000 BuildInvokeResponses(apSuite, invokeResponsesBuilder);
1001
1002 invokeResponseMessageBuilder.EndOfInvokeResponseMessage();
1003 NL_TEST_ASSERT(apSuite, invokeResponseMessageBuilder.GetError() == CHIP_NO_ERROR);
1004}
1005
1006void ParseInvokeResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
1007{
1008 CHIP_ERROR err = CHIP_NO_ERROR;
1009 InvokeResponseMessage::Parser invokeResponseMessageParser;
1010 err = invokeResponseMessageParser.Init(aReader);
1011 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1012
1013 bool suppressResponse = false;
1014 invokeResponseMessageParser.GetSuppressResponse(&suppressResponse);
1015 NL_TEST_ASSERT(apSuite, suppressResponse == true);
1016#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
1017 err = invokeResponseMessageParser.CheckSchemaValidity();
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001018 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -07001019#endif
yunhanw-google4394fcb2022-02-17 17:36:41 -08001020 NL_TEST_ASSERT(apSuite, invokeResponseMessageParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001021}
1022
yunhanw-google12ec7022021-11-01 19:53:29 -07001023void BuildReportDataMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001024{
1025 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googleb717b362021-11-08 13:34:19 -08001026 ReportDataMessage::Builder reportDataMessageBuilder;
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001027
yunhanw-googleb717b362021-11-08 13:34:19 -08001028 err = reportDataMessageBuilder.Init(&aWriter);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001029 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1030
yunhanw-google51db97b2021-12-03 08:36:41 -08001031 reportDataMessageBuilder.SubscriptionId(2);
yunhanw-googleb717b362021-11-08 13:34:19 -08001032 NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001033
yunhanw-google299393b2021-12-06 09:59:34 -08001034 AttributeReportIBs::Builder & attributeReportIBs = reportDataMessageBuilder.CreateAttributeReportIBs();
yunhanw-googleb717b362021-11-08 13:34:19 -08001035 NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google299393b2021-12-06 09:59:34 -08001036 BuildAttributeReportIBs(apSuite, attributeReportIBs);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001037
yunhanw-google299393b2021-12-06 09:59:34 -08001038 EventReportIBs::Builder & eventReportIBs = reportDataMessageBuilder.CreateEventReports();
yunhanw-googleb717b362021-11-08 13:34:19 -08001039 NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google299393b2021-12-06 09:59:34 -08001040 BuildEventReports(apSuite, eventReportIBs);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001041
yunhanw-google51db97b2021-12-03 08:36:41 -08001042 reportDataMessageBuilder.MoreChunkedMessages(true).SuppressResponse(true);
yunhanw-googleb717b362021-11-08 13:34:19 -08001043 NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001044
yunhanw-googleb717b362021-11-08 13:34:19 -08001045 reportDataMessageBuilder.EndOfReportDataMessage();
1046 NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001047}
1048
yunhanw-google12ec7022021-11-01 19:53:29 -07001049void ParseReportDataMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001050{
1051 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google12ec7022021-11-01 19:53:29 -07001052 ReportDataMessage::Parser reportDataParser;
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001053
Song GUO6e224672022-05-14 05:58:58 +08001054 bool suppressResponse = false;
1055 chip::SubscriptionId subscriptionId = 0;
yunhanw-googleb717b362021-11-08 13:34:19 -08001056 AttributeReportIBs::Parser attributeReportIBsParser;
yunhanw-googlef1117272021-12-02 19:59:44 -08001057 EventReportIBs::Parser eventReportsParser;
yunhanw-googledf5569f2021-02-25 11:14:18 -08001058 bool moreChunkedMessages = false;
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001059 reportDataParser.Init(aReader);
1060
yunhanw-googled644bb02021-04-13 07:26:17 -07001061#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001062 err = reportDataParser.CheckSchemaValidity();
1063 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -07001064#endif
yunhanw-googledf5569f2021-02-25 11:14:18 -08001065 err = reportDataParser.GetSuppressResponse(&suppressResponse);
1066 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && suppressResponse);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001067
1068 err = reportDataParser.GetSubscriptionId(&subscriptionId);
1069 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && subscriptionId == 2);
1070
yunhanw-googleb717b362021-11-08 13:34:19 -08001071 err = reportDataParser.GetAttributeReportIBs(&attributeReportIBsParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001072 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1073
yunhanw-googleb717b362021-11-08 13:34:19 -08001074 err = reportDataParser.GetEventReports(&eventReportsParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001075 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1076
yunhanw-googledf5569f2021-02-25 11:14:18 -08001077 err = reportDataParser.GetMoreChunkedMessages(&moreChunkedMessages);
1078 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && moreChunkedMessages);
yunhanw-google4394fcb2022-02-17 17:36:41 -08001079 NL_TEST_ASSERT(apSuite, reportDataParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001080}
1081
yunhanw-google12ec7022021-11-01 19:53:29 -07001082void BuildReadRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
yunhanw-google0c183552021-01-22 09:12:14 -08001083{
1084 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google12ec7022021-11-01 19:53:29 -07001085 ReadRequestMessage::Builder readRequestBuilder;
yunhanw-google0c183552021-01-22 09:12:14 -08001086
1087 err = readRequestBuilder.Init(&aWriter);
1088 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1089
yunhanw-google299393b2021-12-06 09:59:34 -08001090 AttributePathIBs::Builder & attributePathIBs = readRequestBuilder.CreateAttributeRequests();
yunhanw-google0c183552021-01-22 09:12:14 -08001091 NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google299393b2021-12-06 09:59:34 -08001092 BuildAttributePathList(apSuite, attributePathIBs);
yunhanw-google0c183552021-01-22 09:12:14 -08001093
yunhanw-google299393b2021-12-06 09:59:34 -08001094 EventPathIBs::Builder & eventPathList = readRequestBuilder.CreateEventRequests();
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001095
yunhanw-google0c183552021-01-22 09:12:14 -08001096 NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google2fe90242021-11-01 15:13:44 -07001097 BuildEventPaths(apSuite, eventPathList);
yunhanw-google0c183552021-01-22 09:12:14 -08001098
yunhanw-google299393b2021-12-06 09:59:34 -08001099 EventFilterIBs::Builder & eventFilters = readRequestBuilder.CreateEventFilters();
yunhanw-google0c183552021-01-22 09:12:14 -08001100 NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google494fb9b2021-11-17 12:01:02 -08001101 BuildEventFilters(apSuite, eventFilters);
yunhanw-google0c183552021-01-22 09:12:14 -08001102
yunhanw-google494fb9b2021-11-17 12:01:02 -08001103 readRequestBuilder.IsFabricFiltered(true);
yunhanw-google0c183552021-01-22 09:12:14 -08001104 NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
1105
yunhanw-google57a2df32022-04-14 11:04:47 -07001106 DataVersionFilterIBs::Builder & dataVersionFilters = readRequestBuilder.CreateDataVersionFilters();
1107 NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
1108 BuildDataVersionFilterIBs(apSuite, dataVersionFilters);
1109
yunhanw-google12ec7022021-11-01 19:53:29 -07001110 readRequestBuilder.EndOfReadRequestMessage();
yunhanw-google0c183552021-01-22 09:12:14 -08001111 NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
1112}
1113
yunhanw-google12ec7022021-11-01 19:53:29 -07001114void ParseReadRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-google0c183552021-01-22 09:12:14 -08001115{
1116 CHIP_ERROR err = CHIP_NO_ERROR;
1117
yunhanw-google12ec7022021-11-01 19:53:29 -07001118 ReadRequestMessage::Parser readRequestParser;
yunhanw-googleb717b362021-11-08 13:34:19 -08001119 AttributePathIBs::Parser attributePathListParser;
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001120 DataVersionFilterIBs::Parser dataVersionFilterIBsParser;
yunhanw-googlef1117272021-12-02 19:59:44 -08001121 EventPathIBs::Parser eventPathListParser;
1122 EventFilterIBs::Parser eventFiltersParser;
yunhanw-google494fb9b2021-11-17 12:01:02 -08001123 bool isFabricFiltered = false;
yunhanw-google0c183552021-01-22 09:12:14 -08001124
1125 err = readRequestParser.Init(aReader);
1126 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -07001127#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-google0c183552021-01-22 09:12:14 -08001128 err = readRequestParser.CheckSchemaValidity();
1129 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googled644bb02021-04-13 07:26:17 -07001130#endif
yunhanw-google494fb9b2021-11-17 12:01:02 -08001131 err = readRequestParser.GetAttributeRequests(&attributePathListParser);
yunhanw-google0c183552021-01-22 09:12:14 -08001132 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1133
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001134 err = readRequestParser.GetDataVersionFilters(&dataVersionFilterIBsParser);
1135 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1136
yunhanw-google494fb9b2021-11-17 12:01:02 -08001137 err = readRequestParser.GetEventRequests(&eventPathListParser);
yunhanw-google0c183552021-01-22 09:12:14 -08001138 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1139
yunhanw-google494fb9b2021-11-17 12:01:02 -08001140 err = readRequestParser.GetEventFilters(&eventFiltersParser);
yunhanw-google0c183552021-01-22 09:12:14 -08001141 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1142
yunhanw-google494fb9b2021-11-17 12:01:02 -08001143 err = readRequestParser.GetIsFabricFiltered(&isFabricFiltered);
1144 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && isFabricFiltered);
yunhanw-google4394fcb2022-02-17 17:36:41 -08001145 NL_TEST_ASSERT(apSuite, readRequestParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-google0c183552021-01-22 09:12:14 -08001146}
1147
yunhanw-google12ec7022021-11-01 19:53:29 -07001148void BuildWriteRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
yunhanw-googlee4c01152021-04-16 08:22:10 -07001149{
1150 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google12ec7022021-11-01 19:53:29 -07001151 WriteRequestMessage::Builder writeRequestBuilder;
yunhanw-googlee4c01152021-04-16 08:22:10 -07001152
1153 err = writeRequestBuilder.Init(&aWriter);
1154 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1155
1156 writeRequestBuilder.SuppressResponse(true);
1157 NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
1158
yunhanw-google494fb9b2021-11-17 12:01:02 -08001159 writeRequestBuilder.TimedRequest(true);
1160 NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
1161
yunhanw-google299393b2021-12-06 09:59:34 -08001162 AttributeDataIBs::Builder & attributeDataIBs = writeRequestBuilder.CreateWriteRequests();
yunhanw-googlee4c01152021-04-16 08:22:10 -07001163 NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google299393b2021-12-06 09:59:34 -08001164 BuildAttributeDataIBs(apSuite, attributeDataIBs);
yunhanw-googlee4c01152021-04-16 08:22:10 -07001165
yunhanw-googlee4c01152021-04-16 08:22:10 -07001166 writeRequestBuilder.MoreChunkedMessages(true);
1167 NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
1168
yunhanw-google12ec7022021-11-01 19:53:29 -07001169 writeRequestBuilder.EndOfWriteRequestMessage();
yunhanw-googlee4c01152021-04-16 08:22:10 -07001170 NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
1171}
1172
yunhanw-google12ec7022021-11-01 19:53:29 -07001173void ParseWriteRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlee4c01152021-04-16 08:22:10 -07001174{
1175 CHIP_ERROR err = CHIP_NO_ERROR;
1176
yunhanw-google12ec7022021-11-01 19:53:29 -07001177 WriteRequestMessage::Parser writeRequestParser;
yunhanw-googlee4c01152021-04-16 08:22:10 -07001178 bool suppressResponse = false;
yunhanw-google494fb9b2021-11-17 12:01:02 -08001179 bool timeRequest = false;
1180 AttributeDataIBs::Parser writeRequests;
yunhanw-googlee4c01152021-04-16 08:22:10 -07001181 bool moreChunkedMessages = false;
yunhanw-googlee4c01152021-04-16 08:22:10 -07001182
1183 err = writeRequestParser.Init(aReader);
1184 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1185#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
1186 err = writeRequestParser.CheckSchemaValidity();
1187 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1188#endif
1189 err = writeRequestParser.GetSuppressResponse(&suppressResponse);
1190 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && suppressResponse);
1191
yunhanw-google494fb9b2021-11-17 12:01:02 -08001192 err = writeRequestParser.GetTimedRequest(&timeRequest);
1193 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && timeRequest);
yunhanw-googlee4c01152021-04-16 08:22:10 -07001194
yunhanw-google494fb9b2021-11-17 12:01:02 -08001195 err = writeRequestParser.GetWriteRequests(&writeRequests);
yunhanw-googlee4c01152021-04-16 08:22:10 -07001196 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1197
1198 err = writeRequestParser.GetMoreChunkedMessages(&moreChunkedMessages);
1199 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && moreChunkedMessages);
yunhanw-googlee4c01152021-04-16 08:22:10 -07001200}
1201
yunhanw-google12ec7022021-11-01 19:53:29 -07001202void BuildWriteResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
yunhanw-googlee4c01152021-04-16 08:22:10 -07001203{
1204 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google12ec7022021-11-01 19:53:29 -07001205 WriteResponseMessage::Builder writeResponseBuilder;
yunhanw-googlee4c01152021-04-16 08:22:10 -07001206
1207 err = writeResponseBuilder.Init(&aWriter);
1208 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1209
yunhanw-google299393b2021-12-06 09:59:34 -08001210 AttributeStatusIBs::Builder & attributeStatuses = writeResponseBuilder.CreateWriteResponses();
yunhanw-googlee4c01152021-04-16 08:22:10 -07001211 NL_TEST_ASSERT(apSuite, writeResponseBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google64ffda02021-11-04 18:05:36 -07001212 BuildAttributeStatuses(apSuite, attributeStatuses);
yunhanw-googlee4c01152021-04-16 08:22:10 -07001213
yunhanw-google12ec7022021-11-01 19:53:29 -07001214 writeResponseBuilder.EndOfWriteResponseMessage();
yunhanw-googlee4c01152021-04-16 08:22:10 -07001215 NL_TEST_ASSERT(apSuite, writeResponseBuilder.GetError() == CHIP_NO_ERROR);
1216}
1217
yunhanw-google12ec7022021-11-01 19:53:29 -07001218void ParseWriteResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlee4c01152021-04-16 08:22:10 -07001219{
1220 CHIP_ERROR err = CHIP_NO_ERROR;
1221
yunhanw-google12ec7022021-11-01 19:53:29 -07001222 WriteResponseMessage::Parser writeResponseParser;
yunhanw-googlef1117272021-12-02 19:59:44 -08001223 AttributeStatusIBs::Parser attributeStatusesParser;
yunhanw-googlee4c01152021-04-16 08:22:10 -07001224 err = writeResponseParser.Init(aReader);
1225 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1226#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
1227 err = writeResponseParser.CheckSchemaValidity();
1228 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1229#endif
yunhanw-google64ffda02021-11-04 18:05:36 -07001230 err = writeResponseParser.GetWriteResponses(&attributeStatusesParser);
yunhanw-googlee4c01152021-04-16 08:22:10 -07001231 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google4394fcb2022-02-17 17:36:41 -08001232 NL_TEST_ASSERT(apSuite, writeResponseParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-googlee4c01152021-04-16 08:22:10 -07001233}
1234
yunhanw-google12ec7022021-11-01 19:53:29 -07001235void BuildSubscribeRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
yunhanw-googlefb773e82021-07-09 13:52:37 -07001236{
1237 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google12ec7022021-11-01 19:53:29 -07001238 SubscribeRequestMessage::Builder subscribeRequestBuilder;
yunhanw-googlefb773e82021-07-09 13:52:37 -07001239
1240 err = subscribeRequestBuilder.Init(&aWriter);
1241 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1242
yunhanw-google51db97b2021-12-03 08:36:41 -08001243 subscribeRequestBuilder.KeepSubscriptions(true);
1244 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
1245
1246 subscribeRequestBuilder.MinIntervalFloorSeconds(2);
1247 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
1248
1249 subscribeRequestBuilder.MaxIntervalCeilingSeconds(3);
1250 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
1251
yunhanw-google299393b2021-12-06 09:59:34 -08001252 AttributePathIBs::Builder & attributePathIBs = subscribeRequestBuilder.CreateAttributeRequests();
yunhanw-googlefb773e82021-07-09 13:52:37 -07001253 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google494fb9b2021-11-17 12:01:02 -08001254 BuildAttributePathList(apSuite, attributePathIBs);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001255
yunhanw-google299393b2021-12-06 09:59:34 -08001256 EventPathIBs::Builder & eventPathList = subscribeRequestBuilder.CreateEventRequests();
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001257
yunhanw-googlefb773e82021-07-09 13:52:37 -07001258 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google2fe90242021-11-01 15:13:44 -07001259 BuildEventPaths(apSuite, eventPathList);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001260
yunhanw-google299393b2021-12-06 09:59:34 -08001261 EventFilterIBs::Builder & eventFilters = subscribeRequestBuilder.CreateEventFilters();
yunhanw-googlefb773e82021-07-09 13:52:37 -07001262 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google494fb9b2021-11-17 12:01:02 -08001263 BuildEventFilters(apSuite, eventFilters);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001264
yunhanw-google494fb9b2021-11-17 12:01:02 -08001265 subscribeRequestBuilder.IsFabricFiltered(true);
1266 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
1267
yunhanw-google57a2df32022-04-14 11:04:47 -07001268 DataVersionFilterIBs::Builder & dataVersionFilters = subscribeRequestBuilder.CreateDataVersionFilters();
1269 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
1270 BuildDataVersionFilterIBs(apSuite, dataVersionFilters);
1271
yunhanw-google12ec7022021-11-01 19:53:29 -07001272 subscribeRequestBuilder.EndOfSubscribeRequestMessage();
yunhanw-googlefb773e82021-07-09 13:52:37 -07001273 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
1274}
1275
yunhanw-google12ec7022021-11-01 19:53:29 -07001276void ParseSubscribeRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlefb773e82021-07-09 13:52:37 -07001277{
1278 CHIP_ERROR err = CHIP_NO_ERROR;
1279
yunhanw-google12ec7022021-11-01 19:53:29 -07001280 SubscribeRequestMessage::Parser subscribeRequestParser;
yunhanw-googleb717b362021-11-08 13:34:19 -08001281 AttributePathIBs::Parser attributePathListParser;
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001282 DataVersionFilterIBs::Parser dataVersionFilterIBsParser;
yunhanw-googlef1117272021-12-02 19:59:44 -08001283 EventPathIBs::Parser eventPathListParser;
1284 EventFilterIBs::Parser eventFiltersParser;
yunhanw-google494fb9b2021-11-17 12:01:02 -08001285 uint16_t MinIntervalFloorSeconds = 0;
1286 uint16_t MaxIntervalCeilingSeconds = 0;
1287 bool keepExistingSubscription = false;
yunhanw-google494fb9b2021-11-17 12:01:02 -08001288 bool isFabricFiltered = false;
yunhanw-googlefb773e82021-07-09 13:52:37 -07001289
1290 err = subscribeRequestParser.Init(aReader);
1291 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1292#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
1293 err = subscribeRequestParser.CheckSchemaValidity();
1294 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1295#endif
yunhanw-google494fb9b2021-11-17 12:01:02 -08001296 err = subscribeRequestParser.GetAttributeRequests(&attributePathListParser);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001297 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1298
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001299 err = subscribeRequestParser.GetDataVersionFilters(&dataVersionFilterIBsParser);
1300 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1301
yunhanw-google494fb9b2021-11-17 12:01:02 -08001302 err = subscribeRequestParser.GetEventRequests(&eventPathListParser);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001303 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1304
yunhanw-google494fb9b2021-11-17 12:01:02 -08001305 err = subscribeRequestParser.GetEventFilters(&eventFiltersParser);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001306 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1307
yunhanw-google494fb9b2021-11-17 12:01:02 -08001308 err = subscribeRequestParser.GetMinIntervalFloorSeconds(&MinIntervalFloorSeconds);
1309 NL_TEST_ASSERT(apSuite, MinIntervalFloorSeconds == 2 && err == CHIP_NO_ERROR);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001310
yunhanw-google494fb9b2021-11-17 12:01:02 -08001311 err = subscribeRequestParser.GetMaxIntervalCeilingSeconds(&MaxIntervalCeilingSeconds);
1312 NL_TEST_ASSERT(apSuite, MaxIntervalCeilingSeconds == 3 && err == CHIP_NO_ERROR);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001313
yunhanw-google6a9cd5f2021-10-12 17:44:25 -07001314 err = subscribeRequestParser.GetKeepSubscriptions(&keepExistingSubscription);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001315 NL_TEST_ASSERT(apSuite, keepExistingSubscription && err == CHIP_NO_ERROR);
1316
yunhanw-google494fb9b2021-11-17 12:01:02 -08001317 err = subscribeRequestParser.GetIsFabricFiltered(&isFabricFiltered);
1318 NL_TEST_ASSERT(apSuite, isFabricFiltered && err == CHIP_NO_ERROR);
yunhanw-google4394fcb2022-02-17 17:36:41 -08001319 NL_TEST_ASSERT(apSuite, subscribeRequestParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001320}
1321
yunhanw-google12ec7022021-11-01 19:53:29 -07001322void BuildSubscribeResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
yunhanw-googlefb773e82021-07-09 13:52:37 -07001323{
1324 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google12ec7022021-11-01 19:53:29 -07001325 SubscribeResponseMessage::Builder subscribeResponseBuilder;
yunhanw-googlefb773e82021-07-09 13:52:37 -07001326
1327 err = subscribeResponseBuilder.Init(&aWriter);
1328 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1329
1330 subscribeResponseBuilder.SubscriptionId(1);
1331 NL_TEST_ASSERT(apSuite, subscribeResponseBuilder.GetError() == CHIP_NO_ERROR);
1332
yunhanw-googleec5f5dc2021-09-13 16:47:42 -07001333 subscribeResponseBuilder.MinIntervalFloorSeconds(1);
1334 NL_TEST_ASSERT(apSuite, subscribeResponseBuilder.GetError() == CHIP_NO_ERROR);
1335
1336 subscribeResponseBuilder.MaxIntervalCeilingSeconds(2);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001337 NL_TEST_ASSERT(apSuite, subscribeResponseBuilder.GetError() == CHIP_NO_ERROR);
1338
yunhanw-google12ec7022021-11-01 19:53:29 -07001339 subscribeResponseBuilder.EndOfSubscribeResponseMessage();
yunhanw-googlefb773e82021-07-09 13:52:37 -07001340 NL_TEST_ASSERT(apSuite, subscribeResponseBuilder.GetError() == CHIP_NO_ERROR);
1341}
1342
yunhanw-google12ec7022021-11-01 19:53:29 -07001343void ParseSubscribeResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlefb773e82021-07-09 13:52:37 -07001344{
1345 CHIP_ERROR err = CHIP_NO_ERROR;
1346
yunhanw-google12ec7022021-11-01 19:53:29 -07001347 SubscribeResponseMessage::Parser subscribeResponseParser;
Song GUO6e224672022-05-14 05:58:58 +08001348 chip::SubscriptionId subscriptionId = 0;
1349 uint16_t minIntervalFloorSeconds = 0;
1350 uint16_t maxIntervalCeilingSeconds = 0;
1351 err = subscribeResponseParser.Init(aReader);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001352 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1353#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
1354 err = subscribeResponseParser.CheckSchemaValidity();
1355 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1356#endif
1357 err = subscribeResponseParser.GetSubscriptionId(&subscriptionId);
1358 NL_TEST_ASSERT(apSuite, subscriptionId == 1 && err == CHIP_NO_ERROR);
1359
yunhanw-googleec5f5dc2021-09-13 16:47:42 -07001360 err = subscribeResponseParser.GetMinIntervalFloorSeconds(&minIntervalFloorSeconds);
1361 NL_TEST_ASSERT(apSuite, minIntervalFloorSeconds == 1 && err == CHIP_NO_ERROR);
1362
1363 err = subscribeResponseParser.GetMaxIntervalCeilingSeconds(&maxIntervalCeilingSeconds);
1364 NL_TEST_ASSERT(apSuite, maxIntervalCeilingSeconds == 2 && err == CHIP_NO_ERROR);
yunhanw-google4394fcb2022-02-17 17:36:41 -08001365
1366 NL_TEST_ASSERT(apSuite, subscribeResponseParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001367}
1368
yunhanw-google7f05fb62021-10-29 06:55:58 -07001369void BuildTimedRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
yunhanw-google8be85452021-07-12 07:20:09 -07001370{
1371 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google7f05fb62021-10-29 06:55:58 -07001372 TimedRequestMessage::Builder TimedRequestMessageBuilder;
yunhanw-google8be85452021-07-12 07:20:09 -07001373
yunhanw-google7f05fb62021-10-29 06:55:58 -07001374 err = TimedRequestMessageBuilder.Init(&aWriter);
yunhanw-google8be85452021-07-12 07:20:09 -07001375 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1376
yunhanw-google7f05fb62021-10-29 06:55:58 -07001377 TimedRequestMessageBuilder.TimeoutMs(1);
1378 NL_TEST_ASSERT(apSuite, TimedRequestMessageBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google8be85452021-07-12 07:20:09 -07001379}
1380
yunhanw-google7f05fb62021-10-29 06:55:58 -07001381void ParseTimedRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-google8be85452021-07-12 07:20:09 -07001382{
1383 CHIP_ERROR err = CHIP_NO_ERROR;
1384
yunhanw-google4394fcb2022-02-17 17:36:41 -08001385 TimedRequestMessage::Parser timedRequestMessageParser;
yunhanw-google8be85452021-07-12 07:20:09 -07001386 uint16_t timeout = 0;
1387
yunhanw-google4394fcb2022-02-17 17:36:41 -08001388 err = timedRequestMessageParser.Init(aReader);
yunhanw-google8be85452021-07-12 07:20:09 -07001389 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1390#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-google4394fcb2022-02-17 17:36:41 -08001391 err = timedRequestMessageParser.CheckSchemaValidity();
yunhanw-google8be85452021-07-12 07:20:09 -07001392 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1393#endif
yunhanw-google4394fcb2022-02-17 17:36:41 -08001394 err = timedRequestMessageParser.GetTimeoutMs(&timeout);
yunhanw-google8be85452021-07-12 07:20:09 -07001395 NL_TEST_ASSERT(apSuite, timeout == 1 && err == CHIP_NO_ERROR);
yunhanw-google4394fcb2022-02-17 17:36:41 -08001396
1397 NL_TEST_ASSERT(apSuite, timedRequestMessageParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-google8be85452021-07-12 07:20:09 -07001398}
1399
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001400void DataVersionFilterIBTest(nlTestSuite * apSuite, void * apContext)
1401{
1402 CHIP_ERROR err = CHIP_NO_ERROR;
1403 DataVersionFilterIB::Builder dataVersionFilterIBBuilder;
1404 chip::System::PacketBufferTLVWriter writer;
1405 chip::System::PacketBufferTLVReader reader;
1406 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1407 dataVersionFilterIBBuilder.Init(&writer);
1408 BuildDataVersionFilterIB(apSuite, dataVersionFilterIBBuilder);
1409 chip::System::PacketBufferHandle buf;
1410 err = writer.Finalize(&buf);
1411 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1412
1413 DebugPrettyPrint(buf);
1414
1415 reader.Init(std::move(buf));
1416 err = reader.Next();
1417 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1418 ParseDataVersionFilterIB(apSuite, reader);
1419}
1420
1421void DataVersionFilterIBsTest(nlTestSuite * apSuite, void * apContext)
1422{
1423 CHIP_ERROR err = CHIP_NO_ERROR;
1424 chip::System::PacketBufferTLVWriter writer;
1425 chip::System::PacketBufferTLVReader reader;
1426 DataVersionFilterIBs::Builder dataVersionFilterIBsBuilder;
1427 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1428
1429 err = dataVersionFilterIBsBuilder.Init(&writer);
1430 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1431
1432 BuildDataVersionFilterIBs(apSuite, dataVersionFilterIBsBuilder);
1433 chip::System::PacketBufferHandle buf;
1434 err = writer.Finalize(&buf);
1435 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1436
1437 DebugPrettyPrint(buf);
1438
1439 reader.Init(std::move(buf));
1440 err = reader.Next();
1441 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1442 ParseDataVersionFilterIBs(apSuite, reader);
1443}
1444
yunhanw-googlebf585f82021-10-29 19:20:07 -07001445void EventFilterTest(nlTestSuite * apSuite, void * apContext)
1446{
1447 CHIP_ERROR err = CHIP_NO_ERROR;
1448 EventFilterIB::Builder eventFilterBuilder;
1449 chip::System::PacketBufferTLVWriter writer;
1450 chip::System::PacketBufferTLVReader reader;
1451 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1452 eventFilterBuilder.Init(&writer);
1453 BuildEventFilterIB(apSuite, eventFilterBuilder);
1454 chip::System::PacketBufferHandle buf;
1455 err = writer.Finalize(&buf);
1456 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1457
1458 DebugPrettyPrint(buf);
1459
1460 reader.Init(std::move(buf));
1461 err = reader.Next();
1462 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googlebf585f82021-10-29 19:20:07 -07001463 ParseEventFilterIB(apSuite, reader);
1464}
1465
1466void EventFiltersTest(nlTestSuite * apSuite, void * apContext)
1467{
1468 CHIP_ERROR err = CHIP_NO_ERROR;
1469 chip::System::PacketBufferTLVWriter writer;
1470 chip::System::PacketBufferTLVReader reader;
yunhanw-googlef1117272021-12-02 19:59:44 -08001471 EventFilterIBs::Builder eventFiltersBuilder;
1472 EventFilterIBs::Parser eventFiltersParser;
yunhanw-googlebf585f82021-10-29 19:20:07 -07001473 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1474
1475 err = eventFiltersBuilder.Init(&writer);
1476 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1477
1478 BuildEventFilters(apSuite, eventFiltersBuilder);
1479 chip::System::PacketBufferHandle buf;
1480 err = writer.Finalize(&buf);
1481 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1482
1483 DebugPrettyPrint(buf);
1484
1485 reader.Init(std::move(buf));
1486 err = reader.Next();
1487 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1488 ParseEventFilters(apSuite, reader);
1489}
1490
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001491void ClusterPathIBTest(nlTestSuite * apSuite, void * apContext)
1492{
1493 CHIP_ERROR err = CHIP_NO_ERROR;
1494 ClusterPathIB::Builder clusterPathBuilder;
1495 chip::System::PacketBufferTLVWriter writer;
1496 chip::System::PacketBufferTLVReader reader;
1497 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1498 clusterPathBuilder.Init(&writer);
1499 BuildClusterPathIB(apSuite, clusterPathBuilder);
1500 chip::System::PacketBufferHandle buf;
1501 err = writer.Finalize(&buf);
1502 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1503
1504 DebugPrettyPrint(buf);
1505
1506 reader.Init(std::move(buf));
1507 err = reader.Next();
1508 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1509
1510 ParseClusterPathIB(apSuite, reader);
1511}
1512
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001513void AttributePathTest(nlTestSuite * apSuite, void * apContext)
1514{
1515 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google64ffda02021-11-04 18:05:36 -07001516 AttributePathIB::Builder attributePathBuilder;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001517 chip::System::PacketBufferTLVWriter writer;
1518 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001519 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001520 attributePathBuilder.Init(&writer);
yunhanw-google64ffda02021-11-04 18:05:36 -07001521 BuildAttributePathIB(apSuite, attributePathBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001522 chip::System::PacketBufferHandle buf;
1523 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001524 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1525
1526 DebugPrettyPrint(buf);
1527
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001528 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001529 err = reader.Next();
1530 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1531
yunhanw-google64ffda02021-11-04 18:05:36 -07001532 ParseAttributePathIB(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001533}
1534
1535void AttributePathListTest(nlTestSuite * apSuite, void * apContext)
1536{
1537 CHIP_ERROR err = CHIP_NO_ERROR;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001538 chip::System::PacketBufferTLVWriter writer;
1539 chip::System::PacketBufferTLVReader reader;
yunhanw-googleb717b362021-11-08 13:34:19 -08001540 AttributePathIBs::Builder attributePathListBuilder;
yunhanw-google0c183552021-01-22 09:12:14 -08001541
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001542 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google0c183552021-01-22 09:12:14 -08001543
1544 err = attributePathListBuilder.Init(&writer);
1545 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1546
1547 BuildAttributePathList(apSuite, attributePathListBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001548 chip::System::PacketBufferHandle buf;
1549 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001550 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1551
1552 DebugPrettyPrint(buf);
1553
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001554 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001555 err = reader.Next();
1556 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1557 ParseAttributePathList(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001558}
1559
1560void EventPathTest(nlTestSuite * apSuite, void * apContext)
1561{
1562 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google2fe90242021-11-01 15:13:44 -07001563 EventPathIB::Parser eventPathParser;
1564 EventPathIB::Builder eventPathBuilder;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001565 chip::System::PacketBufferTLVWriter writer;
1566 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001567 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001568 eventPathBuilder.Init(&writer);
1569 BuildEventPath(apSuite, eventPathBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001570 chip::System::PacketBufferHandle buf;
1571 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001572 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1573
1574 DebugPrettyPrint(buf);
1575
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001576 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001577 err = reader.Next();
1578 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1579
1580 eventPathParser.Init(reader);
1581 ParseEventPath(apSuite, eventPathParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001582}
1583
yunhanw-google2fe90242021-11-01 15:13:44 -07001584void EventPathsTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001585{
1586 CHIP_ERROR err = CHIP_NO_ERROR;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001587 chip::System::PacketBufferTLVWriter writer;
1588 chip::System::PacketBufferTLVReader reader;
yunhanw-googlef1117272021-12-02 19:59:44 -08001589 EventPathIBs::Builder eventPathListBuilder;
yunhanw-google0c183552021-01-22 09:12:14 -08001590
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001591 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google0c183552021-01-22 09:12:14 -08001592
1593 err = eventPathListBuilder.Init(&writer);
1594 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1595
yunhanw-google2fe90242021-11-01 15:13:44 -07001596 BuildEventPaths(apSuite, eventPathListBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001597 chip::System::PacketBufferHandle buf;
1598 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001599 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1600
1601 DebugPrettyPrint(buf);
1602
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001603 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001604 err = reader.Next();
1605 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google2fe90242021-11-01 15:13:44 -07001606 ParseEventPaths(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001607}
1608
yunhanw-google36e61e32021-11-02 08:31:34 -07001609void CommandPathIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001610{
1611 CHIP_ERROR err = CHIP_NO_ERROR;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001612 chip::System::PacketBufferTLVWriter writer;
1613 chip::System::PacketBufferTLVReader reader;
yunhanw-google8c2638c2021-10-20 16:33:42 -07001614 CommandPathIB::Builder commandPathBuilder;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001615 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001616 err = commandPathBuilder.Init(&writer);
1617 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1618
1619 BuildCommandPath(apSuite, commandPathBuilder);
1620
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001621 chip::System::PacketBufferHandle buf;
1622 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001623 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1624
1625 DebugPrettyPrint(buf);
1626
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001627 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001628 err = reader.Next();
1629 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1630
1631 ParseCommandPath(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001632}
1633
yunhanw-google3bec0f92021-11-03 16:12:39 -07001634void EventDataIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001635{
1636 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google3bec0f92021-11-03 16:12:39 -07001637 EventDataIB::Builder eventDataIBBuilder;
1638 EventDataIB::Parser eventDataIBParser;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001639 chip::System::PacketBufferTLVWriter writer;
1640 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001641 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google3bec0f92021-11-03 16:12:39 -07001642 eventDataIBBuilder.Init(&writer);
1643 BuildEventDataIB(apSuite, eventDataIBBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001644 chip::System::PacketBufferHandle buf;
1645 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001646 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1647
1648 DebugPrettyPrint(buf);
1649
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001650 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001651 err = reader.Next();
1652 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1653
yunhanw-google3bec0f92021-11-03 16:12:39 -07001654 eventDataIBParser.Init(reader);
1655 ParseEventDataIB(apSuite, eventDataIBParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001656}
1657
yunhanw-google3bec0f92021-11-03 16:12:39 -07001658void EventReportIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001659{
1660 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google3bec0f92021-11-03 16:12:39 -07001661 EventReportIB::Builder eventReportIBBuilder;
1662 EventReportIB::Parser eventReportIBParser;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001663 chip::System::PacketBufferTLVWriter writer;
1664 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001665 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google3bec0f92021-11-03 16:12:39 -07001666 eventReportIBBuilder.Init(&writer);
1667 BuildEventReportIB(apSuite, eventReportIBBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001668 chip::System::PacketBufferHandle buf;
1669 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001670 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1671
1672 DebugPrettyPrint(buf);
1673
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001674 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001675 err = reader.Next();
1676 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google3bec0f92021-11-03 16:12:39 -07001677
1678 eventReportIBParser.Init(reader);
1679 ParseEventReportIB(apSuite, eventReportIBParser);
1680}
1681
1682void EventReportsTest(nlTestSuite * apSuite, void * apContext)
1683{
1684 CHIP_ERROR err = CHIP_NO_ERROR;
1685 chip::System::PacketBufferTLVWriter writer;
1686 chip::System::PacketBufferTLVReader reader;
yunhanw-googlef1117272021-12-02 19:59:44 -08001687 EventReportIBs::Builder eventReportsBuilder;
yunhanw-google3bec0f92021-11-03 16:12:39 -07001688 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1689 eventReportsBuilder.Init(&writer);
1690 BuildEventReports(apSuite, eventReportsBuilder);
1691 chip::System::PacketBufferHandle buf;
1692 err = writer.Finalize(&buf);
1693 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1694
1695 DebugPrettyPrint(buf);
1696
1697 reader.Init(std::move(buf));
1698 err = reader.Next();
1699 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1700 ParseEventReports(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001701}
1702
yunhanw-google588d4c92022-05-11 23:50:15 -07001703void EmptyEventReportsTest(nlTestSuite * apSuite, void * apContext)
1704{
1705 CHIP_ERROR err = CHIP_NO_ERROR;
1706 chip::System::PacketBufferTLVWriter writer;
1707 chip::System::PacketBufferTLVReader reader;
1708 EventReportIBs::Builder eventReportsBuilder;
1709 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1710 eventReportsBuilder.Init(&writer);
1711 eventReportsBuilder.EndOfEventReports();
1712 NL_TEST_ASSERT(apSuite, eventReportsBuilder.GetError() == CHIP_NO_ERROR);
1713 chip::System::PacketBufferHandle buf;
1714 err = writer.Finalize(&buf);
1715 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1716
1717 DebugPrettyPrint(buf);
1718
1719 reader.Init(std::move(buf));
1720 err = reader.Next();
1721 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1722 ParseEventReports(apSuite, reader);
1723}
1724
yunhanw-googleb717b362021-11-08 13:34:19 -08001725void AttributeReportIBTest(nlTestSuite * apSuite, void * apContext)
1726{
1727 CHIP_ERROR err = CHIP_NO_ERROR;
1728 AttributeReportIB::Builder attributeReportIBBuilder;
1729 AttributeReportIB::Parser attributeReportIBParser;
1730 chip::System::PacketBufferTLVWriter writer;
1731 chip::System::PacketBufferTLVReader reader;
1732 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1733 attributeReportIBBuilder.Init(&writer);
1734 BuildAttributeReportIB(apSuite, attributeReportIBBuilder);
1735 chip::System::PacketBufferHandle buf;
1736 err = writer.Finalize(&buf);
1737 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1738
1739 DebugPrettyPrint(buf);
1740
1741 reader.Init(std::move(buf));
1742 err = reader.Next();
1743 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1744
1745 attributeReportIBParser.Init(reader);
1746 ParseAttributeReportIB(apSuite, attributeReportIBParser);
1747}
1748
1749void AttributeReportIBsTest(nlTestSuite * apSuite, void * apContext)
1750{
1751 CHIP_ERROR err = CHIP_NO_ERROR;
1752 chip::System::PacketBufferTLVWriter writer;
1753 chip::System::PacketBufferTLVReader reader;
1754 AttributeReportIBs::Builder attributeReportIBsBuilder;
1755 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1756 attributeReportIBsBuilder.Init(&writer);
1757 BuildAttributeReportIBs(apSuite, attributeReportIBsBuilder);
1758 chip::System::PacketBufferHandle buf;
1759 err = writer.Finalize(&buf);
1760 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1761
1762 DebugPrettyPrint(buf);
1763
1764 reader.Init(std::move(buf));
1765 err = reader.Next();
1766 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1767 ParseAttributeReportIBs(apSuite, reader);
1768}
1769
yunhanw-google588d4c92022-05-11 23:50:15 -07001770void EmptyAttributeReportIBsTest(nlTestSuite * apSuite, void * apContext)
1771{
1772 CHIP_ERROR err = CHIP_NO_ERROR;
1773 chip::System::PacketBufferTLVWriter writer;
1774 chip::System::PacketBufferTLVReader reader;
1775 AttributeReportIBs::Builder attributeReportIBsBuilder;
1776 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1777 attributeReportIBsBuilder.Init(&writer);
1778 attributeReportIBsBuilder.EndOfAttributeReportIBs();
1779 NL_TEST_ASSERT(apSuite, attributeReportIBsBuilder.GetError() == CHIP_NO_ERROR);
1780 chip::System::PacketBufferHandle buf;
1781 err = writer.Finalize(&buf);
1782 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1783
1784 DebugPrettyPrint(buf);
1785
1786 reader.Init(std::move(buf));
1787 err = reader.Next();
1788 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1789 ParseAttributeReportIBs(apSuite, reader);
1790}
1791
yunhanw-google35e67172021-10-11 17:12:06 -07001792void StatusIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001793{
1794 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google35e67172021-10-11 17:12:06 -07001795 StatusIB::Builder statusIBBuilder;
1796 StatusIB::Parser StatusIBParser;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001797 chip::System::PacketBufferTLVWriter writer;
1798 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001799 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google35e67172021-10-11 17:12:06 -07001800 statusIBBuilder.Init(&writer);
1801 BuildStatusIB(apSuite, statusIBBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001802 chip::System::PacketBufferHandle buf;
1803 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001804 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1805
1806 DebugPrettyPrint(buf);
1807
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001808 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001809 err = reader.Next();
1810 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1811
yunhanw-google35e67172021-10-11 17:12:06 -07001812 StatusIBParser.Init(reader);
1813 ParseStatusIB(apSuite, StatusIBParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001814}
1815
yunhanw-google1f6c6e62021-11-02 10:09:53 -07001816void EventStatusIBTest(nlTestSuite * apSuite, void * apContext)
1817{
1818 CHIP_ERROR err = CHIP_NO_ERROR;
1819 EventStatusIB::Builder eventStatusIBBuilder;
1820 EventStatusIB::Parser eventStatusIBParser;
1821 chip::System::PacketBufferTLVWriter writer;
1822 chip::System::PacketBufferTLVReader reader;
1823 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1824 eventStatusIBBuilder.Init(&writer);
1825 BuildEventStatusIB(apSuite, eventStatusIBBuilder);
1826 chip::System::PacketBufferHandle buf;
1827 err = writer.Finalize(&buf);
1828 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1829
1830 DebugPrettyPrint(buf);
1831
1832 reader.Init(std::move(buf));
1833 err = reader.Next();
1834 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1835
1836 eventStatusIBParser.Init(reader);
1837 ParseEventStatusIB(apSuite, eventStatusIBParser);
1838}
1839
yunhanw-google35e67172021-10-11 17:12:06 -07001840void AttributeStatusIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001841{
1842 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google35e67172021-10-11 17:12:06 -07001843 AttributeStatusIB::Builder attributeStatusIBBuilder;
1844 AttributeStatusIB::Parser attributeStatusIBParser;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001845 chip::System::PacketBufferTLVWriter writer;
1846 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001847 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google35e67172021-10-11 17:12:06 -07001848 attributeStatusIBBuilder.Init(&writer);
1849 BuildAttributeStatusIB(apSuite, attributeStatusIBBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001850 chip::System::PacketBufferHandle buf;
1851 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001852 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1853
1854 DebugPrettyPrint(buf);
1855
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001856 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001857 err = reader.Next();
1858 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1859
yunhanw-google35e67172021-10-11 17:12:06 -07001860 attributeStatusIBParser.Init(reader);
1861 ParseAttributeStatusIB(apSuite, attributeStatusIBParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001862}
1863
yunhanw-google64ffda02021-11-04 18:05:36 -07001864void AttributeStatusesTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001865{
1866 CHIP_ERROR err = CHIP_NO_ERROR;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001867 chip::System::PacketBufferTLVWriter writer;
1868 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001869 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-googlef1117272021-12-02 19:59:44 -08001870 AttributeStatusIBs::Builder attributeStatusesBuilder;
yunhanw-google64ffda02021-11-04 18:05:36 -07001871 err = attributeStatusesBuilder.Init(&writer);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001872 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google64ffda02021-11-04 18:05:36 -07001873 BuildAttributeStatuses(apSuite, attributeStatusesBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001874 chip::System::PacketBufferHandle buf;
1875 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001876 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1877
1878 DebugPrettyPrint(buf);
1879
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001880 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001881 err = reader.Next();
1882 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google64ffda02021-11-04 18:05:36 -07001883 ParseAttributeStatuses(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001884}
1885
yunhanw-googleb717b362021-11-08 13:34:19 -08001886void AttributeDataIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001887{
1888 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googleb717b362021-11-08 13:34:19 -08001889 AttributeDataIB::Builder AttributeDataIBBuilder;
1890 AttributeDataIB::Parser AttributeDataIBParser;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001891 chip::System::PacketBufferTLVWriter writer;
1892 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001893 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-googleb717b362021-11-08 13:34:19 -08001894 AttributeDataIBBuilder.Init(&writer);
1895 BuildAttributeDataIB(apSuite, AttributeDataIBBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001896 chip::System::PacketBufferHandle buf;
1897 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001898 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1899
1900 DebugPrettyPrint(buf);
1901
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001902 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001903 err = reader.Next();
1904 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1905
yunhanw-googleb717b362021-11-08 13:34:19 -08001906 AttributeDataIBParser.Init(reader);
1907 ParseAttributeDataIB(apSuite, AttributeDataIBParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001908}
1909
yunhanw-googleb717b362021-11-08 13:34:19 -08001910void AttributeDataIBsTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001911{
1912 CHIP_ERROR err = CHIP_NO_ERROR;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001913 chip::System::PacketBufferTLVWriter writer;
1914 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001915 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-googleb717b362021-11-08 13:34:19 -08001916 AttributeDataIBs::Builder AttributeDataIBsBuilder;
1917 AttributeDataIBsBuilder.Init(&writer);
1918 BuildAttributeDataIBs(apSuite, AttributeDataIBsBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001919 chip::System::PacketBufferHandle buf;
1920 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001921 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1922
1923 DebugPrettyPrint(buf);
1924
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001925 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001926 err = reader.Next();
1927 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googleb717b362021-11-08 13:34:19 -08001928 ParseAttributeDataIBs(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001929}
1930
yunhanw-google67f74a32021-10-21 12:15:08 -07001931void CommandDataIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001932{
1933 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google67f74a32021-10-21 12:15:08 -07001934 CommandDataIB::Builder commandDataIBBuilder;
1935 CommandDataIB::Parser commandDataIBParser;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001936 chip::System::PacketBufferTLVWriter writer;
1937 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001938 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google67f74a32021-10-21 12:15:08 -07001939 commandDataIBBuilder.Init(&writer);
1940 BuildCommandDataIB(apSuite, commandDataIBBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001941 chip::System::PacketBufferHandle buf;
1942 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001943 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1944
1945 DebugPrettyPrint(buf);
1946
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001947 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001948 err = reader.Next();
1949 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1950
yunhanw-google67f74a32021-10-21 12:15:08 -07001951 commandDataIBParser.Init(reader);
1952 ParseCommandDataIB(apSuite, commandDataIBParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001953}
1954
yunhanw-google36e61e32021-11-02 08:31:34 -07001955void CommandStatusIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-google9577ff52021-04-05 12:51:14 -07001956{
1957 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google36e61e32021-11-02 08:31:34 -07001958 CommandStatusIB::Builder commandStatusIBBuilder;
1959 CommandStatusIB::Parser commandStatusIBParser;
yunhanw-google9577ff52021-04-05 12:51:14 -07001960 chip::System::PacketBufferTLVWriter writer;
1961 chip::System::PacketBufferTLVReader reader;
1962 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google36e61e32021-11-02 08:31:34 -07001963 commandStatusIBBuilder.Init(&writer);
1964 BuildCommandStatusIB(apSuite, commandStatusIBBuilder);
yunhanw-google9577ff52021-04-05 12:51:14 -07001965 chip::System::PacketBufferHandle buf;
1966 err = writer.Finalize(&buf);
1967 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1968
1969 DebugPrettyPrint(buf);
1970
1971 reader.Init(std::move(buf));
1972 err = reader.Next();
1973 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1974
yunhanw-google36e61e32021-11-02 08:31:34 -07001975 commandStatusIBParser.Init(reader);
1976 ParseCommandStatusIB(apSuite, commandStatusIBParser);
yunhanw-google9577ff52021-04-05 12:51:14 -07001977}
1978
yunhanw-google36e61e32021-11-02 08:31:34 -07001979void InvokeResponseIBWithCommandDataIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001980{
1981 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google36e61e32021-11-02 08:31:34 -07001982 InvokeResponseIB::Builder invokeResponseIBBuilder;
1983 InvokeResponseIB::Parser invokeResponseIBParser;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001984 chip::System::PacketBufferTLVWriter writer;
1985 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001986 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google36e61e32021-11-02 08:31:34 -07001987 invokeResponseIBBuilder.Init(&writer);
1988 BuildInvokeResponseIBWithCommandDataIB(apSuite, invokeResponseIBBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001989 chip::System::PacketBufferHandle buf;
1990 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001991 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1992
1993 DebugPrettyPrint(buf);
1994
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001995 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001996 err = reader.Next();
1997 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google36e61e32021-11-02 08:31:34 -07001998
1999 invokeResponseIBParser.Init(reader);
2000 ParseInvokeResponseIBWithCommandDataIB(apSuite, invokeResponseIBParser);
2001}
2002
2003void InvokeResponseIBWithCommandStatusIBTest(nlTestSuite * apSuite, void * apContext)
2004{
2005 CHIP_ERROR err = CHIP_NO_ERROR;
2006 InvokeResponseIB::Builder invokeResponseIBBuilder;
2007 InvokeResponseIB::Parser invokeResponseIBParser;
2008 chip::System::PacketBufferTLVWriter writer;
2009 chip::System::PacketBufferTLVReader reader;
2010 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
2011 invokeResponseIBBuilder.Init(&writer);
2012 BuildInvokeResponseIBWithCommandStatusIB(apSuite, invokeResponseIBBuilder);
2013 chip::System::PacketBufferHandle buf;
2014 err = writer.Finalize(&buf);
2015 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2016
2017 DebugPrettyPrint(buf);
2018
2019 reader.Init(std::move(buf));
2020 err = reader.Next();
2021 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2022
2023 invokeResponseIBParser.Init(reader);
2024 ParseInvokeResponseIBWithCommandStatusIB(apSuite, invokeResponseIBParser);
2025}
2026
2027void InvokeResponseIBWithMalformDataTest(nlTestSuite * apSuite, void * apContext)
2028{
2029 CHIP_ERROR err = CHIP_NO_ERROR;
2030 InvokeResponseIB::Builder invokeResponseIBBuilder;
2031 InvokeResponseIB::Parser invokeResponseIBParser;
2032 chip::System::PacketBufferTLVWriter writer;
2033 chip::System::PacketBufferTLVReader reader;
2034 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
2035 invokeResponseIBBuilder.Init(&writer);
2036 BuildWrongInvokeResponseIB(apSuite, invokeResponseIBBuilder);
2037 chip::System::PacketBufferHandle buf;
2038 err = writer.Finalize(&buf);
2039 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2040
2041 DebugPrettyPrint(buf);
2042
2043 reader.Init(std::move(buf));
2044 err = reader.Next();
2045 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2046
2047 invokeResponseIBParser.Init(reader);
2048 ParseWrongInvokeResponseIB(apSuite, invokeResponseIBParser);
2049}
2050
2051void InvokeRequestsTest(nlTestSuite * apSuite, void * apContext)
2052{
2053 CHIP_ERROR err = CHIP_NO_ERROR;
2054 chip::System::PacketBufferTLVWriter writer;
2055 chip::System::PacketBufferTLVReader reader;
2056 InvokeRequests::Builder invokeRequestsBuilder;
2057 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
2058 invokeRequestsBuilder.Init(&writer);
2059 BuildInvokeRequests(apSuite, invokeRequestsBuilder);
2060 chip::System::PacketBufferHandle buf;
2061 err = writer.Finalize(&buf);
2062 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2063
2064 DebugPrettyPrint(buf);
2065
2066 reader.Init(std::move(buf));
2067 err = reader.Next();
2068 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2069 ParseInvokeRequests(apSuite, reader);
2070}
2071
2072void InvokeResponsesTest(nlTestSuite * apSuite, void * apContext)
2073{
2074 CHIP_ERROR err = CHIP_NO_ERROR;
2075 chip::System::PacketBufferTLVWriter writer;
2076 chip::System::PacketBufferTLVReader reader;
yunhanw-googlef1117272021-12-02 19:59:44 -08002077 InvokeResponseIBs::Builder invokeResponsesBuilder;
yunhanw-google36e61e32021-11-02 08:31:34 -07002078 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
2079 invokeResponsesBuilder.Init(&writer);
2080 BuildInvokeResponses(apSuite, invokeResponsesBuilder);
2081 chip::System::PacketBufferHandle buf;
2082 err = writer.Finalize(&buf);
2083 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2084
2085 DebugPrettyPrint(buf);
2086
2087 reader.Init(std::move(buf));
2088 err = reader.Next();
2089 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2090 ParseInvokeResponses(apSuite, reader);
2091}
2092
2093void InvokeInvokeRequestMessageTest(nlTestSuite * apSuite, void * apContext)
2094{
2095 CHIP_ERROR err = CHIP_NO_ERROR;
2096 chip::System::PacketBufferTLVWriter writer;
2097 chip::System::PacketBufferTLVReader reader;
2098 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
2099 BuildInvokeRequestMessage(apSuite, writer);
2100 chip::System::PacketBufferHandle buf;
2101 err = writer.Finalize(&buf);
2102 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2103
2104 DebugPrettyPrint(buf);
2105
2106 reader.Init(std::move(buf));
yunhanw-google36e61e32021-11-02 08:31:34 -07002107 ParseInvokeRequestMessage(apSuite, reader);
2108}
2109
2110void InvokeInvokeResponseMessageTest(nlTestSuite * apSuite, void * apContext)
2111{
2112 CHIP_ERROR err = CHIP_NO_ERROR;
2113 chip::System::PacketBufferTLVWriter writer;
2114 chip::System::PacketBufferTLVReader reader;
2115 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
2116 BuildInvokeResponseMessage(apSuite, writer);
2117 chip::System::PacketBufferHandle buf;
2118 err = writer.Finalize(&buf);
2119 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2120
2121 DebugPrettyPrint(buf);
2122
2123 reader.Init(std::move(buf));
yunhanw-google36e61e32021-11-02 08:31:34 -07002124 ParseInvokeResponseMessage(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002125}
2126
yunhanw-google12ec7022021-11-01 19:53:29 -07002127void ReportDataMessageTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002128{
2129 CHIP_ERROR err = CHIP_NO_ERROR;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05002130 chip::System::PacketBufferTLVWriter writer;
2131 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05002132 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google12ec7022021-11-01 19:53:29 -07002133 BuildReportDataMessage(apSuite, writer);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05002134 chip::System::PacketBufferHandle buf;
2135 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002136 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2137
2138 DebugPrettyPrint(buf);
2139
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05002140 reader.Init(std::move(buf));
yunhanw-google12ec7022021-11-01 19:53:29 -07002141 ParseReportDataMessage(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002142}
2143
yunhanw-google12ec7022021-11-01 19:53:29 -07002144void ReadRequestMessageTest(nlTestSuite * apSuite, void * apContext)
yunhanw-google0c183552021-01-22 09:12:14 -08002145{
2146 CHIP_ERROR err = CHIP_NO_ERROR;
2147 chip::System::PacketBufferTLVWriter writer;
2148 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05002149 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google12ec7022021-11-01 19:53:29 -07002150 BuildReadRequestMessage(apSuite, writer);
yunhanw-google0c183552021-01-22 09:12:14 -08002151 chip::System::PacketBufferHandle buf;
2152 err = writer.Finalize(&buf);
2153 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2154
2155 DebugPrettyPrint(buf);
2156
2157 reader.Init(std::move(buf));
yunhanw-google12ec7022021-11-01 19:53:29 -07002158 ParseReadRequestMessage(apSuite, reader);
yunhanw-google0c183552021-01-22 09:12:14 -08002159}
2160
yunhanw-google12ec7022021-11-01 19:53:29 -07002161void WriteRequestMessageTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlee4c01152021-04-16 08:22:10 -07002162{
2163 CHIP_ERROR err = CHIP_NO_ERROR;
2164 chip::System::PacketBufferTLVWriter writer;
2165 chip::System::PacketBufferTLVReader reader;
2166 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google12ec7022021-11-01 19:53:29 -07002167 BuildWriteRequestMessage(apSuite, writer);
yunhanw-googlee4c01152021-04-16 08:22:10 -07002168 chip::System::PacketBufferHandle buf;
2169 err = writer.Finalize(&buf);
2170 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2171
2172 DebugPrettyPrint(buf);
2173
2174 reader.Init(std::move(buf));
yunhanw-google12ec7022021-11-01 19:53:29 -07002175 ParseWriteRequestMessage(apSuite, reader);
yunhanw-googlee4c01152021-04-16 08:22:10 -07002176}
2177
yunhanw-google12ec7022021-11-01 19:53:29 -07002178void WriteResponseMessageTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlee4c01152021-04-16 08:22:10 -07002179{
2180 CHIP_ERROR err = CHIP_NO_ERROR;
2181 chip::System::PacketBufferTLVWriter writer;
2182 chip::System::PacketBufferTLVReader reader;
2183 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google12ec7022021-11-01 19:53:29 -07002184 BuildWriteResponseMessage(apSuite, writer);
yunhanw-googlee4c01152021-04-16 08:22:10 -07002185 chip::System::PacketBufferHandle buf;
2186 err = writer.Finalize(&buf);
2187 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2188
2189 DebugPrettyPrint(buf);
2190
2191 reader.Init(std::move(buf));
yunhanw-google12ec7022021-11-01 19:53:29 -07002192 ParseWriteResponseMessage(apSuite, reader);
yunhanw-googlee4c01152021-04-16 08:22:10 -07002193}
2194
yunhanw-google12ec7022021-11-01 19:53:29 -07002195void SubscribeRequestMessageTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb773e82021-07-09 13:52:37 -07002196{
2197 CHIP_ERROR err = CHIP_NO_ERROR;
2198 chip::System::PacketBufferTLVWriter writer;
2199 chip::System::PacketBufferTLVReader reader;
2200 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google12ec7022021-11-01 19:53:29 -07002201 BuildSubscribeRequestMessage(apSuite, writer);
yunhanw-googlefb773e82021-07-09 13:52:37 -07002202 chip::System::PacketBufferHandle buf;
2203 err = writer.Finalize(&buf);
2204 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2205
2206 DebugPrettyPrint(buf);
2207
2208 reader.Init(std::move(buf));
yunhanw-google12ec7022021-11-01 19:53:29 -07002209 ParseSubscribeRequestMessage(apSuite, reader);
yunhanw-googlefb773e82021-07-09 13:52:37 -07002210}
2211
yunhanw-google12ec7022021-11-01 19:53:29 -07002212void SubscribeResponseMessageTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb773e82021-07-09 13:52:37 -07002213{
2214 CHIP_ERROR err = CHIP_NO_ERROR;
2215 chip::System::PacketBufferTLVWriter writer;
2216 chip::System::PacketBufferTLVReader reader;
2217 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google12ec7022021-11-01 19:53:29 -07002218 BuildSubscribeResponseMessage(apSuite, writer);
yunhanw-googlefb773e82021-07-09 13:52:37 -07002219 chip::System::PacketBufferHandle buf;
2220 err = writer.Finalize(&buf);
2221 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2222
2223 DebugPrettyPrint(buf);
2224
2225 reader.Init(std::move(buf));
yunhanw-google12ec7022021-11-01 19:53:29 -07002226 ParseSubscribeResponseMessage(apSuite, reader);
yunhanw-googlefb773e82021-07-09 13:52:37 -07002227}
2228
yunhanw-google7f05fb62021-10-29 06:55:58 -07002229void TimedRequestMessageTest(nlTestSuite * apSuite, void * apContext)
yunhanw-google8be85452021-07-12 07:20:09 -07002230{
2231 CHIP_ERROR err = CHIP_NO_ERROR;
2232 chip::System::PacketBufferTLVWriter writer;
2233 chip::System::PacketBufferTLVReader reader;
2234 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google7f05fb62021-10-29 06:55:58 -07002235 BuildTimedRequestMessage(apSuite, writer);
yunhanw-google8be85452021-07-12 07:20:09 -07002236 chip::System::PacketBufferHandle buf;
2237 err = writer.Finalize(&buf);
2238 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2239
2240 DebugPrettyPrint(buf);
2241
2242 reader.Init(std::move(buf));
yunhanw-google7f05fb62021-10-29 06:55:58 -07002243 ParseTimedRequestMessage(apSuite, reader);
yunhanw-google8be85452021-07-12 07:20:09 -07002244}
2245
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002246void CheckPointRollbackTest(nlTestSuite * apSuite, void * apContext)
2247{
2248 CHIP_ERROR err = CHIP_NO_ERROR;
2249 size_t NumDataElement = 0;
2250 chip::System::PacketBufferTLVWriter writer;
2251 chip::System::PacketBufferTLVReader reader;
yunhanw-googleb717b362021-11-08 13:34:19 -08002252 AttributeDataIBs::Parser AttributeDataIBsParser;
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002253 chip::TLV::TLVWriter checkpoint;
2254 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google299393b2021-12-06 09:59:34 -08002255 AttributeDataIBs::Builder attributeDataIBsBuilder;
2256 attributeDataIBsBuilder.Init(&writer);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002257
2258 // encode one attribute element
yunhanw-google299393b2021-12-06 09:59:34 -08002259 AttributeDataIB::Builder & attributeDataIBBuilder1 = attributeDataIBsBuilder.CreateAttributeDataIBBuilder();
2260 NL_TEST_ASSERT(apSuite, attributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
2261 BuildAttributeDataIB(apSuite, attributeDataIBBuilder1);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002262 // checkpoint
yunhanw-google299393b2021-12-06 09:59:34 -08002263 attributeDataIBsBuilder.Checkpoint(checkpoint);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002264 // encode another attribute element
yunhanw-google299393b2021-12-06 09:59:34 -08002265 AttributeDataIB::Builder & attributeDataIBBuilder2 = attributeDataIBsBuilder.CreateAttributeDataIBBuilder();
2266 NL_TEST_ASSERT(apSuite, attributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
2267 BuildAttributeDataIB(apSuite, attributeDataIBBuilder2);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002268 // rollback to previous checkpoint
yunhanw-google299393b2021-12-06 09:59:34 -08002269 attributeDataIBsBuilder.Rollback(checkpoint);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002270
yunhanw-google299393b2021-12-06 09:59:34 -08002271 attributeDataIBsBuilder.EndOfAttributeDataIBs();
2272 NL_TEST_ASSERT(apSuite, attributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002273
2274 chip::System::PacketBufferHandle buf;
2275 err = writer.Finalize(&buf);
2276 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2277
2278 DebugPrettyPrint(buf);
2279
2280 reader.Init(std::move(buf));
2281 err = reader.Next();
2282 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2283
yunhanw-googleb717b362021-11-08 13:34:19 -08002284 err = AttributeDataIBsParser.Init(reader);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002285 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002286
yunhanw-googled644bb02021-04-13 07:26:17 -07002287#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
yunhanw-googleb717b362021-11-08 13:34:19 -08002288 err = AttributeDataIBsParser.CheckSchemaValidity();
yunhanw-googled644bb02021-04-13 07:26:17 -07002289 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2290#endif
yunhanw-googleb717b362021-11-08 13:34:19 -08002291 while (CHIP_NO_ERROR == (err = AttributeDataIBsParser.Next()))
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002292 {
2293 ++NumDataElement;
2294 }
2295
2296 NL_TEST_ASSERT(apSuite, NumDataElement == 1);
2297}
2298
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002299/**
2300 * Test Suite. It lists all the test functions.
2301 */
2302
2303// clang-format off
2304const nlTest sTests[] =
2305 {
yunhanw-googlea1cb3412021-12-06 13:32:40 -08002306 NL_TEST_DEF("ClusterPathIBTest", ClusterPathIBTest),
2307 NL_TEST_DEF("DataVersionFilterIBTest", DataVersionFilterIBTest),
2308 NL_TEST_DEF("DataVersionFilterIBsTest", DataVersionFilterIBsTest),
yunhanw-googlebf585f82021-10-29 19:20:07 -07002309 NL_TEST_DEF("EventFilterTest", EventFilterTest),
2310 NL_TEST_DEF("EventFiltersTest", EventFiltersTest),
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002311 NL_TEST_DEF("AttributePathTest", AttributePathTest),
2312 NL_TEST_DEF("AttributePathListTest", AttributePathListTest),
yunhanw-googleb717b362021-11-08 13:34:19 -08002313 NL_TEST_DEF("AttributeStatusIBTest", AttributeStatusIBTest),
2314 NL_TEST_DEF("AttributeStatusesTest", AttributeStatusesTest),
2315 NL_TEST_DEF("AttributeDataIBTest", AttributeDataIBTest),
2316 NL_TEST_DEF("AttributeDataIBsTest", AttributeDataIBsTest),
2317 NL_TEST_DEF("AttributeReportIBTest", AttributeReportIBTest),
2318 NL_TEST_DEF("AttributeReportIBsTest", AttributeReportIBsTest),
yunhanw-google588d4c92022-05-11 23:50:15 -07002319 NL_TEST_DEF("EmptyAttributeReportIBsTest", EmptyAttributeReportIBsTest),
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002320 NL_TEST_DEF("EventPathTest", EventPathTest),
yunhanw-google2fe90242021-11-01 15:13:44 -07002321 NL_TEST_DEF("EventPathsTest", EventPathsTest),
yunhanw-google3bec0f92021-11-03 16:12:39 -07002322 NL_TEST_DEF("EventDataIBTest", EventDataIBTest),
2323 NL_TEST_DEF("EventReportIBTest", EventReportIBTest),
2324 NL_TEST_DEF("EventReportsTest", EventReportsTest),
yunhanw-google588d4c92022-05-11 23:50:15 -07002325 NL_TEST_DEF("EmptyEventReportsTest", EmptyEventReportsTest),
yunhanw-google35e67172021-10-11 17:12:06 -07002326 NL_TEST_DEF("StatusIBTest", StatusIBTest),
yunhanw-google1f6c6e62021-11-02 10:09:53 -07002327 NL_TEST_DEF("EventStatusIBTest", EventStatusIBTest),
yunhanw-google36e61e32021-11-02 08:31:34 -07002328 NL_TEST_DEF("CommandPathIBTest", CommandPathIBTest),
yunhanw-google67f74a32021-10-21 12:15:08 -07002329 NL_TEST_DEF("CommandDataIBTest", CommandDataIBTest),
yunhanw-google36e61e32021-11-02 08:31:34 -07002330 NL_TEST_DEF("CommandStatusIBTest", CommandStatusIBTest),
2331 NL_TEST_DEF("InvokeResponseIBWithCommandDataIBTest", InvokeResponseIBWithCommandDataIBTest),
2332 NL_TEST_DEF("InvokeResponseIBWithCommandStatusIBTest", InvokeResponseIBWithCommandStatusIBTest),
2333 NL_TEST_DEF("InvokeResponseIBWithMalformDataTest", InvokeResponseIBWithMalformDataTest),
2334 NL_TEST_DEF("InvokeRequestsTest", InvokeRequestsTest),
2335 NL_TEST_DEF("InvokeResponsesTest", InvokeResponsesTest),
2336 NL_TEST_DEF("InvokeInvokeRequestMessageTest", InvokeInvokeRequestMessageTest),
2337 NL_TEST_DEF("InvokeInvokeResponseMessageTest", InvokeInvokeResponseMessageTest),
yunhanw-google12ec7022021-11-01 19:53:29 -07002338 NL_TEST_DEF("ReportDataMessageTest", ReportDataMessageTest),
yunhanw-google12ec7022021-11-01 19:53:29 -07002339 NL_TEST_DEF("ReadRequestMessageTest", ReadRequestMessageTest),
2340 NL_TEST_DEF("WriteRequestMessageTest", WriteRequestMessageTest),
2341 NL_TEST_DEF("WriteResponseMessageTest", WriteResponseMessageTest),
2342 NL_TEST_DEF("SubscribeRequestMessageTest", SubscribeRequestMessageTest),
2343 NL_TEST_DEF("SubscribeResponseMessageTest", SubscribeResponseMessageTest),
yunhanw-google7f05fb62021-10-29 06:55:58 -07002344 NL_TEST_DEF("TimedRequestMessageTest", TimedRequestMessageTest),
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002345 NL_TEST_DEF("CheckPointRollbackTest", CheckPointRollbackTest),
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002346 NL_TEST_SENTINEL()
2347 };
2348// clang-format on
2349} // namespace
2350
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05002351/**
2352 * Set up the test suite.
2353 */
2354static int TestSetup(void * inContext)
2355{
2356 CHIP_ERROR error = chip::Platform::MemoryInit();
2357 if (error != CHIP_NO_ERROR)
2358 return FAILURE;
2359 return SUCCESS;
2360}
2361
2362/**
2363 * Tear down the test suite.
2364 */
2365static int TestTeardown(void * inContext)
2366{
2367 chip::Platform::MemoryShutdown();
2368 return SUCCESS;
2369}
2370
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002371int TestMessageDef()
2372{
2373 // clang-format off
2374 nlTestSuite theSuite =
2375 {
2376 "MessageDef",
2377 &sTests[0],
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05002378 TestSetup,
2379 TestTeardown,
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002380 };
2381 // clang-format on
2382
2383 nlTestRunner(&theSuite, nullptr);
2384
2385 return (nlTestRunnerStats(&theSuite));
2386}
2387
2388CHIP_REGISTER_TEST_SUITE(TestMessageDef)