blob: caecbc360493fc8c158f73342b7a32c04b1e753e [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
Daniel Nicoara641e3ad2022-07-25 15:32:03 -040025#include <app/AppConfig.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
yunhanw-google751d0dd2022-11-16 19:09:58 -080095#if CHIP_CONFIG_IM_PRETTY_PRINT
96 aStatusIBParser.PrettyPrint();
yunhanw-google3bec0f92021-11-03 16:12:39 -070097#endif
98 err = aStatusIBParser.DecodeStatusIB(statusIB);
99 NL_TEST_ASSERT(apSuite,
100 err == CHIP_NO_ERROR && statusIB.mStatus == chip::Protocols::InteractionModel::Status::InvalidSubscription &&
101 !statusIB.mClusterStatus.HasValue());
102}
103
yunhanw-googlea1cb3412021-12-06 13:32:40 -0800104void BuildClusterPathIB(nlTestSuite * apSuite, ClusterPathIB::Builder & aClusterPathBuilder)
105{
106 CHIP_ERROR err = CHIP_NO_ERROR;
107 aClusterPathBuilder.Node(1).Endpoint(2).Cluster(3).EndOfClusterPathIB();
108 err = aClusterPathBuilder.GetError();
109 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
110}
111
112void ParseClusterPathIB(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
113{
114 ClusterPathIB::Parser clusterPathParser;
115 CHIP_ERROR err = CHIP_NO_ERROR;
116 chip::NodeId node = 0;
117 chip::EndpointId endpoint = 0;
118 chip::ClusterId cluster = 0;
119
120 err = clusterPathParser.Init(aReader);
121 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -0800122#if CHIP_CONFIG_IM_PRETTY_PRINT
123 clusterPathParser.PrettyPrint();
yunhanw-googlea1cb3412021-12-06 13:32:40 -0800124#endif
125
126 err = clusterPathParser.GetNode(&node);
127 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && node == 1);
128
129 err = clusterPathParser.GetEndpoint(&endpoint);
130 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && endpoint == 2);
131
132 err = clusterPathParser.GetCluster(&cluster);
133 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && cluster == 3);
134}
135
136void BuildDataVersionFilterIB(nlTestSuite * apSuite, DataVersionFilterIB::Builder & aDataVersionFilterIBBuilder)
137{
yunhanw-google45847072021-12-08 14:14:10 -0800138 ClusterPathIB::Builder & clusterPathBuilder = aDataVersionFilterIBBuilder.CreatePath();
yunhanw-googlea1cb3412021-12-06 13:32:40 -0800139 NL_TEST_ASSERT(apSuite, clusterPathBuilder.GetError() == CHIP_NO_ERROR);
140 BuildClusterPathIB(apSuite, clusterPathBuilder);
141 aDataVersionFilterIBBuilder.DataVersion(2).EndOfDataVersionFilterIB();
142 NL_TEST_ASSERT(apSuite, aDataVersionFilterIBBuilder.GetError() == CHIP_NO_ERROR);
143}
144
145void ParseDataVersionFilterIB(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
146{
147 CHIP_ERROR err = CHIP_NO_ERROR;
148 DataVersionFilterIB::Parser dataVersionFilterIBParser;
149 ClusterPathIB::Parser clusterPath;
150 chip::DataVersion dataVersion = 2;
151
152 err = dataVersionFilterIBParser.Init(aReader);
153 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -0800154#if CHIP_CONFIG_IM_PRETTY_PRINT
155 dataVersionFilterIBParser.PrettyPrint();
yunhanw-googlea1cb3412021-12-06 13:32:40 -0800156#endif
157
158 err = dataVersionFilterIBParser.GetPath(&clusterPath);
159 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
160
161 err = dataVersionFilterIBParser.GetDataVersion(&dataVersion);
162 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && dataVersion == 2);
163}
164
165void BuildDataVersionFilterIBs(nlTestSuite * apSuite, DataVersionFilterIBs::Builder & aDataVersionFilterIBsBuilder)
166{
167 DataVersionFilterIB::Builder & dataVersionFilterIBBuilder = aDataVersionFilterIBsBuilder.CreateDataVersionFilter();
168 NL_TEST_ASSERT(apSuite, aDataVersionFilterIBsBuilder.GetError() == CHIP_NO_ERROR);
169 BuildDataVersionFilterIB(apSuite, dataVersionFilterIBBuilder);
170 aDataVersionFilterIBsBuilder.EndOfDataVersionFilterIBs();
171 NL_TEST_ASSERT(apSuite, aDataVersionFilterIBsBuilder.GetError() == CHIP_NO_ERROR);
172}
173
174void ParseDataVersionFilterIBs(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
175{
176 CHIP_ERROR err = CHIP_NO_ERROR;
177 DataVersionFilterIBs::Parser dataVersionFilterIBsParser;
178
179 err = dataVersionFilterIBsParser.Init(aReader);
180 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -0800181#if CHIP_CONFIG_IM_PRETTY_PRINT
182 dataVersionFilterIBsParser.PrettyPrint();
yunhanw-googlea1cb3412021-12-06 13:32:40 -0800183#endif
184}
185
yunhanw-googlebf585f82021-10-29 19:20:07 -0700186void BuildEventFilterIB(nlTestSuite * apSuite, EventFilterIB::Builder & aEventFilterIBBuilder)
187{
188 aEventFilterIBBuilder.Node(1).EventMin(2).EndOfEventFilterIB();
189 NL_TEST_ASSERT(apSuite, aEventFilterIBBuilder.GetError() == CHIP_NO_ERROR);
190}
191
192void ParseEventFilterIB(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
193{
194 CHIP_ERROR err = CHIP_NO_ERROR;
195 EventFilterIB::Parser eventFilterIBParser;
196 chip::NodeId node = 1;
197 uint64_t eventMin = 2;
198
199 err = eventFilterIBParser.Init(aReader);
200 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -0800201#if CHIP_CONFIG_IM_PRETTY_PRINT
202 eventFilterIBParser.PrettyPrint();
yunhanw-googlebf585f82021-10-29 19:20:07 -0700203#endif
204 err = eventFilterIBParser.GetNode(&node);
205 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && node == 1);
206
207 err = eventFilterIBParser.GetEventMin(&eventMin);
208 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && eventMin == 2);
209}
210
yunhanw-googlef1117272021-12-02 19:59:44 -0800211void BuildEventFilters(nlTestSuite * apSuite, EventFilterIBs::Builder & aEventFiltersBuilder)
yunhanw-googlebf585f82021-10-29 19:20:07 -0700212{
yunhanw-google299393b2021-12-06 09:59:34 -0800213 EventFilterIB::Builder & eventFilterBuilder = aEventFiltersBuilder.CreateEventFilter();
yunhanw-googlebf585f82021-10-29 19:20:07 -0700214 NL_TEST_ASSERT(apSuite, aEventFiltersBuilder.GetError() == CHIP_NO_ERROR);
215 BuildEventFilterIB(apSuite, eventFilterBuilder);
216 aEventFiltersBuilder.EndOfEventFilters();
217 NL_TEST_ASSERT(apSuite, aEventFiltersBuilder.GetError() == CHIP_NO_ERROR);
218}
219
220void ParseEventFilters(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
221{
222 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googlef1117272021-12-02 19:59:44 -0800223 EventFilterIBs::Parser eventFiltersParser;
yunhanw-googlebf585f82021-10-29 19:20:07 -0700224
225 err = eventFiltersParser.Init(aReader);
226 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -0800227#if CHIP_CONFIG_IM_PRETTY_PRINT
228 eventFiltersParser.PrettyPrint();
yunhanw-googlebf585f82021-10-29 19:20:07 -0700229#endif
230}
231
yunhanw-google64ffda02021-11-04 18:05:36 -0700232void BuildAttributePathIB(nlTestSuite * apSuite, AttributePathIB::Builder & aAttributePathBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800233{
234 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google64ffda02021-11-04 18:05:36 -0700235 aAttributePathBuilder.EnableTagCompression(false)
236 .Node(1)
237 .Endpoint(2)
238 .Cluster(3)
239 .Attribute(4)
240 .ListIndex(5)
241 .EndOfAttributePathIB();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800242 err = aAttributePathBuilder.GetError();
243 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
244}
245
yunhanw-google64ffda02021-11-04 18:05:36 -0700246void ParseAttributePathIB(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800247{
yunhanw-google64ffda02021-11-04 18:05:36 -0700248 AttributePathIB::Parser attributePathParser;
yunhanw-googledf5569f2021-02-25 11:14:18 -0800249 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google64ffda02021-11-04 18:05:36 -0700250 bool enableTagCompression = true;
251 chip::NodeId node = 1;
252 chip::EndpointId endpoint = 2;
253 chip::ClusterId cluster = 3;
254 chip::AttributeId attribute = 4;
yunhanw-googleebb73962021-04-16 16:02:17 -0700255 chip::ListIndex listIndex = 5;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800256
257 err = attributePathParser.Init(aReader);
258 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -0800259#if CHIP_CONFIG_IM_PRETTY_PRINT
260 attributePathParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -0700261#endif
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800262
yunhanw-google64ffda02021-11-04 18:05:36 -0700263 err = attributePathParser.GetEnableTagCompression(&enableTagCompression);
264 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && enableTagCompression == false);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800265
yunhanw-google64ffda02021-11-04 18:05:36 -0700266 err = attributePathParser.GetNode(&node);
267 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && node == 1);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800268
yunhanw-google64ffda02021-11-04 18:05:36 -0700269 err = attributePathParser.GetEndpoint(&endpoint);
270 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && endpoint == 2);
271
272 err = attributePathParser.GetCluster(&cluster);
273 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && cluster == 3);
274
275 err = attributePathParser.GetAttribute(&attribute);
276 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && attribute == 4);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800277
278 err = attributePathParser.GetListIndex(&listIndex);
279 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && listIndex == 5);
280}
281
yunhanw-googleb717b362021-11-08 13:34:19 -0800282void BuildAttributePathList(nlTestSuite * apSuite, AttributePathIBs::Builder & aAttributePathListBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800283{
yunhanw-google299393b2021-12-06 09:59:34 -0800284 AttributePathIB::Builder & attributePathBuilder = aAttributePathListBuilder.CreatePath();
yunhanw-google0c183552021-01-22 09:12:14 -0800285 NL_TEST_ASSERT(apSuite, attributePathBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google64ffda02021-11-04 18:05:36 -0700286 BuildAttributePathIB(apSuite, attributePathBuilder);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800287
yunhanw-googleb717b362021-11-08 13:34:19 -0800288 aAttributePathListBuilder.EndOfAttributePathIBs();
yunhanw-google0c183552021-01-22 09:12:14 -0800289 NL_TEST_ASSERT(apSuite, aAttributePathListBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800290}
291
292void ParseAttributePathList(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
293{
294 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googleb717b362021-11-08 13:34:19 -0800295 AttributePathIBs::Parser attributePathListParser;
yunhanw-google64ffda02021-11-04 18:05:36 -0700296 AttributePathIB::Parser attributePathParser;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800297
298 err = attributePathListParser.Init(aReader);
299 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
300
yunhanw-google751d0dd2022-11-16 19:09:58 -0800301#if CHIP_CONFIG_IM_PRETTY_PRINT
302 attributePathListParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -0700303#endif
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800304}
305
yunhanw-google2fe90242021-11-01 15:13:44 -0700306void BuildEventPath(nlTestSuite * apSuite, EventPathIB::Builder & aEventPathBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800307{
308 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google1f6c6e62021-11-02 10:09:53 -0700309 aEventPathBuilder.Node(1).Endpoint(2).Cluster(3).Event(4).IsUrgent(true).EndOfEventPathIB();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800310 err = aEventPathBuilder.GetError();
311 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
312}
313
yunhanw-google2fe90242021-11-01 15:13:44 -0700314void ParseEventPath(nlTestSuite * apSuite, EventPathIB::Parser & aEventPathParser)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800315{
yunhanw-google64ffda02021-11-04 18:05:36 -0700316 CHIP_ERROR err = CHIP_NO_ERROR;
317 chip::NodeId node = 1;
318 chip::EndpointId endpoint = 2;
319 chip::ClusterId cluster = 3;
320 chip::EventId event = 4;
321 bool isUrgent = false;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800322
yunhanw-google751d0dd2022-11-16 19:09:58 -0800323#if CHIP_CONFIG_IM_PRETTY_PRINT
324 aEventPathParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -0700325#endif
yunhanw-google64ffda02021-11-04 18:05:36 -0700326 err = aEventPathParser.GetNode(&node);
327 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && node == 1);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800328
yunhanw-google64ffda02021-11-04 18:05:36 -0700329 err = aEventPathParser.GetEndpoint(&endpoint);
330 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && endpoint == 2);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800331
yunhanw-google64ffda02021-11-04 18:05:36 -0700332 err = aEventPathParser.GetCluster(&cluster);
333 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && cluster == 3);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800334
yunhanw-google64ffda02021-11-04 18:05:36 -0700335 err = aEventPathParser.GetEvent(&event);
336 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && event == 4);
yunhanw-google1f6c6e62021-11-02 10:09:53 -0700337
338 err = aEventPathParser.GetIsUrgent(&isUrgent);
339 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && isUrgent == true);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800340}
341
yunhanw-googlef1117272021-12-02 19:59:44 -0800342void BuildEventPaths(nlTestSuite * apSuite, EventPathIBs::Builder & aEventPathsBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800343{
yunhanw-google299393b2021-12-06 09:59:34 -0800344 EventPathIB::Builder & eventPathBuilder = aEventPathsBuilder.CreatePath();
yunhanw-google0c183552021-01-22 09:12:14 -0800345 NL_TEST_ASSERT(apSuite, eventPathBuilder.GetError() == CHIP_NO_ERROR);
346 BuildEventPath(apSuite, eventPathBuilder);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800347
yunhanw-google2fe90242021-11-01 15:13:44 -0700348 aEventPathsBuilder.EndOfEventPaths();
349 NL_TEST_ASSERT(apSuite, aEventPathsBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800350}
351
yunhanw-google2fe90242021-11-01 15:13:44 -0700352void ParseEventPaths(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800353{
354 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googlef1117272021-12-02 19:59:44 -0800355 EventPathIBs::Parser eventPathListParser;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800356
357 err = eventPathListParser.Init(aReader);
358 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -0800359#if CHIP_CONFIG_IM_PRETTY_PRINT
360 eventPathListParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -0700361#endif
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800362}
363
yunhanw-google8c2638c2021-10-20 16:33:42 -0700364void BuildCommandPath(nlTestSuite * apSuite, CommandPathIB::Builder & aCommandPathBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800365{
yunhanw-google36e61e32021-11-02 08:31:34 -0700366 aCommandPathBuilder.EndpointId(1).ClusterId(3).CommandId(4).EndOfCommandPathIB();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800367 NL_TEST_ASSERT(apSuite, aCommandPathBuilder.GetError() == CHIP_NO_ERROR);
368}
369
370void ParseCommandPath(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
371{
372 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google8c2638c2021-10-20 16:33:42 -0700373 CommandPathIB::Parser commandPathParser;
yunhanw-googledf5569f2021-02-25 11:14:18 -0800374 chip::EndpointId endpointId = 0;
375 chip::ClusterId clusterId = 0;
376 chip::CommandId commandId = 0;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800377
378 err = commandPathParser.Init(aReader);
379 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
380
yunhanw-google751d0dd2022-11-16 19:09:58 -0800381#if CHIP_CONFIG_IM_PRETTY_PRINT
382 commandPathParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -0700383#endif
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800384 err = commandPathParser.GetEndpointId(&endpointId);
385 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && endpointId == 1);
386
yunhanw-googledf5569f2021-02-25 11:14:18 -0800387 err = commandPathParser.GetClusterId(&clusterId);
388 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && clusterId == 3);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800389
390 err = commandPathParser.GetCommandId(&commandId);
391 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && commandId == 4);
392}
393
yunhanw-google3bec0f92021-11-03 16:12:39 -0700394void BuildEventDataIB(nlTestSuite * apSuite, EventDataIB::Builder & aEventDataIBBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800395{
396 CHIP_ERROR err = CHIP_NO_ERROR;
397
yunhanw-google299393b2021-12-06 09:59:34 -0800398 EventPathIB::Builder & eventPathBuilder = aEventDataIBBuilder.CreatePath();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800399 NL_TEST_ASSERT(apSuite, eventPathBuilder.GetError() == CHIP_NO_ERROR);
400 BuildEventPath(apSuite, eventPathBuilder);
401
yunhanw-google51db97b2021-12-03 08:36:41 -0800402 aEventDataIBBuilder.EventNumber(2).Priority(3).EpochTimestamp(4).SystemTimestamp(5).DeltaEpochTimestamp(6).DeltaSystemTimestamp(
yunhanw-google3bec0f92021-11-03 16:12:39 -0700403 7);
404 err = aEventDataIBBuilder.GetError();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800405 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
406 // Construct test event data
407 {
yunhanw-google3bec0f92021-11-03 16:12:39 -0700408 chip::TLV::TLVWriter * pWriter = aEventDataIBBuilder.GetWriter();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800409 chip::TLV::TLVType dummyType = chip::TLV::kTLVType_NotSpecified;
yunhanw-google3bec0f92021-11-03 16:12:39 -0700410 err = pWriter->StartContainer(chip::TLV::ContextTag(chip::to_underlying(EventDataIB::Tag::kData)),
411 chip::TLV::kTLVType_Structure, dummyType);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800412 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
413
414 err = pWriter->PutBoolean(chip::TLV::ContextTag(1), true);
415 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
416
417 err = pWriter->EndContainer(dummyType);
418 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
419 }
420
yunhanw-google3bec0f92021-11-03 16:12:39 -0700421 aEventDataIBBuilder.EndOfEventDataIB();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800422}
423
yunhanw-google3bec0f92021-11-03 16:12:39 -0700424void ParseEventDataIB(nlTestSuite * apSuite, EventDataIB::Parser & aEventDataIBParser)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800425{
yunhanw-googledf5569f2021-02-25 11:14:18 -0800426 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google3bec0f92021-11-03 16:12:39 -0700427 uint8_t priorityLevel = 0;
428 chip::EventNumber number = 0;
429 uint64_t EpochTimestamp = 0;
yunhanw-googledf5569f2021-02-25 11:14:18 -0800430 uint64_t systemTimestamp = 0;
431 uint64_t deltaUTCTimestamp = 0;
432 uint64_t deltaSystemTimestamp = 0;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800433
yunhanw-google751d0dd2022-11-16 19:09:58 -0800434#if CHIP_CONFIG_IM_PRETTY_PRINT
435 aEventDataIBParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -0700436#endif
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800437 {
438 {
yunhanw-google2fe90242021-11-01 15:13:44 -0700439 EventPathIB::Parser eventPath;
yunhanw-google3bec0f92021-11-03 16:12:39 -0700440 err = aEventDataIBParser.GetPath(&eventPath);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800441 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
442 }
yunhanw-google3bec0f92021-11-03 16:12:39 -0700443 err = aEventDataIBParser.GetEventNumber(&number);
yunhanw-google51db97b2021-12-03 08:36:41 -0800444 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && number == 2);
445 err = aEventDataIBParser.GetPriority(&priorityLevel);
446 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && priorityLevel == 3);
yunhanw-google3bec0f92021-11-03 16:12:39 -0700447 err = aEventDataIBParser.GetEpochTimestamp(&EpochTimestamp);
448 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && EpochTimestamp == 4);
449 err = aEventDataIBParser.GetSystemTimestamp(&systemTimestamp);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800450 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && systemTimestamp == 5);
yunhanw-google3bec0f92021-11-03 16:12:39 -0700451 err = aEventDataIBParser.GetDeltaEpochTimestamp(&deltaUTCTimestamp);
yunhanw-googledf5569f2021-02-25 11:14:18 -0800452 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && deltaUTCTimestamp == 6);
yunhanw-google3bec0f92021-11-03 16:12:39 -0700453 err = aEventDataIBParser.GetDeltaSystemTimestamp(&deltaSystemTimestamp);
yunhanw-googledf5569f2021-02-25 11:14:18 -0800454 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && deltaSystemTimestamp == 7);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800455
456 {
457 chip::TLV::TLVReader reader;
458 bool val = false;
459 chip::TLV::TLVType container;
yunhanw-google3bec0f92021-11-03 16:12:39 -0700460 aEventDataIBParser.GetData(&reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800461 err = reader.EnterContainer(container);
462 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
463
464 err = reader.Next();
465 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
466
467 err = reader.Get(val);
468 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && val);
469
470 err = reader.ExitContainer(container);
471 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
472 }
473 }
474}
475
yunhanw-google1f6c6e62021-11-02 10:09:53 -0700476void BuildEventStatusIB(nlTestSuite * apSuite, EventStatusIB::Builder & aEventStatusIBBuilder)
477{
yunhanw-google299393b2021-12-06 09:59:34 -0800478 EventPathIB::Builder & eventPathBuilder = aEventStatusIBBuilder.CreatePath();
yunhanw-google1f6c6e62021-11-02 10:09:53 -0700479 NL_TEST_ASSERT(apSuite, aEventStatusIBBuilder.GetError() == CHIP_NO_ERROR);
480 BuildEventPath(apSuite, eventPathBuilder);
481
yunhanw-google299393b2021-12-06 09:59:34 -0800482 StatusIB::Builder & statusIBBuilder = aEventStatusIBBuilder.CreateErrorStatus();
yunhanw-google1f6c6e62021-11-02 10:09:53 -0700483 NL_TEST_ASSERT(apSuite, statusIBBuilder.GetError() == CHIP_NO_ERROR);
484 BuildStatusIB(apSuite, statusIBBuilder);
485
486 aEventStatusIBBuilder.EndOfEventStatusIB();
487 NL_TEST_ASSERT(apSuite, aEventStatusIBBuilder.GetError() == CHIP_NO_ERROR);
488}
489
490void ParseEventStatusIB(nlTestSuite * apSuite, EventStatusIB::Parser & aEventStatusIBParser)
491{
492 CHIP_ERROR err = CHIP_NO_ERROR;
493 EventPathIB::Parser eventPathParser;
494 StatusIB::Parser statusParser;
yunhanw-google751d0dd2022-11-16 19:09:58 -0800495#if CHIP_CONFIG_IM_PRETTY_PRINT
496 aEventStatusIBParser.PrettyPrint();
yunhanw-google1f6c6e62021-11-02 10:09:53 -0700497#endif
498 err = aEventStatusIBParser.GetPath(&eventPathParser);
499 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
500
501 err = aEventStatusIBParser.GetErrorStatus(&statusParser);
502 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
503}
504
yunhanw-google3bec0f92021-11-03 16:12:39 -0700505void BuildEventReportIB(nlTestSuite * apSuite, EventReportIB::Builder & aEventReportIBBuilder)
506{
yunhanw-google299393b2021-12-06 09:59:34 -0800507 EventDataIB::Builder & eventDataIBBuilder = aEventReportIBBuilder.CreateEventData();
yunhanw-google3bec0f92021-11-03 16:12:39 -0700508 NL_TEST_ASSERT(apSuite, aEventReportIBBuilder.GetError() == CHIP_NO_ERROR);
509 BuildEventDataIB(apSuite, eventDataIBBuilder);
510
511 aEventReportIBBuilder.EndOfEventReportIB();
512 NL_TEST_ASSERT(apSuite, aEventReportIBBuilder.GetError() == CHIP_NO_ERROR);
513}
514
515void ParseEventReportIB(nlTestSuite * apSuite, EventReportIB::Parser & aEventReportIBParser)
516{
517 CHIP_ERROR err = CHIP_NO_ERROR;
518 EventStatusIB::Parser eventStatusParser;
519 EventDataIB::Parser eventDataParser;
520
yunhanw-google751d0dd2022-11-16 19:09:58 -0800521#if CHIP_CONFIG_IM_PRETTY_PRINT
522 aEventReportIBParser.PrettyPrint();
yunhanw-google3bec0f92021-11-03 16:12:39 -0700523#endif
yunhanw-googlef3d6b7c2021-11-17 13:42:38 -0800524
yunhanw-google3bec0f92021-11-03 16:12:39 -0700525 err = aEventReportIBParser.GetEventData(&eventDataParser);
526 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
527}
528
yunhanw-googlef1117272021-12-02 19:59:44 -0800529void BuildEventReports(nlTestSuite * apSuite, EventReportIBs::Builder & aEventReportsBuilder)
yunhanw-google3bec0f92021-11-03 16:12:39 -0700530{
yunhanw-google299393b2021-12-06 09:59:34 -0800531 EventReportIB::Builder & eventReportIBBuilder = aEventReportsBuilder.CreateEventReport();
yunhanw-google3bec0f92021-11-03 16:12:39 -0700532 NL_TEST_ASSERT(apSuite, aEventReportsBuilder.GetError() == CHIP_NO_ERROR);
533 BuildEventReportIB(apSuite, eventReportIBBuilder);
yunhanw-google3bec0f92021-11-03 16:12:39 -0700534 aEventReportsBuilder.EndOfEventReports();
535 NL_TEST_ASSERT(apSuite, aEventReportsBuilder.GetError() == CHIP_NO_ERROR);
536}
537
538void ParseEventReports(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
539{
540 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googlef1117272021-12-02 19:59:44 -0800541 EventReportIBs::Parser eventReportsParser;
yunhanw-google3bec0f92021-11-03 16:12:39 -0700542
543 err = eventReportsParser.Init(aReader);
544 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -0800545#if CHIP_CONFIG_IM_PRETTY_PRINT
546 eventReportsParser.PrettyPrint();
yunhanw-google3bec0f92021-11-03 16:12:39 -0700547#endif
548}
549
yunhanw-google35e67172021-10-11 17:12:06 -0700550void BuildAttributeStatusIB(nlTestSuite * apSuite, AttributeStatusIB::Builder & aAttributeStatusIBBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800551{
yunhanw-google299393b2021-12-06 09:59:34 -0800552 AttributePathIB::Builder & attributePathBuilder = aAttributeStatusIBBuilder.CreatePath();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800553 NL_TEST_ASSERT(apSuite, attributePathBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google64ffda02021-11-04 18:05:36 -0700554 BuildAttributePathIB(apSuite, attributePathBuilder);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800555
yunhanw-google299393b2021-12-06 09:59:34 -0800556 StatusIB::Builder & statusIBBuilder = aAttributeStatusIBBuilder.CreateErrorStatus();
yunhanw-google35e67172021-10-11 17:12:06 -0700557 NL_TEST_ASSERT(apSuite, statusIBBuilder.GetError() == CHIP_NO_ERROR);
558 BuildStatusIB(apSuite, statusIBBuilder);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800559
yunhanw-google35e67172021-10-11 17:12:06 -0700560 aAttributeStatusIBBuilder.EndOfAttributeStatusIB();
561 NL_TEST_ASSERT(apSuite, aAttributeStatusIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800562}
563
yunhanw-google35e67172021-10-11 17:12:06 -0700564void ParseAttributeStatusIB(nlTestSuite * apSuite, AttributeStatusIB::Parser & aAttributeStatusIBParser)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800565{
566 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google64ffda02021-11-04 18:05:36 -0700567 AttributePathIB::Parser attributePathParser;
yunhanw-google35e67172021-10-11 17:12:06 -0700568 StatusIB::Parser StatusIBParser;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800569
yunhanw-google751d0dd2022-11-16 19:09:58 -0800570#if CHIP_CONFIG_IM_PRETTY_PRINT
571 aAttributeStatusIBParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -0700572#endif
yunhanw-google64ffda02021-11-04 18:05:36 -0700573 err = aAttributeStatusIBParser.GetPath(&attributePathParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800574 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
575
yunhanw-google64ffda02021-11-04 18:05:36 -0700576 err = aAttributeStatusIBParser.GetErrorStatus(&StatusIBParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800577 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
578}
579
yunhanw-googlef1117272021-12-02 19:59:44 -0800580void BuildAttributeStatuses(nlTestSuite * apSuite, AttributeStatusIBs::Builder & aAttributeStatusesBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800581{
yunhanw-google299393b2021-12-06 09:59:34 -0800582 AttributeStatusIB::Builder & aAttributeStatusIBBuilder = aAttributeStatusesBuilder.CreateAttributeStatus();
yunhanw-google64ffda02021-11-04 18:05:36 -0700583 NL_TEST_ASSERT(apSuite, aAttributeStatusesBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google35e67172021-10-11 17:12:06 -0700584 BuildAttributeStatusIB(apSuite, aAttributeStatusIBBuilder);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800585
yunhanw-google64ffda02021-11-04 18:05:36 -0700586 aAttributeStatusesBuilder.EndOfAttributeStatuses();
587 NL_TEST_ASSERT(apSuite, aAttributeStatusesBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800588}
589
yunhanw-google64ffda02021-11-04 18:05:36 -0700590void ParseAttributeStatuses(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800591{
592 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googlef1117272021-12-02 19:59:44 -0800593 AttributeStatusIBs::Parser attributeStatusParser;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800594
595 err = attributeStatusParser.Init(aReader);
596 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
597
yunhanw-google751d0dd2022-11-16 19:09:58 -0800598#if CHIP_CONFIG_IM_PRETTY_PRINT
599 attributeStatusParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -0700600#endif
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800601}
602
yunhanw-googleb717b362021-11-08 13:34:19 -0800603void BuildAttributeDataIB(nlTestSuite * apSuite, AttributeDataIB::Builder & aAttributeDataIBBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800604{
605 CHIP_ERROR err = CHIP_NO_ERROR;
606
yunhanw-google51db97b2021-12-03 08:36:41 -0800607 aAttributeDataIBBuilder.DataVersion(2);
yunhanw-google299393b2021-12-06 09:59:34 -0800608 AttributePathIB::Builder & attributePathBuilder = aAttributeDataIBBuilder.CreatePath();
yunhanw-googleb717b362021-11-08 13:34:19 -0800609 NL_TEST_ASSERT(apSuite, aAttributeDataIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google64ffda02021-11-04 18:05:36 -0700610 BuildAttributePathIB(apSuite, attributePathBuilder);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800611
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800612 // Construct attribute data
613 {
yunhanw-googleb717b362021-11-08 13:34:19 -0800614 chip::TLV::TLVWriter * pWriter = aAttributeDataIBBuilder.GetWriter();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800615 chip::TLV::TLVType dummyType = chip::TLV::kTLVType_NotSpecified;
yunhanw-googleb717b362021-11-08 13:34:19 -0800616 err = pWriter->StartContainer(chip::TLV::ContextTag(chip::to_underlying(AttributeDataIB::Tag::kData)),
617 chip::TLV::kTLVType_Structure, dummyType);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800618 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
619
620 err = pWriter->PutBoolean(chip::TLV::ContextTag(1), true);
621 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
622
623 err = pWriter->EndContainer(dummyType);
624 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
625 }
yunhanw-google51db97b2021-12-03 08:36:41 -0800626
yunhanw-googleb717b362021-11-08 13:34:19 -0800627 err = aAttributeDataIBBuilder.GetError();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800628 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googleb717b362021-11-08 13:34:19 -0800629 aAttributeDataIBBuilder.EndOfAttributeDataIB();
630 NL_TEST_ASSERT(apSuite, aAttributeDataIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800631}
632
yunhanw-googleb717b362021-11-08 13:34:19 -0800633void ParseAttributeDataIB(nlTestSuite * apSuite, AttributeDataIB::Parser & aAttributeDataIBParser)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800634{
635 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google64ffda02021-11-04 18:05:36 -0700636 AttributePathIB::Parser attributePathParser;
yunhanw-google0edb9f92022-02-11 00:50:59 -0800637 chip::DataVersion version = 0;
yunhanw-google751d0dd2022-11-16 19:09:58 -0800638#if CHIP_CONFIG_IM_PRETTY_PRINT
639 aAttributeDataIBParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -0700640#endif
yunhanw-googleb717b362021-11-08 13:34:19 -0800641 err = aAttributeDataIBParser.GetPath(&attributePathParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800642 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
643
yunhanw-googleb717b362021-11-08 13:34:19 -0800644 err = aAttributeDataIBParser.GetDataVersion(&version);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800645 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && version == 2);
646
647 {
648 chip::TLV::TLVReader reader;
649 bool val = false;
650 chip::TLV::TLVType container;
yunhanw-googleb717b362021-11-08 13:34:19 -0800651 aAttributeDataIBParser.GetData(&reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800652 err = reader.EnterContainer(container);
653 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
654
655 err = reader.Next();
656 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
657
658 err = reader.Get(val);
659 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && val);
660
661 err = reader.ExitContainer(container);
662 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
663 }
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800664}
665
yunhanw-googleb717b362021-11-08 13:34:19 -0800666void BuildAttributeDataIBs(nlTestSuite * apSuite, AttributeDataIBs::Builder & aAttributeDataIBsBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800667{
yunhanw-google299393b2021-12-06 09:59:34 -0800668 AttributeDataIB::Builder & attributeDataIBBuilder = aAttributeDataIBsBuilder.CreateAttributeDataIBBuilder();
yunhanw-googleb717b362021-11-08 13:34:19 -0800669 NL_TEST_ASSERT(apSuite, aAttributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google299393b2021-12-06 09:59:34 -0800670 BuildAttributeDataIB(apSuite, attributeDataIBBuilder);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800671
yunhanw-googleb717b362021-11-08 13:34:19 -0800672 aAttributeDataIBsBuilder.EndOfAttributeDataIBs();
673 NL_TEST_ASSERT(apSuite, aAttributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800674}
675
yunhanw-googleb717b362021-11-08 13:34:19 -0800676void ParseAttributeDataIBs(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800677{
678 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googleb717b362021-11-08 13:34:19 -0800679 AttributeDataIBs::Parser AttributeDataIBsParser;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800680
yunhanw-googleb717b362021-11-08 13:34:19 -0800681 err = AttributeDataIBsParser.Init(aReader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800682 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -0800683#if CHIP_CONFIG_IM_PRETTY_PRINT
684 AttributeDataIBsParser.PrettyPrint();
yunhanw-googleb717b362021-11-08 13:34:19 -0800685#endif
686}
687
688void BuildAttributeReportIB(nlTestSuite * apSuite, AttributeReportIB::Builder & aAttributeReportIBBuilder)
689{
yunhanw-google299393b2021-12-06 09:59:34 -0800690 AttributeDataIB::Builder & attributeDataIBBuilder = aAttributeReportIBBuilder.CreateAttributeData();
yunhanw-googleb717b362021-11-08 13:34:19 -0800691 NL_TEST_ASSERT(apSuite, aAttributeReportIBBuilder.GetError() == CHIP_NO_ERROR);
692 BuildAttributeDataIB(apSuite, attributeDataIBBuilder);
693
694 aAttributeReportIBBuilder.EndOfAttributeReportIB();
695 NL_TEST_ASSERT(apSuite, aAttributeReportIBBuilder.GetError() == CHIP_NO_ERROR);
696}
697
698void ParseAttributeReportIB(nlTestSuite * apSuite, AttributeReportIB::Parser & aAttributeReportIBParser)
699{
700 CHIP_ERROR err = CHIP_NO_ERROR;
701 AttributeStatusIB::Parser attributeStatusParser;
702 AttributeDataIB::Parser attributeDataParser;
703
yunhanw-google751d0dd2022-11-16 19:09:58 -0800704#if CHIP_CONFIG_IM_PRETTY_PRINT
705 aAttributeReportIBParser.PrettyPrint();
yunhanw-googleb717b362021-11-08 13:34:19 -0800706#endif
707 err = aAttributeReportIBParser.GetAttributeData(&attributeDataParser);
708 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
709}
710
711void BuildAttributeReportIBs(nlTestSuite * apSuite, AttributeReportIBs::Builder & aAttributeReportIBsBuilder)
712{
yunhanw-google299393b2021-12-06 09:59:34 -0800713 AttributeReportIB::Builder & attributeReportIBBuilder = aAttributeReportIBsBuilder.CreateAttributeReport();
yunhanw-googleb717b362021-11-08 13:34:19 -0800714 NL_TEST_ASSERT(apSuite, aAttributeReportIBsBuilder.GetError() == CHIP_NO_ERROR);
715 BuildAttributeReportIB(apSuite, attributeReportIBBuilder);
716
717 aAttributeReportIBsBuilder.EndOfAttributeReportIBs();
718 NL_TEST_ASSERT(apSuite, aAttributeReportIBsBuilder.GetError() == CHIP_NO_ERROR);
719}
720
721void ParseAttributeReportIBs(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
722{
723 CHIP_ERROR err = CHIP_NO_ERROR;
724 AttributeReportIBs::Parser attributeReportIBsParser;
725
726 err = attributeReportIBsParser.Init(aReader);
727 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -0800728#if CHIP_CONFIG_IM_PRETTY_PRINT
729 attributeReportIBsParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -0700730#endif
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800731}
732
yunhanw-google67f74a32021-10-21 12:15:08 -0700733void BuildCommandDataIB(nlTestSuite * apSuite, CommandDataIB::Builder & aCommandDataIBBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800734{
735 CHIP_ERROR err = CHIP_NO_ERROR;
736
yunhanw-google299393b2021-12-06 09:59:34 -0800737 CommandPathIB::Builder & commandPathBuilder = aCommandDataIBBuilder.CreatePath();
yunhanw-google67f74a32021-10-21 12:15:08 -0700738 NL_TEST_ASSERT(apSuite, aCommandDataIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800739 BuildCommandPath(apSuite, commandPathBuilder);
740
741 // Construct command data
742 {
yunhanw-google67f74a32021-10-21 12:15:08 -0700743 chip::TLV::TLVWriter * pWriter = aCommandDataIBBuilder.GetWriter();
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800744 chip::TLV::TLVType dummyType = chip::TLV::kTLVType_NotSpecified;
yunhanw-google731ae5a2022-06-01 23:02:05 -0700745 err = pWriter->StartContainer(chip::TLV::ContextTag(chip::to_underlying(CommandDataIB::Tag::kFields)),
yunhanw-google36e61e32021-11-02 08:31:34 -0700746 chip::TLV::kTLVType_Structure, dummyType);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800747 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
748
749 err = pWriter->PutBoolean(chip::TLV::ContextTag(1), true);
750 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
751
752 err = pWriter->EndContainer(dummyType);
753 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
754 }
755
yunhanw-google67f74a32021-10-21 12:15:08 -0700756 aCommandDataIBBuilder.EndOfCommandDataIB();
757 NL_TEST_ASSERT(apSuite, aCommandDataIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800758}
759
yunhanw-google67f74a32021-10-21 12:15:08 -0700760void ParseCommandDataIB(nlTestSuite * apSuite, CommandDataIB::Parser & aCommandDataIBParser)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800761{
762 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google8c2638c2021-10-20 16:33:42 -0700763 CommandPathIB::Parser commandPathParser;
yunhanw-google751d0dd2022-11-16 19:09:58 -0800764#if CHIP_CONFIG_IM_PRETTY_PRINT
765 aCommandDataIBParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -0700766#endif
yunhanw-google36e61e32021-11-02 08:31:34 -0700767 err = aCommandDataIBParser.GetPath(&commandPathParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800768 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
769
770 {
771 chip::TLV::TLVReader reader;
772 bool val = false;
773 chip::TLV::TLVType container;
yunhanw-google731ae5a2022-06-01 23:02:05 -0700774 aCommandDataIBParser.GetFields(&reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800775 err = reader.EnterContainer(container);
776 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
777
778 err = reader.Next();
779 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
780
781 err = reader.Get(val);
782 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && val);
783
784 err = reader.ExitContainer(container);
785 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
786 }
787}
788
yunhanw-google36e61e32021-11-02 08:31:34 -0700789void BuildCommandStatusIB(nlTestSuite * apSuite, CommandStatusIB::Builder & aCommandStatusIBBuilder)
yunhanw-google9577ff52021-04-05 12:51:14 -0700790{
yunhanw-google299393b2021-12-06 09:59:34 -0800791 CommandPathIB::Builder & commandPathBuilder = aCommandStatusIBBuilder.CreatePath();
yunhanw-google36e61e32021-11-02 08:31:34 -0700792 NL_TEST_ASSERT(apSuite, aCommandStatusIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google9577ff52021-04-05 12:51:14 -0700793 BuildCommandPath(apSuite, commandPathBuilder);
794
yunhanw-google299393b2021-12-06 09:59:34 -0800795 StatusIB::Builder & statusIBBuilder = aCommandStatusIBBuilder.CreateErrorStatus();
yunhanw-google35e67172021-10-11 17:12:06 -0700796 NL_TEST_ASSERT(apSuite, statusIBBuilder.GetError() == CHIP_NO_ERROR);
797 BuildStatusIB(apSuite, statusIBBuilder);
yunhanw-google9577ff52021-04-05 12:51:14 -0700798
yunhanw-google36e61e32021-11-02 08:31:34 -0700799 aCommandStatusIBBuilder.EndOfCommandStatusIB();
800 NL_TEST_ASSERT(apSuite, aCommandStatusIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google9577ff52021-04-05 12:51:14 -0700801}
802
yunhanw-google36e61e32021-11-02 08:31:34 -0700803void ParseCommandStatusIB(nlTestSuite * apSuite, CommandStatusIB::Parser & aCommandStatusIBParser)
yunhanw-google9577ff52021-04-05 12:51:14 -0700804{
805 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google8c2638c2021-10-20 16:33:42 -0700806 CommandPathIB::Parser commandPathParser;
yunhanw-google36e61e32021-11-02 08:31:34 -0700807 StatusIB::Parser statusParser;
yunhanw-google751d0dd2022-11-16 19:09:58 -0800808#if CHIP_CONFIG_IM_PRETTY_PRINT
809 aCommandStatusIBParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -0700810#endif
yunhanw-google36e61e32021-11-02 08:31:34 -0700811 err = aCommandStatusIBParser.GetPath(&commandPathParser);
yunhanw-google9577ff52021-04-05 12:51:14 -0700812 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
813
yunhanw-google36e61e32021-11-02 08:31:34 -0700814 err = aCommandStatusIBParser.GetErrorStatus(&statusParser);
yunhanw-google9577ff52021-04-05 12:51:14 -0700815 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
816}
817
yunhanw-google36e61e32021-11-02 08:31:34 -0700818void BuildWrongInvokeResponseIB(nlTestSuite * apSuite, InvokeResponseIB::Builder & aInvokeResponseIBBuilder)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800819{
yunhanw-google751d0dd2022-11-16 19:09:58 -0800820 aInvokeResponseIBBuilder.CreateCommand();
yunhanw-google36e61e32021-11-02 08:31:34 -0700821 NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800822}
823
yunhanw-google36e61e32021-11-02 08:31:34 -0700824void BuildInvokeResponseIBWithCommandDataIB(nlTestSuite * apSuite, InvokeResponseIB::Builder & aInvokeResponseIBBuilder)
825{
yunhanw-google299393b2021-12-06 09:59:34 -0800826 CommandDataIB::Builder & commandDataBuilder = aInvokeResponseIBBuilder.CreateCommand();
yunhanw-google36e61e32021-11-02 08:31:34 -0700827 NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
828 BuildCommandDataIB(apSuite, commandDataBuilder);
829 aInvokeResponseIBBuilder.EndOfInvokeResponseIB();
830 NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
831}
832
833void BuildInvokeResponseIBWithCommandStatusIB(nlTestSuite * apSuite, InvokeResponseIB::Builder & aInvokeResponseIBBuilder)
834{
yunhanw-google299393b2021-12-06 09:59:34 -0800835 CommandStatusIB::Builder & commandStatusBuilder = aInvokeResponseIBBuilder.CreateStatus();
yunhanw-google36e61e32021-11-02 08:31:34 -0700836 NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
837 BuildCommandStatusIB(apSuite, commandStatusBuilder);
838 aInvokeResponseIBBuilder.EndOfInvokeResponseIB();
839 NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
840}
841
842void ParseInvokeResponseIBWithCommandDataIB(nlTestSuite * apSuite, InvokeResponseIB::Parser & aInvokeResponseIBParser)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800843{
844 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google36e61e32021-11-02 08:31:34 -0700845 CommandDataIB::Parser commandDataParser;
846 CommandStatusIB::Parser statusIBParser;
yunhanw-google751d0dd2022-11-16 19:09:58 -0800847#if CHIP_CONFIG_IM_PRETTY_PRINT
848 aInvokeResponseIBParser.PrettyPrint();
yunhanw-google36e61e32021-11-02 08:31:34 -0700849#endif
850 err = aInvokeResponseIBParser.GetCommand(&commandDataParser);
851 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
852}
853
854void ParseInvokeResponseIBWithCommandStatusIB(nlTestSuite * apSuite, InvokeResponseIB::Parser & aInvokeResponseIBParser)
855{
856 CHIP_ERROR err = CHIP_NO_ERROR;
857 CommandDataIB::Parser commandDataParser;
858 CommandStatusIB::Parser statusIBParser;
yunhanw-google751d0dd2022-11-16 19:09:58 -0800859#if CHIP_CONFIG_IM_PRETTY_PRINT
860 aInvokeResponseIBParser.PrettyPrint();
yunhanw-google36e61e32021-11-02 08:31:34 -0700861#endif
862 err = aInvokeResponseIBParser.GetStatus(&statusIBParser);
863 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
864}
865
yunhanw-google36e61e32021-11-02 08:31:34 -0700866void BuildInvokeRequests(nlTestSuite * apSuite, InvokeRequests::Builder & aInvokeRequestsBuilder)
867{
yunhanw-google299393b2021-12-06 09:59:34 -0800868 CommandDataIB::Builder & aCommandDataIBBuilder = aInvokeRequestsBuilder.CreateCommandData();
yunhanw-google36e61e32021-11-02 08:31:34 -0700869 NL_TEST_ASSERT(apSuite, aInvokeRequestsBuilder.GetError() == CHIP_NO_ERROR);
870 BuildCommandDataIB(apSuite, aCommandDataIBBuilder);
871
872 aInvokeRequestsBuilder.EndOfInvokeRequests();
873 NL_TEST_ASSERT(apSuite, aInvokeRequestsBuilder.GetError() == CHIP_NO_ERROR);
874}
875
876void ParseInvokeRequests(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
877{
878 CHIP_ERROR err = CHIP_NO_ERROR;
879 InvokeRequests::Parser invokeRequestsParser;
880 err = invokeRequestsParser.Init(aReader);
yunhanw-googled644bb02021-04-13 07:26:17 -0700881 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
882
yunhanw-google751d0dd2022-11-16 19:09:58 -0800883#if CHIP_CONFIG_IM_PRETTY_PRINT
884 invokeRequestsParser.PrettyPrint();
yunhanw-google36e61e32021-11-02 08:31:34 -0700885#endif
886}
887
yunhanw-googlef1117272021-12-02 19:59:44 -0800888void BuildInvokeResponses(nlTestSuite * apSuite, InvokeResponseIBs::Builder & aInvokeResponsesBuilder)
yunhanw-google36e61e32021-11-02 08:31:34 -0700889{
yunhanw-google299393b2021-12-06 09:59:34 -0800890 InvokeResponseIB::Builder & invokeResponseIBBuilder = aInvokeResponsesBuilder.CreateInvokeResponse();
yunhanw-google36e61e32021-11-02 08:31:34 -0700891 NL_TEST_ASSERT(apSuite, aInvokeResponsesBuilder.GetError() == CHIP_NO_ERROR);
892 BuildInvokeResponseIBWithCommandDataIB(apSuite, invokeResponseIBBuilder);
893
894 aInvokeResponsesBuilder.EndOfInvokeResponses();
895 NL_TEST_ASSERT(apSuite, aInvokeResponsesBuilder.GetError() == CHIP_NO_ERROR);
896}
897
898void ParseInvokeResponses(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
899{
900 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googlef1117272021-12-02 19:59:44 -0800901 InvokeResponseIBs::Parser invokeResponsesParser;
yunhanw-google36e61e32021-11-02 08:31:34 -0700902 err = invokeResponsesParser.Init(aReader);
903 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
904
yunhanw-google751d0dd2022-11-16 19:09:58 -0800905#if CHIP_CONFIG_IM_PRETTY_PRINT
906 invokeResponsesParser.PrettyPrint();
yunhanw-google36e61e32021-11-02 08:31:34 -0700907#endif
908}
909
910void BuildInvokeRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
911{
912 CHIP_ERROR err = CHIP_NO_ERROR;
913 InvokeRequestMessage::Builder invokeRequestMessageBuilder;
914 err = invokeRequestMessageBuilder.Init(&aWriter);
915 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
916 invokeRequestMessageBuilder.SuppressResponse(true);
917 invokeRequestMessageBuilder.TimedRequest(true);
yunhanw-google299393b2021-12-06 09:59:34 -0800918 InvokeRequests::Builder & invokeRequestsBuilder = invokeRequestMessageBuilder.CreateInvokeRequests();
yunhanw-google36e61e32021-11-02 08:31:34 -0700919 NL_TEST_ASSERT(apSuite, invokeRequestsBuilder.GetError() == CHIP_NO_ERROR);
920
921 BuildInvokeRequests(apSuite, invokeRequestsBuilder);
922
923 invokeRequestMessageBuilder.EndOfInvokeRequestMessage();
924 NL_TEST_ASSERT(apSuite, invokeRequestMessageBuilder.GetError() == CHIP_NO_ERROR);
925}
926
927void ParseInvokeRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
928{
929 CHIP_ERROR err = CHIP_NO_ERROR;
930 InvokeRequestMessage::Parser invokeRequestMessageParser;
931 err = invokeRequestMessageParser.Init(aReader);
932 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
933
934 bool suppressResponse = false;
935 bool timedRequest = false;
936 invokeRequestMessageParser.GetSuppressResponse(&suppressResponse);
937 invokeRequestMessageParser.GetTimedRequest(&timedRequest);
938 NL_TEST_ASSERT(apSuite, suppressResponse == true);
939 NL_TEST_ASSERT(apSuite, timedRequest == true);
yunhanw-google751d0dd2022-11-16 19:09:58 -0800940#if CHIP_CONFIG_IM_PRETTY_PRINT
941 invokeRequestMessageParser.PrettyPrint();
yunhanw-google36e61e32021-11-02 08:31:34 -0700942#endif
yunhanw-google4394fcb2022-02-17 17:36:41 -0800943 NL_TEST_ASSERT(apSuite, invokeRequestMessageParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-google36e61e32021-11-02 08:31:34 -0700944}
945
946void BuildInvokeResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
947{
948 CHIP_ERROR err = CHIP_NO_ERROR;
949 InvokeResponseMessage::Builder invokeResponseMessageBuilder;
950 err = invokeResponseMessageBuilder.Init(&aWriter);
951
952 invokeResponseMessageBuilder.SuppressResponse(true);
yunhanw-google299393b2021-12-06 09:59:34 -0800953 InvokeResponseIBs::Builder & invokeResponsesBuilder = invokeResponseMessageBuilder.CreateInvokeResponses();
yunhanw-google36e61e32021-11-02 08:31:34 -0700954 NL_TEST_ASSERT(apSuite, invokeResponseMessageBuilder.GetError() == CHIP_NO_ERROR);
955
956 BuildInvokeResponses(apSuite, invokeResponsesBuilder);
957
958 invokeResponseMessageBuilder.EndOfInvokeResponseMessage();
959 NL_TEST_ASSERT(apSuite, invokeResponseMessageBuilder.GetError() == CHIP_NO_ERROR);
960}
961
962void ParseInvokeResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
963{
964 CHIP_ERROR err = CHIP_NO_ERROR;
965 InvokeResponseMessage::Parser invokeResponseMessageParser;
966 err = invokeResponseMessageParser.Init(aReader);
967 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
968
969 bool suppressResponse = false;
970 invokeResponseMessageParser.GetSuppressResponse(&suppressResponse);
971 NL_TEST_ASSERT(apSuite, suppressResponse == true);
yunhanw-google751d0dd2022-11-16 19:09:58 -0800972#if CHIP_CONFIG_IM_PRETTY_PRINT
973 invokeResponseMessageParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -0700974#endif
yunhanw-google4394fcb2022-02-17 17:36:41 -0800975 NL_TEST_ASSERT(apSuite, invokeResponseMessageParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800976}
977
yunhanw-google12ec7022021-11-01 19:53:29 -0700978void BuildReportDataMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800979{
980 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googleb717b362021-11-08 13:34:19 -0800981 ReportDataMessage::Builder reportDataMessageBuilder;
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800982
yunhanw-googleb717b362021-11-08 13:34:19 -0800983 err = reportDataMessageBuilder.Init(&aWriter);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800984 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
985
yunhanw-google51db97b2021-12-03 08:36:41 -0800986 reportDataMessageBuilder.SubscriptionId(2);
yunhanw-googleb717b362021-11-08 13:34:19 -0800987 NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800988
yunhanw-google299393b2021-12-06 09:59:34 -0800989 AttributeReportIBs::Builder & attributeReportIBs = reportDataMessageBuilder.CreateAttributeReportIBs();
yunhanw-googleb717b362021-11-08 13:34:19 -0800990 NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google299393b2021-12-06 09:59:34 -0800991 BuildAttributeReportIBs(apSuite, attributeReportIBs);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800992
yunhanw-google299393b2021-12-06 09:59:34 -0800993 EventReportIBs::Builder & eventReportIBs = reportDataMessageBuilder.CreateEventReports();
yunhanw-googleb717b362021-11-08 13:34:19 -0800994 NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google299393b2021-12-06 09:59:34 -0800995 BuildEventReports(apSuite, eventReportIBs);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800996
yunhanw-google51db97b2021-12-03 08:36:41 -0800997 reportDataMessageBuilder.MoreChunkedMessages(true).SuppressResponse(true);
yunhanw-googleb717b362021-11-08 13:34:19 -0800998 NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -0800999
yunhanw-googleb717b362021-11-08 13:34:19 -08001000 reportDataMessageBuilder.EndOfReportDataMessage();
1001 NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001002}
1003
yunhanw-google12ec7022021-11-01 19:53:29 -07001004void ParseReportDataMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001005{
1006 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google12ec7022021-11-01 19:53:29 -07001007 ReportDataMessage::Parser reportDataParser;
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001008
Song GUO6e224672022-05-14 05:58:58 +08001009 bool suppressResponse = false;
1010 chip::SubscriptionId subscriptionId = 0;
yunhanw-googleb717b362021-11-08 13:34:19 -08001011 AttributeReportIBs::Parser attributeReportIBsParser;
yunhanw-googlef1117272021-12-02 19:59:44 -08001012 EventReportIBs::Parser eventReportsParser;
yunhanw-googledf5569f2021-02-25 11:14:18 -08001013 bool moreChunkedMessages = false;
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001014 reportDataParser.Init(aReader);
1015
yunhanw-google751d0dd2022-11-16 19:09:58 -08001016#if CHIP_CONFIG_IM_PRETTY_PRINT
1017 reportDataParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -07001018#endif
yunhanw-googledf5569f2021-02-25 11:14:18 -08001019 err = reportDataParser.GetSuppressResponse(&suppressResponse);
1020 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && suppressResponse);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001021
1022 err = reportDataParser.GetSubscriptionId(&subscriptionId);
1023 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && subscriptionId == 2);
1024
yunhanw-googleb717b362021-11-08 13:34:19 -08001025 err = reportDataParser.GetAttributeReportIBs(&attributeReportIBsParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001026 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1027
yunhanw-googleb717b362021-11-08 13:34:19 -08001028 err = reportDataParser.GetEventReports(&eventReportsParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001029 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1030
yunhanw-googledf5569f2021-02-25 11:14:18 -08001031 err = reportDataParser.GetMoreChunkedMessages(&moreChunkedMessages);
1032 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && moreChunkedMessages);
yunhanw-google4394fcb2022-02-17 17:36:41 -08001033 NL_TEST_ASSERT(apSuite, reportDataParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001034}
1035
yunhanw-google12ec7022021-11-01 19:53:29 -07001036void BuildReadRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
yunhanw-google0c183552021-01-22 09:12:14 -08001037{
1038 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google12ec7022021-11-01 19:53:29 -07001039 ReadRequestMessage::Builder readRequestBuilder;
yunhanw-google0c183552021-01-22 09:12:14 -08001040
1041 err = readRequestBuilder.Init(&aWriter);
1042 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1043
yunhanw-google299393b2021-12-06 09:59:34 -08001044 AttributePathIBs::Builder & attributePathIBs = readRequestBuilder.CreateAttributeRequests();
yunhanw-google0c183552021-01-22 09:12:14 -08001045 NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google299393b2021-12-06 09:59:34 -08001046 BuildAttributePathList(apSuite, attributePathIBs);
yunhanw-google0c183552021-01-22 09:12:14 -08001047
yunhanw-google299393b2021-12-06 09:59:34 -08001048 EventPathIBs::Builder & eventPathList = readRequestBuilder.CreateEventRequests();
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001049
yunhanw-google0c183552021-01-22 09:12:14 -08001050 NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google2fe90242021-11-01 15:13:44 -07001051 BuildEventPaths(apSuite, eventPathList);
yunhanw-google0c183552021-01-22 09:12:14 -08001052
yunhanw-google299393b2021-12-06 09:59:34 -08001053 EventFilterIBs::Builder & eventFilters = readRequestBuilder.CreateEventFilters();
yunhanw-google0c183552021-01-22 09:12:14 -08001054 NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google494fb9b2021-11-17 12:01:02 -08001055 BuildEventFilters(apSuite, eventFilters);
yunhanw-google0c183552021-01-22 09:12:14 -08001056
yunhanw-google494fb9b2021-11-17 12:01:02 -08001057 readRequestBuilder.IsFabricFiltered(true);
yunhanw-google0c183552021-01-22 09:12:14 -08001058 NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
1059
yunhanw-google57a2df32022-04-14 11:04:47 -07001060 DataVersionFilterIBs::Builder & dataVersionFilters = readRequestBuilder.CreateDataVersionFilters();
1061 NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
1062 BuildDataVersionFilterIBs(apSuite, dataVersionFilters);
1063
yunhanw-google12ec7022021-11-01 19:53:29 -07001064 readRequestBuilder.EndOfReadRequestMessage();
yunhanw-google0c183552021-01-22 09:12:14 -08001065 NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
1066}
1067
yunhanw-google12ec7022021-11-01 19:53:29 -07001068void ParseReadRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-google0c183552021-01-22 09:12:14 -08001069{
1070 CHIP_ERROR err = CHIP_NO_ERROR;
1071
yunhanw-google12ec7022021-11-01 19:53:29 -07001072 ReadRequestMessage::Parser readRequestParser;
yunhanw-googleb717b362021-11-08 13:34:19 -08001073 AttributePathIBs::Parser attributePathListParser;
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001074 DataVersionFilterIBs::Parser dataVersionFilterIBsParser;
yunhanw-googlef1117272021-12-02 19:59:44 -08001075 EventPathIBs::Parser eventPathListParser;
1076 EventFilterIBs::Parser eventFiltersParser;
yunhanw-google494fb9b2021-11-17 12:01:02 -08001077 bool isFabricFiltered = false;
yunhanw-google0c183552021-01-22 09:12:14 -08001078
1079 err = readRequestParser.Init(aReader);
1080 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -08001081#if CHIP_CONFIG_IM_PRETTY_PRINT
1082 readRequestParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -07001083#endif
yunhanw-google494fb9b2021-11-17 12:01:02 -08001084 err = readRequestParser.GetAttributeRequests(&attributePathListParser);
yunhanw-google0c183552021-01-22 09:12:14 -08001085 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1086
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001087 err = readRequestParser.GetDataVersionFilters(&dataVersionFilterIBsParser);
1088 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1089
yunhanw-google494fb9b2021-11-17 12:01:02 -08001090 err = readRequestParser.GetEventRequests(&eventPathListParser);
yunhanw-google0c183552021-01-22 09:12:14 -08001091 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1092
yunhanw-google494fb9b2021-11-17 12:01:02 -08001093 err = readRequestParser.GetEventFilters(&eventFiltersParser);
yunhanw-google0c183552021-01-22 09:12:14 -08001094 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1095
yunhanw-google494fb9b2021-11-17 12:01:02 -08001096 err = readRequestParser.GetIsFabricFiltered(&isFabricFiltered);
1097 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && isFabricFiltered);
yunhanw-google4394fcb2022-02-17 17:36:41 -08001098 NL_TEST_ASSERT(apSuite, readRequestParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-google0c183552021-01-22 09:12:14 -08001099}
1100
yunhanw-google12ec7022021-11-01 19:53:29 -07001101void BuildWriteRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
yunhanw-googlee4c01152021-04-16 08:22:10 -07001102{
1103 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google12ec7022021-11-01 19:53:29 -07001104 WriteRequestMessage::Builder writeRequestBuilder;
yunhanw-googlee4c01152021-04-16 08:22:10 -07001105
1106 err = writeRequestBuilder.Init(&aWriter);
1107 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1108
1109 writeRequestBuilder.SuppressResponse(true);
1110 NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
1111
yunhanw-google494fb9b2021-11-17 12:01:02 -08001112 writeRequestBuilder.TimedRequest(true);
1113 NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
1114
yunhanw-google299393b2021-12-06 09:59:34 -08001115 AttributeDataIBs::Builder & attributeDataIBs = writeRequestBuilder.CreateWriteRequests();
yunhanw-googlee4c01152021-04-16 08:22:10 -07001116 NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google299393b2021-12-06 09:59:34 -08001117 BuildAttributeDataIBs(apSuite, attributeDataIBs);
yunhanw-googlee4c01152021-04-16 08:22:10 -07001118
yunhanw-googlee4c01152021-04-16 08:22:10 -07001119 writeRequestBuilder.MoreChunkedMessages(true);
1120 NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
1121
yunhanw-google12ec7022021-11-01 19:53:29 -07001122 writeRequestBuilder.EndOfWriteRequestMessage();
yunhanw-googlee4c01152021-04-16 08:22:10 -07001123 NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
1124}
1125
yunhanw-google12ec7022021-11-01 19:53:29 -07001126void ParseWriteRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlee4c01152021-04-16 08:22:10 -07001127{
1128 CHIP_ERROR err = CHIP_NO_ERROR;
1129
yunhanw-google12ec7022021-11-01 19:53:29 -07001130 WriteRequestMessage::Parser writeRequestParser;
yunhanw-googlee4c01152021-04-16 08:22:10 -07001131 bool suppressResponse = false;
yunhanw-google494fb9b2021-11-17 12:01:02 -08001132 bool timeRequest = false;
1133 AttributeDataIBs::Parser writeRequests;
yunhanw-googlee4c01152021-04-16 08:22:10 -07001134 bool moreChunkedMessages = false;
1135
1136 err = writeRequestParser.Init(aReader);
1137 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -08001138#if CHIP_CONFIG_IM_PRETTY_PRINT
1139 writeRequestParser.PrettyPrint();
yunhanw-googlee4c01152021-04-16 08:22:10 -07001140#endif
1141 err = writeRequestParser.GetSuppressResponse(&suppressResponse);
1142 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && suppressResponse);
1143
yunhanw-google494fb9b2021-11-17 12:01:02 -08001144 err = writeRequestParser.GetTimedRequest(&timeRequest);
1145 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && timeRequest);
yunhanw-googlee4c01152021-04-16 08:22:10 -07001146
yunhanw-google494fb9b2021-11-17 12:01:02 -08001147 err = writeRequestParser.GetWriteRequests(&writeRequests);
yunhanw-googlee4c01152021-04-16 08:22:10 -07001148 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1149
1150 err = writeRequestParser.GetMoreChunkedMessages(&moreChunkedMessages);
1151 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && moreChunkedMessages);
1152}
1153
yunhanw-google12ec7022021-11-01 19:53:29 -07001154void BuildWriteResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
yunhanw-googlee4c01152021-04-16 08:22:10 -07001155{
1156 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google12ec7022021-11-01 19:53:29 -07001157 WriteResponseMessage::Builder writeResponseBuilder;
yunhanw-googlee4c01152021-04-16 08:22:10 -07001158
1159 err = writeResponseBuilder.Init(&aWriter);
1160 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1161
yunhanw-google299393b2021-12-06 09:59:34 -08001162 AttributeStatusIBs::Builder & attributeStatuses = writeResponseBuilder.CreateWriteResponses();
yunhanw-googlee4c01152021-04-16 08:22:10 -07001163 NL_TEST_ASSERT(apSuite, writeResponseBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google64ffda02021-11-04 18:05:36 -07001164 BuildAttributeStatuses(apSuite, attributeStatuses);
yunhanw-googlee4c01152021-04-16 08:22:10 -07001165
yunhanw-google12ec7022021-11-01 19:53:29 -07001166 writeResponseBuilder.EndOfWriteResponseMessage();
yunhanw-googlee4c01152021-04-16 08:22:10 -07001167 NL_TEST_ASSERT(apSuite, writeResponseBuilder.GetError() == CHIP_NO_ERROR);
1168}
1169
yunhanw-google12ec7022021-11-01 19:53:29 -07001170void ParseWriteResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlee4c01152021-04-16 08:22:10 -07001171{
1172 CHIP_ERROR err = CHIP_NO_ERROR;
1173
yunhanw-google12ec7022021-11-01 19:53:29 -07001174 WriteResponseMessage::Parser writeResponseParser;
yunhanw-googlef1117272021-12-02 19:59:44 -08001175 AttributeStatusIBs::Parser attributeStatusesParser;
yunhanw-googlee4c01152021-04-16 08:22:10 -07001176 err = writeResponseParser.Init(aReader);
1177 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -08001178#if CHIP_CONFIG_IM_PRETTY_PRINT
1179 writeResponseParser.PrettyPrint();
yunhanw-googlee4c01152021-04-16 08:22:10 -07001180#endif
yunhanw-google64ffda02021-11-04 18:05:36 -07001181 err = writeResponseParser.GetWriteResponses(&attributeStatusesParser);
yunhanw-googlee4c01152021-04-16 08:22:10 -07001182 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google4394fcb2022-02-17 17:36:41 -08001183 NL_TEST_ASSERT(apSuite, writeResponseParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-googlee4c01152021-04-16 08:22:10 -07001184}
1185
yunhanw-google12ec7022021-11-01 19:53:29 -07001186void BuildSubscribeRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
yunhanw-googlefb773e82021-07-09 13:52:37 -07001187{
1188 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google12ec7022021-11-01 19:53:29 -07001189 SubscribeRequestMessage::Builder subscribeRequestBuilder;
yunhanw-googlefb773e82021-07-09 13:52:37 -07001190
1191 err = subscribeRequestBuilder.Init(&aWriter);
1192 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1193
yunhanw-google51db97b2021-12-03 08:36:41 -08001194 subscribeRequestBuilder.KeepSubscriptions(true);
1195 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
1196
1197 subscribeRequestBuilder.MinIntervalFloorSeconds(2);
1198 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
1199
1200 subscribeRequestBuilder.MaxIntervalCeilingSeconds(3);
1201 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
1202
yunhanw-google299393b2021-12-06 09:59:34 -08001203 AttributePathIBs::Builder & attributePathIBs = subscribeRequestBuilder.CreateAttributeRequests();
yunhanw-googlefb773e82021-07-09 13:52:37 -07001204 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google494fb9b2021-11-17 12:01:02 -08001205 BuildAttributePathList(apSuite, attributePathIBs);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001206
yunhanw-google299393b2021-12-06 09:59:34 -08001207 EventPathIBs::Builder & eventPathList = subscribeRequestBuilder.CreateEventRequests();
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001208
yunhanw-googlefb773e82021-07-09 13:52:37 -07001209 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google2fe90242021-11-01 15:13:44 -07001210 BuildEventPaths(apSuite, eventPathList);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001211
yunhanw-google299393b2021-12-06 09:59:34 -08001212 EventFilterIBs::Builder & eventFilters = subscribeRequestBuilder.CreateEventFilters();
yunhanw-googlefb773e82021-07-09 13:52:37 -07001213 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google494fb9b2021-11-17 12:01:02 -08001214 BuildEventFilters(apSuite, eventFilters);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001215
yunhanw-google494fb9b2021-11-17 12:01:02 -08001216 subscribeRequestBuilder.IsFabricFiltered(true);
1217 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
1218
yunhanw-google57a2df32022-04-14 11:04:47 -07001219 DataVersionFilterIBs::Builder & dataVersionFilters = subscribeRequestBuilder.CreateDataVersionFilters();
1220 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
1221 BuildDataVersionFilterIBs(apSuite, dataVersionFilters);
1222
yunhanw-google12ec7022021-11-01 19:53:29 -07001223 subscribeRequestBuilder.EndOfSubscribeRequestMessage();
yunhanw-googlefb773e82021-07-09 13:52:37 -07001224 NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
1225}
1226
yunhanw-google12ec7022021-11-01 19:53:29 -07001227void ParseSubscribeRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlefb773e82021-07-09 13:52:37 -07001228{
1229 CHIP_ERROR err = CHIP_NO_ERROR;
1230
yunhanw-google12ec7022021-11-01 19:53:29 -07001231 SubscribeRequestMessage::Parser subscribeRequestParser;
yunhanw-googleb717b362021-11-08 13:34:19 -08001232 AttributePathIBs::Parser attributePathListParser;
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001233 DataVersionFilterIBs::Parser dataVersionFilterIBsParser;
yunhanw-googlef1117272021-12-02 19:59:44 -08001234 EventPathIBs::Parser eventPathListParser;
1235 EventFilterIBs::Parser eventFiltersParser;
yunhanw-google8066e352022-06-10 21:14:58 -07001236 uint16_t minIntervalFloorSeconds = 0;
1237 uint16_t maxIntervalCeilingSeconds = 0;
yunhanw-google494fb9b2021-11-17 12:01:02 -08001238 bool keepExistingSubscription = false;
yunhanw-google494fb9b2021-11-17 12:01:02 -08001239 bool isFabricFiltered = false;
yunhanw-googlefb773e82021-07-09 13:52:37 -07001240
1241 err = subscribeRequestParser.Init(aReader);
1242 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -08001243#if CHIP_CONFIG_IM_PRETTY_PRINT
1244 subscribeRequestParser.PrettyPrint();
yunhanw-googlefb773e82021-07-09 13:52:37 -07001245#endif
yunhanw-google494fb9b2021-11-17 12:01:02 -08001246 err = subscribeRequestParser.GetAttributeRequests(&attributePathListParser);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001247 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1248
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001249 err = subscribeRequestParser.GetDataVersionFilters(&dataVersionFilterIBsParser);
1250 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1251
yunhanw-google494fb9b2021-11-17 12:01:02 -08001252 err = subscribeRequestParser.GetEventRequests(&eventPathListParser);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001253 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1254
yunhanw-google494fb9b2021-11-17 12:01:02 -08001255 err = subscribeRequestParser.GetEventFilters(&eventFiltersParser);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001256 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1257
yunhanw-google8066e352022-06-10 21:14:58 -07001258 err = subscribeRequestParser.GetMinIntervalFloorSeconds(&minIntervalFloorSeconds);
1259 NL_TEST_ASSERT(apSuite, minIntervalFloorSeconds == 2 && err == CHIP_NO_ERROR);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001260
yunhanw-google8066e352022-06-10 21:14:58 -07001261 err = subscribeRequestParser.GetMaxIntervalCeilingSeconds(&maxIntervalCeilingSeconds);
1262 NL_TEST_ASSERT(apSuite, maxIntervalCeilingSeconds == 3 && err == CHIP_NO_ERROR);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001263
yunhanw-google6a9cd5f2021-10-12 17:44:25 -07001264 err = subscribeRequestParser.GetKeepSubscriptions(&keepExistingSubscription);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001265 NL_TEST_ASSERT(apSuite, keepExistingSubscription && err == CHIP_NO_ERROR);
1266
yunhanw-google494fb9b2021-11-17 12:01:02 -08001267 err = subscribeRequestParser.GetIsFabricFiltered(&isFabricFiltered);
1268 NL_TEST_ASSERT(apSuite, isFabricFiltered && err == CHIP_NO_ERROR);
yunhanw-google4394fcb2022-02-17 17:36:41 -08001269 NL_TEST_ASSERT(apSuite, subscribeRequestParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001270}
1271
yunhanw-google12ec7022021-11-01 19:53:29 -07001272void BuildSubscribeResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
yunhanw-googlefb773e82021-07-09 13:52:37 -07001273{
1274 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google12ec7022021-11-01 19:53:29 -07001275 SubscribeResponseMessage::Builder subscribeResponseBuilder;
yunhanw-googlefb773e82021-07-09 13:52:37 -07001276
1277 err = subscribeResponseBuilder.Init(&aWriter);
1278 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1279
1280 subscribeResponseBuilder.SubscriptionId(1);
1281 NL_TEST_ASSERT(apSuite, subscribeResponseBuilder.GetError() == CHIP_NO_ERROR);
1282
yunhanw-google8066e352022-06-10 21:14:58 -07001283 subscribeResponseBuilder.MaxInterval(2);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001284 NL_TEST_ASSERT(apSuite, subscribeResponseBuilder.GetError() == CHIP_NO_ERROR);
1285
yunhanw-google12ec7022021-11-01 19:53:29 -07001286 subscribeResponseBuilder.EndOfSubscribeResponseMessage();
yunhanw-googlefb773e82021-07-09 13:52:37 -07001287 NL_TEST_ASSERT(apSuite, subscribeResponseBuilder.GetError() == CHIP_NO_ERROR);
1288}
1289
yunhanw-google12ec7022021-11-01 19:53:29 -07001290void ParseSubscribeResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-googlefb773e82021-07-09 13:52:37 -07001291{
1292 CHIP_ERROR err = CHIP_NO_ERROR;
1293
yunhanw-google12ec7022021-11-01 19:53:29 -07001294 SubscribeResponseMessage::Parser subscribeResponseParser;
Song GUO6e224672022-05-14 05:58:58 +08001295 chip::SubscriptionId subscriptionId = 0;
yunhanw-google8066e352022-06-10 21:14:58 -07001296 uint16_t maxInterval = 0;
Song GUO6e224672022-05-14 05:58:58 +08001297 err = subscribeResponseParser.Init(aReader);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001298 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -08001299#if CHIP_CONFIG_IM_PRETTY_PRINT
1300 subscribeResponseParser.PrettyPrint();
yunhanw-googlefb773e82021-07-09 13:52:37 -07001301#endif
1302 err = subscribeResponseParser.GetSubscriptionId(&subscriptionId);
1303 NL_TEST_ASSERT(apSuite, subscriptionId == 1 && err == CHIP_NO_ERROR);
1304
yunhanw-google8066e352022-06-10 21:14:58 -07001305 err = subscribeResponseParser.GetMaxInterval(&maxInterval);
1306 NL_TEST_ASSERT(apSuite, maxInterval == 2 && err == CHIP_NO_ERROR);
yunhanw-google4394fcb2022-02-17 17:36:41 -08001307
1308 NL_TEST_ASSERT(apSuite, subscribeResponseParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-googlefb773e82021-07-09 13:52:37 -07001309}
1310
yunhanw-google7f05fb62021-10-29 06:55:58 -07001311void BuildTimedRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVWriter & aWriter)
yunhanw-google8be85452021-07-12 07:20:09 -07001312{
1313 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google7f05fb62021-10-29 06:55:58 -07001314 TimedRequestMessage::Builder TimedRequestMessageBuilder;
yunhanw-google8be85452021-07-12 07:20:09 -07001315
yunhanw-google7f05fb62021-10-29 06:55:58 -07001316 err = TimedRequestMessageBuilder.Init(&aWriter);
yunhanw-google8be85452021-07-12 07:20:09 -07001317 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1318
yunhanw-google7f05fb62021-10-29 06:55:58 -07001319 TimedRequestMessageBuilder.TimeoutMs(1);
1320 NL_TEST_ASSERT(apSuite, TimedRequestMessageBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google8be85452021-07-12 07:20:09 -07001321}
1322
yunhanw-google7f05fb62021-10-29 06:55:58 -07001323void ParseTimedRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
yunhanw-google8be85452021-07-12 07:20:09 -07001324{
1325 CHIP_ERROR err = CHIP_NO_ERROR;
1326
yunhanw-google4394fcb2022-02-17 17:36:41 -08001327 TimedRequestMessage::Parser timedRequestMessageParser;
yunhanw-google8be85452021-07-12 07:20:09 -07001328 uint16_t timeout = 0;
1329
yunhanw-google4394fcb2022-02-17 17:36:41 -08001330 err = timedRequestMessageParser.Init(aReader);
yunhanw-google8be85452021-07-12 07:20:09 -07001331 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google751d0dd2022-11-16 19:09:58 -08001332#if CHIP_CONFIG_IM_PRETTY_PRINT
1333 timedRequestMessageParser.PrettyPrint();
yunhanw-google8be85452021-07-12 07:20:09 -07001334#endif
yunhanw-google4394fcb2022-02-17 17:36:41 -08001335 err = timedRequestMessageParser.GetTimeoutMs(&timeout);
yunhanw-google8be85452021-07-12 07:20:09 -07001336 NL_TEST_ASSERT(apSuite, timeout == 1 && err == CHIP_NO_ERROR);
yunhanw-google4394fcb2022-02-17 17:36:41 -08001337
1338 NL_TEST_ASSERT(apSuite, timedRequestMessageParser.ExitContainer() == CHIP_NO_ERROR);
yunhanw-google8be85452021-07-12 07:20:09 -07001339}
1340
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001341void DataVersionFilterIBTest(nlTestSuite * apSuite, void * apContext)
1342{
1343 CHIP_ERROR err = CHIP_NO_ERROR;
1344 DataVersionFilterIB::Builder dataVersionFilterIBBuilder;
1345 chip::System::PacketBufferTLVWriter writer;
1346 chip::System::PacketBufferTLVReader reader;
1347 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1348 dataVersionFilterIBBuilder.Init(&writer);
1349 BuildDataVersionFilterIB(apSuite, dataVersionFilterIBBuilder);
1350 chip::System::PacketBufferHandle buf;
1351 err = writer.Finalize(&buf);
1352 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1353
1354 DebugPrettyPrint(buf);
1355
1356 reader.Init(std::move(buf));
1357 err = reader.Next();
1358 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1359 ParseDataVersionFilterIB(apSuite, reader);
1360}
1361
1362void DataVersionFilterIBsTest(nlTestSuite * apSuite, void * apContext)
1363{
1364 CHIP_ERROR err = CHIP_NO_ERROR;
1365 chip::System::PacketBufferTLVWriter writer;
1366 chip::System::PacketBufferTLVReader reader;
1367 DataVersionFilterIBs::Builder dataVersionFilterIBsBuilder;
1368 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1369
1370 err = dataVersionFilterIBsBuilder.Init(&writer);
1371 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1372
1373 BuildDataVersionFilterIBs(apSuite, dataVersionFilterIBsBuilder);
1374 chip::System::PacketBufferHandle buf;
1375 err = writer.Finalize(&buf);
1376 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1377
1378 DebugPrettyPrint(buf);
1379
1380 reader.Init(std::move(buf));
1381 err = reader.Next();
1382 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1383 ParseDataVersionFilterIBs(apSuite, reader);
1384}
1385
yunhanw-googlebf585f82021-10-29 19:20:07 -07001386void EventFilterTest(nlTestSuite * apSuite, void * apContext)
1387{
1388 CHIP_ERROR err = CHIP_NO_ERROR;
1389 EventFilterIB::Builder eventFilterBuilder;
1390 chip::System::PacketBufferTLVWriter writer;
1391 chip::System::PacketBufferTLVReader reader;
1392 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1393 eventFilterBuilder.Init(&writer);
1394 BuildEventFilterIB(apSuite, eventFilterBuilder);
1395 chip::System::PacketBufferHandle buf;
1396 err = writer.Finalize(&buf);
1397 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1398
1399 DebugPrettyPrint(buf);
1400
1401 reader.Init(std::move(buf));
1402 err = reader.Next();
1403 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googlebf585f82021-10-29 19:20:07 -07001404 ParseEventFilterIB(apSuite, reader);
1405}
1406
1407void EventFiltersTest(nlTestSuite * apSuite, void * apContext)
1408{
1409 CHIP_ERROR err = CHIP_NO_ERROR;
1410 chip::System::PacketBufferTLVWriter writer;
1411 chip::System::PacketBufferTLVReader reader;
yunhanw-googlef1117272021-12-02 19:59:44 -08001412 EventFilterIBs::Builder eventFiltersBuilder;
1413 EventFilterIBs::Parser eventFiltersParser;
yunhanw-googlebf585f82021-10-29 19:20:07 -07001414 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1415
1416 err = eventFiltersBuilder.Init(&writer);
1417 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1418
1419 BuildEventFilters(apSuite, eventFiltersBuilder);
1420 chip::System::PacketBufferHandle buf;
1421 err = writer.Finalize(&buf);
1422 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1423
1424 DebugPrettyPrint(buf);
1425
1426 reader.Init(std::move(buf));
1427 err = reader.Next();
1428 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1429 ParseEventFilters(apSuite, reader);
1430}
1431
yunhanw-googlea1cb3412021-12-06 13:32:40 -08001432void ClusterPathIBTest(nlTestSuite * apSuite, void * apContext)
1433{
1434 CHIP_ERROR err = CHIP_NO_ERROR;
1435 ClusterPathIB::Builder clusterPathBuilder;
1436 chip::System::PacketBufferTLVWriter writer;
1437 chip::System::PacketBufferTLVReader reader;
1438 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1439 clusterPathBuilder.Init(&writer);
1440 BuildClusterPathIB(apSuite, clusterPathBuilder);
1441 chip::System::PacketBufferHandle buf;
1442 err = writer.Finalize(&buf);
1443 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1444
1445 DebugPrettyPrint(buf);
1446
1447 reader.Init(std::move(buf));
1448 err = reader.Next();
1449 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1450
1451 ParseClusterPathIB(apSuite, reader);
1452}
1453
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001454void AttributePathTest(nlTestSuite * apSuite, void * apContext)
1455{
1456 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google64ffda02021-11-04 18:05:36 -07001457 AttributePathIB::Builder attributePathBuilder;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001458 chip::System::PacketBufferTLVWriter writer;
1459 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001460 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001461 attributePathBuilder.Init(&writer);
yunhanw-google64ffda02021-11-04 18:05:36 -07001462 BuildAttributePathIB(apSuite, attributePathBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001463 chip::System::PacketBufferHandle buf;
1464 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001465 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1466
1467 DebugPrettyPrint(buf);
1468
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001469 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001470 err = reader.Next();
1471 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1472
yunhanw-google64ffda02021-11-04 18:05:36 -07001473 ParseAttributePathIB(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001474}
1475
1476void AttributePathListTest(nlTestSuite * apSuite, void * apContext)
1477{
1478 CHIP_ERROR err = CHIP_NO_ERROR;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001479 chip::System::PacketBufferTLVWriter writer;
1480 chip::System::PacketBufferTLVReader reader;
yunhanw-googleb717b362021-11-08 13:34:19 -08001481 AttributePathIBs::Builder attributePathListBuilder;
yunhanw-google0c183552021-01-22 09:12:14 -08001482
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001483 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google0c183552021-01-22 09:12:14 -08001484
1485 err = attributePathListBuilder.Init(&writer);
1486 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1487
1488 BuildAttributePathList(apSuite, attributePathListBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001489 chip::System::PacketBufferHandle buf;
1490 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001491 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1492
1493 DebugPrettyPrint(buf);
1494
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001495 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001496 err = reader.Next();
1497 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1498 ParseAttributePathList(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001499}
1500
1501void EventPathTest(nlTestSuite * apSuite, void * apContext)
1502{
1503 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google2fe90242021-11-01 15:13:44 -07001504 EventPathIB::Parser eventPathParser;
1505 EventPathIB::Builder eventPathBuilder;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001506 chip::System::PacketBufferTLVWriter writer;
1507 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001508 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001509 eventPathBuilder.Init(&writer);
1510 BuildEventPath(apSuite, eventPathBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001511 chip::System::PacketBufferHandle buf;
1512 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001513 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1514
1515 DebugPrettyPrint(buf);
1516
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001517 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001518 err = reader.Next();
1519 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1520
1521 eventPathParser.Init(reader);
1522 ParseEventPath(apSuite, eventPathParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001523}
1524
yunhanw-google2fe90242021-11-01 15:13:44 -07001525void EventPathsTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001526{
1527 CHIP_ERROR err = CHIP_NO_ERROR;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001528 chip::System::PacketBufferTLVWriter writer;
1529 chip::System::PacketBufferTLVReader reader;
yunhanw-googlef1117272021-12-02 19:59:44 -08001530 EventPathIBs::Builder eventPathListBuilder;
yunhanw-google0c183552021-01-22 09:12:14 -08001531
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001532 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google0c183552021-01-22 09:12:14 -08001533
1534 err = eventPathListBuilder.Init(&writer);
1535 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1536
yunhanw-google2fe90242021-11-01 15:13:44 -07001537 BuildEventPaths(apSuite, eventPathListBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001538 chip::System::PacketBufferHandle buf;
1539 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001540 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1541
1542 DebugPrettyPrint(buf);
1543
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001544 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001545 err = reader.Next();
1546 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google2fe90242021-11-01 15:13:44 -07001547 ParseEventPaths(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001548}
1549
yunhanw-google36e61e32021-11-02 08:31:34 -07001550void CommandPathIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001551{
1552 CHIP_ERROR err = CHIP_NO_ERROR;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001553 chip::System::PacketBufferTLVWriter writer;
1554 chip::System::PacketBufferTLVReader reader;
yunhanw-google8c2638c2021-10-20 16:33:42 -07001555 CommandPathIB::Builder commandPathBuilder;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001556 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001557 err = commandPathBuilder.Init(&writer);
1558 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1559
1560 BuildCommandPath(apSuite, commandPathBuilder);
1561
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001562 chip::System::PacketBufferHandle buf;
1563 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001564 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1565
1566 DebugPrettyPrint(buf);
1567
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001568 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001569 err = reader.Next();
1570 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1571
1572 ParseCommandPath(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001573}
1574
yunhanw-google3bec0f92021-11-03 16:12:39 -07001575void EventDataIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001576{
1577 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google3bec0f92021-11-03 16:12:39 -07001578 EventDataIB::Builder eventDataIBBuilder;
1579 EventDataIB::Parser eventDataIBParser;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001580 chip::System::PacketBufferTLVWriter writer;
1581 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001582 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google3bec0f92021-11-03 16:12:39 -07001583 eventDataIBBuilder.Init(&writer);
1584 BuildEventDataIB(apSuite, eventDataIBBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001585 chip::System::PacketBufferHandle buf;
1586 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001587 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1588
1589 DebugPrettyPrint(buf);
1590
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001591 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001592 err = reader.Next();
1593 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1594
yunhanw-google3bec0f92021-11-03 16:12:39 -07001595 eventDataIBParser.Init(reader);
1596 ParseEventDataIB(apSuite, eventDataIBParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001597}
1598
yunhanw-google3bec0f92021-11-03 16:12:39 -07001599void EventReportIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001600{
1601 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google3bec0f92021-11-03 16:12:39 -07001602 EventReportIB::Builder eventReportIBBuilder;
1603 EventReportIB::Parser eventReportIBParser;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001604 chip::System::PacketBufferTLVWriter writer;
1605 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001606 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google3bec0f92021-11-03 16:12:39 -07001607 eventReportIBBuilder.Init(&writer);
1608 BuildEventReportIB(apSuite, eventReportIBBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001609 chip::System::PacketBufferHandle buf;
1610 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001611 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1612
1613 DebugPrettyPrint(buf);
1614
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001615 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001616 err = reader.Next();
1617 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google3bec0f92021-11-03 16:12:39 -07001618
1619 eventReportIBParser.Init(reader);
1620 ParseEventReportIB(apSuite, eventReportIBParser);
1621}
1622
1623void EventReportsTest(nlTestSuite * apSuite, void * apContext)
1624{
1625 CHIP_ERROR err = CHIP_NO_ERROR;
1626 chip::System::PacketBufferTLVWriter writer;
1627 chip::System::PacketBufferTLVReader reader;
yunhanw-googlef1117272021-12-02 19:59:44 -08001628 EventReportIBs::Builder eventReportsBuilder;
yunhanw-google3bec0f92021-11-03 16:12:39 -07001629 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1630 eventReportsBuilder.Init(&writer);
1631 BuildEventReports(apSuite, eventReportsBuilder);
1632 chip::System::PacketBufferHandle buf;
1633 err = writer.Finalize(&buf);
1634 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1635
1636 DebugPrettyPrint(buf);
1637
1638 reader.Init(std::move(buf));
1639 err = reader.Next();
1640 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1641 ParseEventReports(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001642}
1643
yunhanw-google588d4c92022-05-11 23:50:15 -07001644void EmptyEventReportsTest(nlTestSuite * apSuite, void * apContext)
1645{
1646 CHIP_ERROR err = CHIP_NO_ERROR;
1647 chip::System::PacketBufferTLVWriter writer;
1648 chip::System::PacketBufferTLVReader reader;
1649 EventReportIBs::Builder eventReportsBuilder;
1650 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1651 eventReportsBuilder.Init(&writer);
1652 eventReportsBuilder.EndOfEventReports();
1653 NL_TEST_ASSERT(apSuite, eventReportsBuilder.GetError() == CHIP_NO_ERROR);
1654 chip::System::PacketBufferHandle buf;
1655 err = writer.Finalize(&buf);
1656 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1657
1658 DebugPrettyPrint(buf);
1659
1660 reader.Init(std::move(buf));
1661 err = reader.Next();
1662 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1663 ParseEventReports(apSuite, reader);
1664}
1665
yunhanw-googleb717b362021-11-08 13:34:19 -08001666void AttributeReportIBTest(nlTestSuite * apSuite, void * apContext)
1667{
1668 CHIP_ERROR err = CHIP_NO_ERROR;
1669 AttributeReportIB::Builder attributeReportIBBuilder;
1670 AttributeReportIB::Parser attributeReportIBParser;
1671 chip::System::PacketBufferTLVWriter writer;
1672 chip::System::PacketBufferTLVReader reader;
1673 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1674 attributeReportIBBuilder.Init(&writer);
1675 BuildAttributeReportIB(apSuite, attributeReportIBBuilder);
1676 chip::System::PacketBufferHandle buf;
1677 err = writer.Finalize(&buf);
1678 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1679
1680 DebugPrettyPrint(buf);
1681
1682 reader.Init(std::move(buf));
1683 err = reader.Next();
1684 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1685
1686 attributeReportIBParser.Init(reader);
1687 ParseAttributeReportIB(apSuite, attributeReportIBParser);
1688}
1689
1690void AttributeReportIBsTest(nlTestSuite * apSuite, void * apContext)
1691{
1692 CHIP_ERROR err = CHIP_NO_ERROR;
1693 chip::System::PacketBufferTLVWriter writer;
1694 chip::System::PacketBufferTLVReader reader;
1695 AttributeReportIBs::Builder attributeReportIBsBuilder;
1696 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1697 attributeReportIBsBuilder.Init(&writer);
1698 BuildAttributeReportIBs(apSuite, attributeReportIBsBuilder);
1699 chip::System::PacketBufferHandle buf;
1700 err = writer.Finalize(&buf);
1701 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1702
1703 DebugPrettyPrint(buf);
1704
1705 reader.Init(std::move(buf));
1706 err = reader.Next();
1707 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1708 ParseAttributeReportIBs(apSuite, reader);
1709}
1710
yunhanw-google588d4c92022-05-11 23:50:15 -07001711void EmptyAttributeReportIBsTest(nlTestSuite * apSuite, void * apContext)
1712{
1713 CHIP_ERROR err = CHIP_NO_ERROR;
1714 chip::System::PacketBufferTLVWriter writer;
1715 chip::System::PacketBufferTLVReader reader;
1716 AttributeReportIBs::Builder attributeReportIBsBuilder;
1717 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1718 attributeReportIBsBuilder.Init(&writer);
1719 attributeReportIBsBuilder.EndOfAttributeReportIBs();
1720 NL_TEST_ASSERT(apSuite, attributeReportIBsBuilder.GetError() == CHIP_NO_ERROR);
1721 chip::System::PacketBufferHandle buf;
1722 err = writer.Finalize(&buf);
1723 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1724
1725 DebugPrettyPrint(buf);
1726
1727 reader.Init(std::move(buf));
1728 err = reader.Next();
1729 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1730 ParseAttributeReportIBs(apSuite, reader);
1731}
1732
yunhanw-google35e67172021-10-11 17:12:06 -07001733void StatusIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001734{
1735 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google35e67172021-10-11 17:12:06 -07001736 StatusIB::Builder statusIBBuilder;
1737 StatusIB::Parser StatusIBParser;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001738 chip::System::PacketBufferTLVWriter writer;
1739 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001740 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google35e67172021-10-11 17:12:06 -07001741 statusIBBuilder.Init(&writer);
1742 BuildStatusIB(apSuite, statusIBBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001743 chip::System::PacketBufferHandle buf;
1744 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001745 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1746
1747 DebugPrettyPrint(buf);
1748
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001749 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001750 err = reader.Next();
1751 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1752
yunhanw-google35e67172021-10-11 17:12:06 -07001753 StatusIBParser.Init(reader);
1754 ParseStatusIB(apSuite, StatusIBParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001755}
1756
yunhanw-google1f6c6e62021-11-02 10:09:53 -07001757void EventStatusIBTest(nlTestSuite * apSuite, void * apContext)
1758{
1759 CHIP_ERROR err = CHIP_NO_ERROR;
1760 EventStatusIB::Builder eventStatusIBBuilder;
1761 EventStatusIB::Parser eventStatusIBParser;
1762 chip::System::PacketBufferTLVWriter writer;
1763 chip::System::PacketBufferTLVReader reader;
1764 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1765 eventStatusIBBuilder.Init(&writer);
1766 BuildEventStatusIB(apSuite, eventStatusIBBuilder);
1767 chip::System::PacketBufferHandle buf;
1768 err = writer.Finalize(&buf);
1769 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1770
1771 DebugPrettyPrint(buf);
1772
1773 reader.Init(std::move(buf));
1774 err = reader.Next();
1775 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1776
1777 eventStatusIBParser.Init(reader);
1778 ParseEventStatusIB(apSuite, eventStatusIBParser);
1779}
1780
yunhanw-google35e67172021-10-11 17:12:06 -07001781void AttributeStatusIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001782{
1783 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google35e67172021-10-11 17:12:06 -07001784 AttributeStatusIB::Builder attributeStatusIBBuilder;
1785 AttributeStatusIB::Parser attributeStatusIBParser;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001786 chip::System::PacketBufferTLVWriter writer;
1787 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001788 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google35e67172021-10-11 17:12:06 -07001789 attributeStatusIBBuilder.Init(&writer);
1790 BuildAttributeStatusIB(apSuite, attributeStatusIBBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001791 chip::System::PacketBufferHandle buf;
1792 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001793 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1794
1795 DebugPrettyPrint(buf);
1796
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001797 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001798 err = reader.Next();
1799 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1800
yunhanw-google35e67172021-10-11 17:12:06 -07001801 attributeStatusIBParser.Init(reader);
1802 ParseAttributeStatusIB(apSuite, attributeStatusIBParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001803}
1804
yunhanw-google64ffda02021-11-04 18:05:36 -07001805void AttributeStatusesTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001806{
1807 CHIP_ERROR err = CHIP_NO_ERROR;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001808 chip::System::PacketBufferTLVWriter writer;
1809 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001810 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-googlef1117272021-12-02 19:59:44 -08001811 AttributeStatusIBs::Builder attributeStatusesBuilder;
yunhanw-google64ffda02021-11-04 18:05:36 -07001812 err = attributeStatusesBuilder.Init(&writer);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001813 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google64ffda02021-11-04 18:05:36 -07001814 BuildAttributeStatuses(apSuite, attributeStatusesBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001815 chip::System::PacketBufferHandle buf;
1816 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001817 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1818
1819 DebugPrettyPrint(buf);
1820
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001821 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001822 err = reader.Next();
1823 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google64ffda02021-11-04 18:05:36 -07001824 ParseAttributeStatuses(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001825}
1826
yunhanw-googleb717b362021-11-08 13:34:19 -08001827void AttributeDataIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001828{
1829 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-googleb717b362021-11-08 13:34:19 -08001830 AttributeDataIB::Builder AttributeDataIBBuilder;
1831 AttributeDataIB::Parser AttributeDataIBParser;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001832 chip::System::PacketBufferTLVWriter writer;
1833 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001834 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-googleb717b362021-11-08 13:34:19 -08001835 AttributeDataIBBuilder.Init(&writer);
1836 BuildAttributeDataIB(apSuite, AttributeDataIBBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001837 chip::System::PacketBufferHandle buf;
1838 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001839 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1840
1841 DebugPrettyPrint(buf);
1842
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001843 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001844 err = reader.Next();
1845 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1846
yunhanw-googleb717b362021-11-08 13:34:19 -08001847 AttributeDataIBParser.Init(reader);
1848 ParseAttributeDataIB(apSuite, AttributeDataIBParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001849}
1850
yunhanw-googleb717b362021-11-08 13:34:19 -08001851void AttributeDataIBsTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001852{
1853 CHIP_ERROR err = CHIP_NO_ERROR;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001854 chip::System::PacketBufferTLVWriter writer;
1855 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001856 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-googleb717b362021-11-08 13:34:19 -08001857 AttributeDataIBs::Builder AttributeDataIBsBuilder;
1858 AttributeDataIBsBuilder.Init(&writer);
1859 BuildAttributeDataIBs(apSuite, AttributeDataIBsBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001860 chip::System::PacketBufferHandle buf;
1861 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001862 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1863
1864 DebugPrettyPrint(buf);
1865
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001866 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001867 err = reader.Next();
1868 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-googleb717b362021-11-08 13:34:19 -08001869 ParseAttributeDataIBs(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001870}
1871
yunhanw-google67f74a32021-10-21 12:15:08 -07001872void CommandDataIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001873{
1874 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google67f74a32021-10-21 12:15:08 -07001875 CommandDataIB::Builder commandDataIBBuilder;
1876 CommandDataIB::Parser commandDataIBParser;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001877 chip::System::PacketBufferTLVWriter writer;
1878 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001879 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google67f74a32021-10-21 12:15:08 -07001880 commandDataIBBuilder.Init(&writer);
1881 BuildCommandDataIB(apSuite, commandDataIBBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001882 chip::System::PacketBufferHandle buf;
1883 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001884 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1885
1886 DebugPrettyPrint(buf);
1887
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001888 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001889 err = reader.Next();
1890 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1891
yunhanw-google67f74a32021-10-21 12:15:08 -07001892 commandDataIBParser.Init(reader);
1893 ParseCommandDataIB(apSuite, commandDataIBParser);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001894}
1895
yunhanw-google36e61e32021-11-02 08:31:34 -07001896void CommandStatusIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-google9577ff52021-04-05 12:51:14 -07001897{
1898 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google36e61e32021-11-02 08:31:34 -07001899 CommandStatusIB::Builder commandStatusIBBuilder;
1900 CommandStatusIB::Parser commandStatusIBParser;
yunhanw-google9577ff52021-04-05 12:51:14 -07001901 chip::System::PacketBufferTLVWriter writer;
1902 chip::System::PacketBufferTLVReader reader;
1903 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google36e61e32021-11-02 08:31:34 -07001904 commandStatusIBBuilder.Init(&writer);
1905 BuildCommandStatusIB(apSuite, commandStatusIBBuilder);
yunhanw-google9577ff52021-04-05 12:51:14 -07001906 chip::System::PacketBufferHandle buf;
1907 err = writer.Finalize(&buf);
1908 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1909
1910 DebugPrettyPrint(buf);
1911
1912 reader.Init(std::move(buf));
1913 err = reader.Next();
1914 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1915
yunhanw-google36e61e32021-11-02 08:31:34 -07001916 commandStatusIBParser.Init(reader);
1917 ParseCommandStatusIB(apSuite, commandStatusIBParser);
yunhanw-google9577ff52021-04-05 12:51:14 -07001918}
1919
yunhanw-google36e61e32021-11-02 08:31:34 -07001920void InvokeResponseIBWithCommandDataIBTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001921{
1922 CHIP_ERROR err = CHIP_NO_ERROR;
yunhanw-google36e61e32021-11-02 08:31:34 -07001923 InvokeResponseIB::Builder invokeResponseIBBuilder;
1924 InvokeResponseIB::Parser invokeResponseIBParser;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001925 chip::System::PacketBufferTLVWriter writer;
1926 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05001927 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google36e61e32021-11-02 08:31:34 -07001928 invokeResponseIBBuilder.Init(&writer);
1929 BuildInvokeResponseIBWithCommandDataIB(apSuite, invokeResponseIBBuilder);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001930 chip::System::PacketBufferHandle buf;
1931 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001932 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1933
1934 DebugPrettyPrint(buf);
1935
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05001936 reader.Init(std::move(buf));
yunhanw-googlefb62fb02020-11-20 08:27:21 -08001937 err = reader.Next();
1938 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google36e61e32021-11-02 08:31:34 -07001939
1940 invokeResponseIBParser.Init(reader);
1941 ParseInvokeResponseIBWithCommandDataIB(apSuite, invokeResponseIBParser);
1942}
1943
1944void InvokeResponseIBWithCommandStatusIBTest(nlTestSuite * apSuite, void * apContext)
1945{
1946 CHIP_ERROR err = CHIP_NO_ERROR;
1947 InvokeResponseIB::Builder invokeResponseIBBuilder;
1948 InvokeResponseIB::Parser invokeResponseIBParser;
1949 chip::System::PacketBufferTLVWriter writer;
1950 chip::System::PacketBufferTLVReader reader;
1951 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1952 invokeResponseIBBuilder.Init(&writer);
1953 BuildInvokeResponseIBWithCommandStatusIB(apSuite, invokeResponseIBBuilder);
1954 chip::System::PacketBufferHandle buf;
1955 err = writer.Finalize(&buf);
1956 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1957
1958 DebugPrettyPrint(buf);
1959
1960 reader.Init(std::move(buf));
1961 err = reader.Next();
1962 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1963
1964 invokeResponseIBParser.Init(reader);
1965 ParseInvokeResponseIBWithCommandStatusIB(apSuite, invokeResponseIBParser);
1966}
1967
1968void InvokeResponseIBWithMalformDataTest(nlTestSuite * apSuite, void * apContext)
1969{
1970 CHIP_ERROR err = CHIP_NO_ERROR;
1971 InvokeResponseIB::Builder invokeResponseIBBuilder;
1972 InvokeResponseIB::Parser invokeResponseIBParser;
1973 chip::System::PacketBufferTLVWriter writer;
1974 chip::System::PacketBufferTLVReader reader;
1975 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1976 invokeResponseIBBuilder.Init(&writer);
1977 BuildWrongInvokeResponseIB(apSuite, invokeResponseIBBuilder);
1978 chip::System::PacketBufferHandle buf;
1979 err = writer.Finalize(&buf);
1980 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1981
1982 DebugPrettyPrint(buf);
1983
1984 reader.Init(std::move(buf));
1985 err = reader.Next();
1986 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
1987
yunhanw-google751d0dd2022-11-16 19:09:58 -08001988 err = invokeResponseIBParser.Init(reader);
1989 NL_TEST_ASSERT(apSuite, err != CHIP_NO_ERROR);
yunhanw-google36e61e32021-11-02 08:31:34 -07001990}
1991
1992void InvokeRequestsTest(nlTestSuite * apSuite, void * apContext)
1993{
1994 CHIP_ERROR err = CHIP_NO_ERROR;
1995 chip::System::PacketBufferTLVWriter writer;
1996 chip::System::PacketBufferTLVReader reader;
1997 InvokeRequests::Builder invokeRequestsBuilder;
1998 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
1999 invokeRequestsBuilder.Init(&writer);
2000 BuildInvokeRequests(apSuite, invokeRequestsBuilder);
2001 chip::System::PacketBufferHandle buf;
2002 err = writer.Finalize(&buf);
2003 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2004
2005 DebugPrettyPrint(buf);
2006
2007 reader.Init(std::move(buf));
2008 err = reader.Next();
2009 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2010 ParseInvokeRequests(apSuite, reader);
2011}
2012
2013void InvokeResponsesTest(nlTestSuite * apSuite, void * apContext)
2014{
2015 CHIP_ERROR err = CHIP_NO_ERROR;
2016 chip::System::PacketBufferTLVWriter writer;
2017 chip::System::PacketBufferTLVReader reader;
yunhanw-googlef1117272021-12-02 19:59:44 -08002018 InvokeResponseIBs::Builder invokeResponsesBuilder;
yunhanw-google36e61e32021-11-02 08:31:34 -07002019 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
2020 invokeResponsesBuilder.Init(&writer);
2021 BuildInvokeResponses(apSuite, invokeResponsesBuilder);
2022 chip::System::PacketBufferHandle buf;
2023 err = writer.Finalize(&buf);
2024 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2025
2026 DebugPrettyPrint(buf);
2027
2028 reader.Init(std::move(buf));
2029 err = reader.Next();
2030 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2031 ParseInvokeResponses(apSuite, reader);
2032}
2033
2034void InvokeInvokeRequestMessageTest(nlTestSuite * apSuite, void * apContext)
2035{
2036 CHIP_ERROR err = CHIP_NO_ERROR;
2037 chip::System::PacketBufferTLVWriter writer;
2038 chip::System::PacketBufferTLVReader reader;
2039 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
2040 BuildInvokeRequestMessage(apSuite, writer);
2041 chip::System::PacketBufferHandle buf;
2042 err = writer.Finalize(&buf);
2043 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2044
2045 DebugPrettyPrint(buf);
2046
2047 reader.Init(std::move(buf));
yunhanw-google36e61e32021-11-02 08:31:34 -07002048 ParseInvokeRequestMessage(apSuite, reader);
2049}
2050
2051void InvokeInvokeResponseMessageTest(nlTestSuite * apSuite, void * apContext)
2052{
2053 CHIP_ERROR err = CHIP_NO_ERROR;
2054 chip::System::PacketBufferTLVWriter writer;
2055 chip::System::PacketBufferTLVReader reader;
2056 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
2057 BuildInvokeResponseMessage(apSuite, writer);
2058 chip::System::PacketBufferHandle buf;
2059 err = writer.Finalize(&buf);
2060 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2061
2062 DebugPrettyPrint(buf);
2063
2064 reader.Init(std::move(buf));
yunhanw-google36e61e32021-11-02 08:31:34 -07002065 ParseInvokeResponseMessage(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002066}
2067
yunhanw-google12ec7022021-11-01 19:53:29 -07002068void ReportDataMessageTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002069{
2070 CHIP_ERROR err = CHIP_NO_ERROR;
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05002071 chip::System::PacketBufferTLVWriter writer;
2072 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05002073 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google12ec7022021-11-01 19:53:29 -07002074 BuildReportDataMessage(apSuite, writer);
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05002075 chip::System::PacketBufferHandle buf;
2076 err = writer.Finalize(&buf);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002077 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2078
2079 DebugPrettyPrint(buf);
2080
Kevin Schoedel4bb0e532021-01-11 22:28:18 -05002081 reader.Init(std::move(buf));
yunhanw-google12ec7022021-11-01 19:53:29 -07002082 ParseReportDataMessage(apSuite, reader);
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002083}
2084
yunhanw-google12ec7022021-11-01 19:53:29 -07002085void ReadRequestMessageTest(nlTestSuite * apSuite, void * apContext)
yunhanw-google0c183552021-01-22 09:12:14 -08002086{
2087 CHIP_ERROR err = CHIP_NO_ERROR;
2088 chip::System::PacketBufferTLVWriter writer;
2089 chip::System::PacketBufferTLVReader reader;
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05002090 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google12ec7022021-11-01 19:53:29 -07002091 BuildReadRequestMessage(apSuite, writer);
yunhanw-google0c183552021-01-22 09:12:14 -08002092 chip::System::PacketBufferHandle buf;
2093 err = writer.Finalize(&buf);
2094 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2095
2096 DebugPrettyPrint(buf);
2097
2098 reader.Init(std::move(buf));
yunhanw-google12ec7022021-11-01 19:53:29 -07002099 ParseReadRequestMessage(apSuite, reader);
yunhanw-google0c183552021-01-22 09:12:14 -08002100}
2101
yunhanw-google12ec7022021-11-01 19:53:29 -07002102void WriteRequestMessageTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlee4c01152021-04-16 08:22:10 -07002103{
2104 CHIP_ERROR err = CHIP_NO_ERROR;
2105 chip::System::PacketBufferTLVWriter writer;
2106 chip::System::PacketBufferTLVReader reader;
2107 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google12ec7022021-11-01 19:53:29 -07002108 BuildWriteRequestMessage(apSuite, writer);
yunhanw-googlee4c01152021-04-16 08:22:10 -07002109 chip::System::PacketBufferHandle buf;
2110 err = writer.Finalize(&buf);
2111 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2112
2113 DebugPrettyPrint(buf);
2114
2115 reader.Init(std::move(buf));
yunhanw-google12ec7022021-11-01 19:53:29 -07002116 ParseWriteRequestMessage(apSuite, reader);
yunhanw-googlee4c01152021-04-16 08:22:10 -07002117}
2118
yunhanw-google12ec7022021-11-01 19:53:29 -07002119void WriteResponseMessageTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlee4c01152021-04-16 08:22:10 -07002120{
2121 CHIP_ERROR err = CHIP_NO_ERROR;
2122 chip::System::PacketBufferTLVWriter writer;
2123 chip::System::PacketBufferTLVReader reader;
2124 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google12ec7022021-11-01 19:53:29 -07002125 BuildWriteResponseMessage(apSuite, writer);
yunhanw-googlee4c01152021-04-16 08:22:10 -07002126 chip::System::PacketBufferHandle buf;
2127 err = writer.Finalize(&buf);
2128 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2129
2130 DebugPrettyPrint(buf);
2131
2132 reader.Init(std::move(buf));
yunhanw-google12ec7022021-11-01 19:53:29 -07002133 ParseWriteResponseMessage(apSuite, reader);
yunhanw-googlee4c01152021-04-16 08:22:10 -07002134}
2135
yunhanw-google12ec7022021-11-01 19:53:29 -07002136void SubscribeRequestMessageTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb773e82021-07-09 13:52:37 -07002137{
2138 CHIP_ERROR err = CHIP_NO_ERROR;
2139 chip::System::PacketBufferTLVWriter writer;
2140 chip::System::PacketBufferTLVReader reader;
2141 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google12ec7022021-11-01 19:53:29 -07002142 BuildSubscribeRequestMessage(apSuite, writer);
yunhanw-googlefb773e82021-07-09 13:52:37 -07002143 chip::System::PacketBufferHandle buf;
2144 err = writer.Finalize(&buf);
2145 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2146
2147 DebugPrettyPrint(buf);
2148
2149 reader.Init(std::move(buf));
yunhanw-google12ec7022021-11-01 19:53:29 -07002150 ParseSubscribeRequestMessage(apSuite, reader);
yunhanw-googlefb773e82021-07-09 13:52:37 -07002151}
2152
yunhanw-google12ec7022021-11-01 19:53:29 -07002153void SubscribeResponseMessageTest(nlTestSuite * apSuite, void * apContext)
yunhanw-googlefb773e82021-07-09 13:52:37 -07002154{
2155 CHIP_ERROR err = CHIP_NO_ERROR;
2156 chip::System::PacketBufferTLVWriter writer;
2157 chip::System::PacketBufferTLVReader reader;
2158 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google12ec7022021-11-01 19:53:29 -07002159 BuildSubscribeResponseMessage(apSuite, writer);
yunhanw-googlefb773e82021-07-09 13:52:37 -07002160 chip::System::PacketBufferHandle buf;
2161 err = writer.Finalize(&buf);
2162 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2163
2164 DebugPrettyPrint(buf);
2165
2166 reader.Init(std::move(buf));
yunhanw-google12ec7022021-11-01 19:53:29 -07002167 ParseSubscribeResponseMessage(apSuite, reader);
yunhanw-googlefb773e82021-07-09 13:52:37 -07002168}
2169
yunhanw-google7f05fb62021-10-29 06:55:58 -07002170void TimedRequestMessageTest(nlTestSuite * apSuite, void * apContext)
yunhanw-google8be85452021-07-12 07:20:09 -07002171{
2172 CHIP_ERROR err = CHIP_NO_ERROR;
2173 chip::System::PacketBufferTLVWriter writer;
2174 chip::System::PacketBufferTLVReader reader;
2175 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google7f05fb62021-10-29 06:55:58 -07002176 BuildTimedRequestMessage(apSuite, writer);
yunhanw-google8be85452021-07-12 07:20:09 -07002177 chip::System::PacketBufferHandle buf;
2178 err = writer.Finalize(&buf);
2179 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2180
2181 DebugPrettyPrint(buf);
2182
2183 reader.Init(std::move(buf));
yunhanw-google7f05fb62021-10-29 06:55:58 -07002184 ParseTimedRequestMessage(apSuite, reader);
yunhanw-google8be85452021-07-12 07:20:09 -07002185}
2186
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002187void CheckPointRollbackTest(nlTestSuite * apSuite, void * apContext)
2188{
2189 CHIP_ERROR err = CHIP_NO_ERROR;
2190 size_t NumDataElement = 0;
2191 chip::System::PacketBufferTLVWriter writer;
2192 chip::System::PacketBufferTLVReader reader;
yunhanw-googleb717b362021-11-08 13:34:19 -08002193 AttributeDataIBs::Parser AttributeDataIBsParser;
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002194 chip::TLV::TLVWriter checkpoint;
2195 writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
yunhanw-google299393b2021-12-06 09:59:34 -08002196 AttributeDataIBs::Builder attributeDataIBsBuilder;
2197 attributeDataIBsBuilder.Init(&writer);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002198
2199 // encode one attribute element
yunhanw-google299393b2021-12-06 09:59:34 -08002200 AttributeDataIB::Builder & attributeDataIBBuilder1 = attributeDataIBsBuilder.CreateAttributeDataIBBuilder();
2201 NL_TEST_ASSERT(apSuite, attributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
2202 BuildAttributeDataIB(apSuite, attributeDataIBBuilder1);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002203 // checkpoint
yunhanw-google299393b2021-12-06 09:59:34 -08002204 attributeDataIBsBuilder.Checkpoint(checkpoint);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002205 // encode another attribute element
yunhanw-google299393b2021-12-06 09:59:34 -08002206 AttributeDataIB::Builder & attributeDataIBBuilder2 = attributeDataIBsBuilder.CreateAttributeDataIBBuilder();
2207 NL_TEST_ASSERT(apSuite, attributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
2208 BuildAttributeDataIB(apSuite, attributeDataIBBuilder2);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002209 // rollback to previous checkpoint
yunhanw-google299393b2021-12-06 09:59:34 -08002210 attributeDataIBsBuilder.Rollback(checkpoint);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002211
yunhanw-google299393b2021-12-06 09:59:34 -08002212 attributeDataIBsBuilder.EndOfAttributeDataIBs();
2213 NL_TEST_ASSERT(apSuite, attributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002214
2215 chip::System::PacketBufferHandle buf;
2216 err = writer.Finalize(&buf);
2217 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2218
2219 DebugPrettyPrint(buf);
2220
2221 reader.Init(std::move(buf));
2222 err = reader.Next();
2223 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
2224
yunhanw-googleb717b362021-11-08 13:34:19 -08002225 err = AttributeDataIBsParser.Init(reader);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002226 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002227
yunhanw-google751d0dd2022-11-16 19:09:58 -08002228#if CHIP_CONFIG_IM_PRETTY_PRINT
2229 AttributeDataIBsParser.PrettyPrint();
yunhanw-googled644bb02021-04-13 07:26:17 -07002230#endif
yunhanw-googleb717b362021-11-08 13:34:19 -08002231 while (CHIP_NO_ERROR == (err = AttributeDataIBsParser.Next()))
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002232 {
2233 ++NumDataElement;
2234 }
2235
2236 NL_TEST_ASSERT(apSuite, NumDataElement == 1);
2237}
2238
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002239/**
2240 * Test Suite. It lists all the test functions.
2241 */
2242
2243// clang-format off
2244const nlTest sTests[] =
2245 {
yunhanw-googlea1cb3412021-12-06 13:32:40 -08002246 NL_TEST_DEF("ClusterPathIBTest", ClusterPathIBTest),
2247 NL_TEST_DEF("DataVersionFilterIBTest", DataVersionFilterIBTest),
2248 NL_TEST_DEF("DataVersionFilterIBsTest", DataVersionFilterIBsTest),
yunhanw-googlebf585f82021-10-29 19:20:07 -07002249 NL_TEST_DEF("EventFilterTest", EventFilterTest),
2250 NL_TEST_DEF("EventFiltersTest", EventFiltersTest),
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002251 NL_TEST_DEF("AttributePathTest", AttributePathTest),
2252 NL_TEST_DEF("AttributePathListTest", AttributePathListTest),
yunhanw-googleb717b362021-11-08 13:34:19 -08002253 NL_TEST_DEF("AttributeStatusIBTest", AttributeStatusIBTest),
2254 NL_TEST_DEF("AttributeStatusesTest", AttributeStatusesTest),
2255 NL_TEST_DEF("AttributeDataIBTest", AttributeDataIBTest),
2256 NL_TEST_DEF("AttributeDataIBsTest", AttributeDataIBsTest),
2257 NL_TEST_DEF("AttributeReportIBTest", AttributeReportIBTest),
2258 NL_TEST_DEF("AttributeReportIBsTest", AttributeReportIBsTest),
yunhanw-google588d4c92022-05-11 23:50:15 -07002259 NL_TEST_DEF("EmptyAttributeReportIBsTest", EmptyAttributeReportIBsTest),
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002260 NL_TEST_DEF("EventPathTest", EventPathTest),
yunhanw-google2fe90242021-11-01 15:13:44 -07002261 NL_TEST_DEF("EventPathsTest", EventPathsTest),
yunhanw-google3bec0f92021-11-03 16:12:39 -07002262 NL_TEST_DEF("EventDataIBTest", EventDataIBTest),
2263 NL_TEST_DEF("EventReportIBTest", EventReportIBTest),
2264 NL_TEST_DEF("EventReportsTest", EventReportsTest),
yunhanw-google588d4c92022-05-11 23:50:15 -07002265 NL_TEST_DEF("EmptyEventReportsTest", EmptyEventReportsTest),
yunhanw-google35e67172021-10-11 17:12:06 -07002266 NL_TEST_DEF("StatusIBTest", StatusIBTest),
yunhanw-google1f6c6e62021-11-02 10:09:53 -07002267 NL_TEST_DEF("EventStatusIBTest", EventStatusIBTest),
yunhanw-google36e61e32021-11-02 08:31:34 -07002268 NL_TEST_DEF("CommandPathIBTest", CommandPathIBTest),
yunhanw-google67f74a32021-10-21 12:15:08 -07002269 NL_TEST_DEF("CommandDataIBTest", CommandDataIBTest),
yunhanw-google36e61e32021-11-02 08:31:34 -07002270 NL_TEST_DEF("CommandStatusIBTest", CommandStatusIBTest),
2271 NL_TEST_DEF("InvokeResponseIBWithCommandDataIBTest", InvokeResponseIBWithCommandDataIBTest),
2272 NL_TEST_DEF("InvokeResponseIBWithCommandStatusIBTest", InvokeResponseIBWithCommandStatusIBTest),
2273 NL_TEST_DEF("InvokeResponseIBWithMalformDataTest", InvokeResponseIBWithMalformDataTest),
2274 NL_TEST_DEF("InvokeRequestsTest", InvokeRequestsTest),
2275 NL_TEST_DEF("InvokeResponsesTest", InvokeResponsesTest),
2276 NL_TEST_DEF("InvokeInvokeRequestMessageTest", InvokeInvokeRequestMessageTest),
2277 NL_TEST_DEF("InvokeInvokeResponseMessageTest", InvokeInvokeResponseMessageTest),
yunhanw-google12ec7022021-11-01 19:53:29 -07002278 NL_TEST_DEF("ReportDataMessageTest", ReportDataMessageTest),
yunhanw-google12ec7022021-11-01 19:53:29 -07002279 NL_TEST_DEF("ReadRequestMessageTest", ReadRequestMessageTest),
2280 NL_TEST_DEF("WriteRequestMessageTest", WriteRequestMessageTest),
2281 NL_TEST_DEF("WriteResponseMessageTest", WriteResponseMessageTest),
2282 NL_TEST_DEF("SubscribeRequestMessageTest", SubscribeRequestMessageTest),
2283 NL_TEST_DEF("SubscribeResponseMessageTest", SubscribeResponseMessageTest),
yunhanw-google7f05fb62021-10-29 06:55:58 -07002284 NL_TEST_DEF("TimedRequestMessageTest", TimedRequestMessageTest),
yunhanw-google1a94b9e2021-03-25 18:32:44 -07002285 NL_TEST_DEF("CheckPointRollbackTest", CheckPointRollbackTest),
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002286 NL_TEST_SENTINEL()
2287 };
2288// clang-format on
2289} // namespace
2290
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05002291/**
2292 * Set up the test suite.
2293 */
2294static int TestSetup(void * inContext)
2295{
2296 CHIP_ERROR error = chip::Platform::MemoryInit();
2297 if (error != CHIP_NO_ERROR)
2298 return FAILURE;
2299 return SUCCESS;
2300}
2301
2302/**
2303 * Tear down the test suite.
2304 */
2305static int TestTeardown(void * inContext)
2306{
2307 chip::Platform::MemoryShutdown();
2308 return SUCCESS;
2309}
2310
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002311int TestMessageDef()
2312{
2313 // clang-format off
2314 nlTestSuite theSuite =
2315 {
2316 "MessageDef",
2317 &sTests[0],
Kevin Schoedel1b6a96b2021-02-10 14:29:33 -05002318 TestSetup,
2319 TestTeardown,
yunhanw-googlefb62fb02020-11-20 08:27:21 -08002320 };
2321 // clang-format on
2322
2323 nlTestRunner(&theSuite, nullptr);
2324
2325 return (nlTestRunnerStats(&theSuite));
2326}
2327
2328CHIP_REGISTER_TEST_SUITE(TestMessageDef)