3 * Copyright (c) 2020 Project CHIP Authors
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
20 * This file implements a unit test suite for the manual setup
25 #include <nlunit-test.h>
28 #include "ManualSetupPayloadGenerator.cpp"
29 #include "ManualSetupPayloadParser.cpp"
30 #include "SetupPayload.cpp"
31 #include "SetupPayload.h"
33 #include <support/UnitTestRegistration.h>
34 #include <support/verhoeff/Verhoeff.h>
40 bool CheckGenerator(const SetupPayload & payload, std::string expectedResult)
43 ManualSetupPayloadGenerator generator(payload);
44 generator.payloadDecimalStringRepresentation(result);
46 if (!expectedResult.empty())
48 expectedResult += Verhoeff10::ComputeCheckChar(expectedResult.c_str());
51 bool same = result == expectedResult;
54 printf("Actual result: %s\n", result.c_str());
55 printf("Expected result: %s\n", expectedResult.c_str());
61 SetupPayload GetDefaultPayload()
64 payload.setUpPINCode = 123456780;
65 payload.discriminator = 2560;
70 void TestDecimalRepresentation_PartialPayload(nlTestSuite * inSuite, void * inContext)
72 SetupPayload payload = GetDefaultPayload();
74 std::string expectedResult = "2361087535";
76 NL_TEST_ASSERT(inSuite, CheckGenerator(payload, expectedResult));
79 void TestDecimalRepresentation_PartialPayload_RequiresCustomFlow(nlTestSuite * inSuite, void * inContext)
81 SetupPayload payload = GetDefaultPayload();
82 payload.requiresCustomFlow = true;
84 std::string expectedResult = "63610875350000000000";
86 NL_TEST_ASSERT(inSuite, CheckGenerator(payload, expectedResult));
89 void TestDecimalRepresentation_FullPayloadWithZeros(nlTestSuite * inSuite, void * inContext)
91 SetupPayload payload = GetDefaultPayload();
92 payload.requiresCustomFlow = true;
94 payload.productID = 1;
96 std::string expectedResult = "63610875350000100001";
98 NL_TEST_ASSERT(inSuite, CheckGenerator(payload, expectedResult));
101 void TestDecimalRepresentation_FullPayloadWithoutZeros(nlTestSuite * inSuite, void * inContext)
103 SetupPayload payload = GetDefaultPayload();
104 payload.requiresCustomFlow = true;
105 payload.vendorID = 45367;
106 payload.productID = 14526;
108 std::string expectedResult = "63610875354536714526";
110 NL_TEST_ASSERT(inSuite, CheckGenerator(payload, expectedResult));
113 void TestDecimalRepresentation_FullPayloadWithoutZeros_DoesNotRequireCustomFlow(nlTestSuite * inSuite, void * inContext)
115 SetupPayload payload = GetDefaultPayload();
116 payload.vendorID = 45367;
117 payload.productID = 14526;
119 std::string expectedResult = "2361087535";
121 NL_TEST_ASSERT(inSuite, CheckGenerator(payload, expectedResult));
124 void TestDecimalRepresentation_AllZeros(nlTestSuite * inSuite, void * inContext)
126 SetupPayload payload;
127 payload.setUpPINCode = 0;
128 payload.discriminator = 0;
130 std::string expectedResult = "";
132 NL_TEST_ASSERT(inSuite, CheckGenerator(payload, expectedResult));
135 void TestDecimalRepresentation_AllOnes(nlTestSuite * inSuite, void * inContext)
137 SetupPayload payload;
138 payload.setUpPINCode = 0x7FFFFFF;
139 payload.discriminator = 0xFFF;
140 payload.requiresCustomFlow = true;
141 payload.vendorID = 65535;
142 payload.productID = 65535;
144 std::string expectedResult = "76553581916553565535";
146 NL_TEST_ASSERT(inSuite, CheckGenerator(payload, expectedResult));
149 void TestDecimalRepresentation_InvalidPayload(nlTestSuite * inSuite, void * inContext)
151 SetupPayload payload = GetDefaultPayload();
152 payload.discriminator = 0x1f00;
154 ManualSetupPayloadGenerator generator(payload);
156 NL_TEST_ASSERT(inSuite, generator.payloadDecimalStringRepresentation(result) == CHIP_ERROR_INVALID_ARGUMENT);
159 void assertPayloadValues(nlTestSuite * inSuite, CHIP_ERROR actualError, CHIP_ERROR expectedError, const SetupPayload & payload,
160 uint32_t pinCode, uint16_t discriminator, uint16_t vendorID, uint16_t productID)
162 NL_TEST_ASSERT(inSuite, actualError == expectedError);
163 NL_TEST_ASSERT(inSuite, payload.setUpPINCode == pinCode);
164 NL_TEST_ASSERT(inSuite, payload.discriminator == discriminator);
165 NL_TEST_ASSERT(inSuite, payload.vendorID == vendorID);
166 NL_TEST_ASSERT(inSuite, payload.productID == productID);
169 void TestGenerateAndParser_ManualSetupCodeWithLongDiscriminator(nlTestSuite * inSuite, void * inContext)
171 SetupPayload payload = GetDefaultPayload();
172 payload.requiresCustomFlow = false;
173 payload.discriminator = 0xa1f;
176 // Test short 11 digit code
177 ManualSetupPayloadGenerator generator(payload);
179 NL_TEST_ASSERT(inSuite, generator.payloadDecimalStringRepresentation(result) == CHIP_NO_ERROR);
181 SetupPayload outPayload;
182 CHIP_ERROR err = ManualSetupPayloadParser(result).populatePayload(outPayload);
183 assertPayloadValues(inSuite, err, CHIP_NO_ERROR, outPayload, payload.setUpPINCode, 0xa00, payload.vendorID,
187 payload.vendorID = 1;
188 payload.productID = 1;
189 payload.requiresCustomFlow = true;
190 payload.discriminator = 0xb1f;
193 // Test long 21 digit code
194 ManualSetupPayloadGenerator generator(payload);
196 NL_TEST_ASSERT(inSuite, generator.payloadDecimalStringRepresentation(result) == CHIP_NO_ERROR);
198 SetupPayload outPayload;
199 CHIP_ERROR err = ManualSetupPayloadParser(result).populatePayload(outPayload);
200 assertPayloadValues(inSuite, err, CHIP_NO_ERROR, outPayload, payload.setUpPINCode, 0xb00, payload.vendorID,
205 void assertEmptyPayloadWithError(nlTestSuite * inSuite, CHIP_ERROR actualError, CHIP_ERROR expectedError,
206 const SetupPayload & payload)
208 NL_TEST_ASSERT(inSuite, actualError == expectedError);
209 NL_TEST_ASSERT(inSuite,
210 payload.setUpPINCode == 0 && payload.discriminator == 0 && payload.productID == 0 && payload.vendorID == 0);
213 void TestPayloadParser_FullPayload(nlTestSuite * inSuite, void * inContext)
215 SetupPayload payload;
216 std::string decimalString;
218 decimalString = "63610875354536714526";
219 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
220 CHIP_ERROR err = ManualSetupPayloadParser(decimalString).populatePayload(payload);
221 assertPayloadValues(inSuite, err, CHIP_NO_ERROR, payload, 123456780, 2560, 45367, 14526);
223 decimalString = "52927623630456200032";
224 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
225 err = ManualSetupPayloadParser(decimalString).populatePayload(payload);
226 assertPayloadValues(inSuite, err, CHIP_NO_ERROR, payload, 38728284, 1280, 4562, 32);
228 decimalString = "40000100000000100001";
229 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
230 err = ManualSetupPayloadParser(decimalString).populatePayload(payload);
231 assertPayloadValues(inSuite, err, CHIP_NO_ERROR, payload, 1, 0, 1, 1);
234 void TestGenerateAndParser_FullPayload(nlTestSuite * inSuite, void * inContext)
236 SetupPayload payload = GetDefaultPayload();
237 payload.vendorID = 1;
238 payload.productID = 1;
239 payload.requiresCustomFlow = true;
241 ManualSetupPayloadGenerator generator(payload);
243 NL_TEST_ASSERT(inSuite, generator.payloadDecimalStringRepresentation(result) == CHIP_NO_ERROR);
245 SetupPayload outPayload;
246 CHIP_ERROR err = ManualSetupPayloadParser(result).populatePayload(outPayload);
247 assertPayloadValues(inSuite, err, CHIP_NO_ERROR, outPayload, payload.setUpPINCode, payload.discriminator, payload.vendorID,
251 void TestGenerateAndParser_PartialPayload(nlTestSuite * inSuite, void * inContext)
253 SetupPayload payload = GetDefaultPayload();
255 ManualSetupPayloadGenerator generator(payload);
257 NL_TEST_ASSERT(inSuite, generator.payloadDecimalStringRepresentation(result) == CHIP_NO_ERROR);
259 SetupPayload outPayload;
260 CHIP_ERROR err = ManualSetupPayloadParser(result).populatePayload(outPayload);
261 assertPayloadValues(inSuite, err, CHIP_NO_ERROR, outPayload, payload.setUpPINCode, payload.discriminator, payload.vendorID,
265 void TestPayloadParser_PartialPayload(nlTestSuite * inSuite, void * inContext)
268 SetupPayload payload;
269 std::string decimalString;
271 decimalString = "2361087535";
272 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
273 NL_TEST_ASSERT(inSuite, decimalString.length() == 11);
274 err = ManualSetupPayloadParser(decimalString).populatePayload(payload);
275 assertPayloadValues(inSuite, err, CHIP_NO_ERROR, payload, 123456780, 2560, 0, 0);
277 decimalString = "0000010000";
278 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
279 NL_TEST_ASSERT(inSuite, decimalString.length() == 11);
280 err = ManualSetupPayloadParser(decimalString).populatePayload(payload);
281 assertPayloadValues(inSuite, err, CHIP_NO_ERROR, payload, 1, 0, 0, 0);
283 decimalString = "63610875350000000000";
284 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
285 NL_TEST_ASSERT(inSuite, decimalString.length() == 21);
286 err = ManualSetupPayloadParser(decimalString).populatePayload(payload);
287 assertPayloadValues(inSuite, err, CHIP_NO_ERROR, payload, 123456780, 2560, 0, 0);
289 // no discriminator (= 0)
290 decimalString = "0033407535";
291 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
292 NL_TEST_ASSERT(inSuite, decimalString.length() == 11);
293 err = ManualSetupPayloadParser(decimalString).populatePayload(payload);
294 NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
297 decimalString = "63610875350000014526";
298 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
299 NL_TEST_ASSERT(inSuite, decimalString.length() == 21);
300 err = ManualSetupPayloadParser(decimalString).populatePayload(payload);
301 NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
304 decimalString = "63610875354536700000";
305 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
306 NL_TEST_ASSERT(inSuite, decimalString.length() == 21);
307 err = ManualSetupPayloadParser(decimalString).populatePayload(payload);
308 NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR);
311 void TestShortCodeReadWrite(nlTestSuite * inSuite, void * context)
313 SetupPayload inPayload = GetDefaultPayload();
314 SetupPayload outPayload;
317 ManualSetupPayloadGenerator generator(inPayload);
318 generator.payloadDecimalStringRepresentation(result);
319 ManualSetupPayloadParser(result).populatePayload(outPayload);
321 NL_TEST_ASSERT(inSuite, inPayload == outPayload);
324 void TestLongCodeReadWrite(nlTestSuite * inSuite, void * context)
326 SetupPayload inPayload = GetDefaultPayload();
327 inPayload.requiresCustomFlow = true;
328 inPayload.vendorID = 1;
329 inPayload.productID = 1;
330 SetupPayload outPayload;
333 ManualSetupPayloadGenerator generator(inPayload);
334 generator.payloadDecimalStringRepresentation(result);
335 ManualSetupPayloadParser(result).populatePayload(outPayload);
337 NL_TEST_ASSERT(inSuite, inPayload == outPayload);
340 void TestPayloadParser_InvalidEntry(nlTestSuite * inSuite, void * inContext)
342 SetupPayload payload;
343 std::string decimalString;
347 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
348 assertEmptyPayloadWithError(inSuite, ManualSetupPayloadParser(decimalString).populatePayload(payload),
349 CHIP_ERROR_INVALID_STRING_LENGTH, payload);
352 decimalString = "24184.2196";
353 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
354 assertEmptyPayloadWithError(inSuite, ManualSetupPayloadParser(decimalString).populatePayload(payload),
355 CHIP_ERROR_INVALID_INTEGER_VALUE, payload);
358 decimalString = "2456";
359 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
360 assertEmptyPayloadWithError(inSuite, ManualSetupPayloadParser(decimalString).populatePayload(payload),
361 CHIP_ERROR_INVALID_STRING_LENGTH, payload);
363 // too long for long code
364 decimalString = "123456789123456785671";
365 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
366 assertEmptyPayloadWithError(inSuite, ManualSetupPayloadParser(decimalString).populatePayload(payload),
367 CHIP_ERROR_INVALID_STRING_LENGTH, payload);
369 // too long for short code
370 decimalString = "12749875380";
371 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
372 assertEmptyPayloadWithError(inSuite, ManualSetupPayloadParser(decimalString).populatePayload(payload),
373 CHIP_ERROR_INVALID_STRING_LENGTH, payload);
375 // bit to indicate short code but long code length
376 decimalString = "23456789123456785610";
377 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
378 assertEmptyPayloadWithError(inSuite, ManualSetupPayloadParser(decimalString).populatePayload(payload),
379 CHIP_ERROR_INVALID_STRING_LENGTH, payload);
381 decimalString = "2327680000";
382 decimalString += Verhoeff10::ComputeCheckChar(decimalString.c_str());
383 assertEmptyPayloadWithError(inSuite, ManualSetupPayloadParser(decimalString).populatePayload(payload),
384 CHIP_ERROR_INVALID_ARGUMENT, payload);
386 decimalString = "02684354589";
387 assertEmptyPayloadWithError(inSuite, ManualSetupPayloadParser(decimalString).populatePayload(payload),
388 CHIP_ERROR_INTEGRITY_CHECK_FAILED, payload);
391 void TestCheckDecimalStringValidity(nlTestSuite * inSuite, void * inContext)
393 std::string outReprensation;
395 std::string representationWithoutCheckDigit;
396 std::string decimalString;
398 representationWithoutCheckDigit = "";
400 inSuite, checkDecimalStringValidity(representationWithoutCheckDigit, outReprensation) == CHIP_ERROR_INVALID_STRING_LENGTH);
402 representationWithoutCheckDigit = "1";
404 inSuite, checkDecimalStringValidity(representationWithoutCheckDigit, outReprensation) == CHIP_ERROR_INVALID_STRING_LENGTH);
406 representationWithoutCheckDigit = "10109";
407 checkDigit = Verhoeff10::ComputeCheckChar(representationWithoutCheckDigit.c_str());
408 decimalString = representationWithoutCheckDigit + checkDigit;
409 NL_TEST_ASSERT(inSuite, checkDecimalStringValidity(decimalString, outReprensation) == CHIP_NO_ERROR);
410 NL_TEST_ASSERT(inSuite, outReprensation == representationWithoutCheckDigit);
412 representationWithoutCheckDigit = "0000";
413 checkDigit = Verhoeff10::ComputeCheckChar(representationWithoutCheckDigit.c_str());
414 decimalString = representationWithoutCheckDigit + checkDigit;
415 NL_TEST_ASSERT(inSuite, checkDecimalStringValidity(decimalString, outReprensation) == CHIP_NO_ERROR);
416 NL_TEST_ASSERT(inSuite, outReprensation == representationWithoutCheckDigit);
419 void TestCheckCodeLengthValidity(nlTestSuite * inSuite, void * inContext)
421 NL_TEST_ASSERT(inSuite, checkCodeLengthValidity("01234567890123456789", true) == CHIP_NO_ERROR);
422 NL_TEST_ASSERT(inSuite, checkCodeLengthValidity("0123456789", false) == CHIP_NO_ERROR);
424 NL_TEST_ASSERT(inSuite, checkCodeLengthValidity("01234567891", false) == CHIP_ERROR_INVALID_STRING_LENGTH);
425 NL_TEST_ASSERT(inSuite, checkCodeLengthValidity("012345678", false) == CHIP_ERROR_INVALID_STRING_LENGTH);
426 NL_TEST_ASSERT(inSuite, checkCodeLengthValidity("012345678901234567891", true) == CHIP_ERROR_INVALID_STRING_LENGTH);
427 NL_TEST_ASSERT(inSuite, checkCodeLengthValidity("0123456789012345678", true) == CHIP_ERROR_INVALID_STRING_LENGTH);
430 void TestDecimalStringToNumber(nlTestSuite * inSuite, void * inContext)
433 NL_TEST_ASSERT(inSuite, toNumber("12345", number) == CHIP_NO_ERROR);
434 NL_TEST_ASSERT(inSuite, number == 12345);
436 NL_TEST_ASSERT(inSuite, toNumber("01234567890", number) == CHIP_NO_ERROR);
437 NL_TEST_ASSERT(inSuite, number == 1234567890);
439 NL_TEST_ASSERT(inSuite, toNumber("00000001", number) == CHIP_NO_ERROR);
440 NL_TEST_ASSERT(inSuite, number == 1);
442 NL_TEST_ASSERT(inSuite, toNumber("0", number) == CHIP_NO_ERROR);
443 NL_TEST_ASSERT(inSuite, number == 0);
445 NL_TEST_ASSERT(inSuite, toNumber("012345.123456789", number) == CHIP_ERROR_INVALID_INTEGER_VALUE);
446 NL_TEST_ASSERT(inSuite, toNumber("/", number) == CHIP_ERROR_INVALID_INTEGER_VALUE);
449 void TestReadCharsFromDecimalString(nlTestSuite * inSuite, void * inContext)
453 NL_TEST_ASSERT(inSuite, readDigitsFromDecimalString("12345", index, number, 2) == CHIP_NO_ERROR);
454 NL_TEST_ASSERT(inSuite, number == 45);
457 NL_TEST_ASSERT(inSuite, readDigitsFromDecimalString("6256276377282", index, number, 7) == CHIP_NO_ERROR);
458 NL_TEST_ASSERT(inSuite, number == 5627637);
461 NL_TEST_ASSERT(inSuite, readDigitsFromDecimalString("10", index, number, 2) == CHIP_NO_ERROR);
462 NL_TEST_ASSERT(inSuite, number == 10);
465 NL_TEST_ASSERT(inSuite, readDigitsFromDecimalString("01", index, number, 2) == CHIP_NO_ERROR);
466 NL_TEST_ASSERT(inSuite, number == 1);
469 NL_TEST_ASSERT(inSuite, readDigitsFromDecimalString("11", index, number, 1) == CHIP_NO_ERROR);
470 NL_TEST_ASSERT(inSuite, number == 1);
473 NL_TEST_ASSERT(inSuite, readDigitsFromDecimalString("100001", index, number, 3) == CHIP_NO_ERROR);
476 NL_TEST_ASSERT(inSuite, readDigitsFromDecimalString("12345", index, number, 5) == CHIP_ERROR_INVALID_STRING_LENGTH);
477 NL_TEST_ASSERT(inSuite, readDigitsFromDecimalString("12", index, number, 5) == CHIP_ERROR_INVALID_STRING_LENGTH);
480 NL_TEST_ASSERT(inSuite, readDigitsFromDecimalString("6256276377282", index, number, 1) == CHIP_ERROR_INVALID_STRING_LENGTH);
483 void TestShortCodeCharLengths(nlTestSuite * inSuite, void * inContext)
485 size_t numBits = 1 + kSetupPINCodeFieldLengthInBits + kManualSetupDiscriminatorFieldLengthInBits;
486 size_t manualSetupShortCodeCharLength = static_cast<size_t>(ceil(log10(pow(2, numBits))));
487 NL_TEST_ASSERT(inSuite, manualSetupShortCodeCharLength == kManualSetupShortCodeCharLength);
489 size_t manualSetupVendorIdCharLength = static_cast<size_t>(ceil(log10(pow(2, kVendorIDFieldLengthInBits))));
490 NL_TEST_ASSERT(inSuite, manualSetupVendorIdCharLength == kManualSetupVendorIdCharLength);
492 size_t manualSetupProductIdCharLength = static_cast<size_t>(ceil(log10(pow(2, kProductIDFieldLengthInBits))));
493 NL_TEST_ASSERT(inSuite, manualSetupProductIdCharLength == kManualSetupProductIdCharLength);
495 size_t manualSetupLongCodeCharLength =
496 kManualSetupShortCodeCharLength + kManualSetupVendorIdCharLength + kManualSetupProductIdCharLength;
497 NL_TEST_ASSERT(inSuite, manualSetupLongCodeCharLength == kManualSetupLongCodeCharLength);
501 * Test Suite that lists all the Test functions.
504 const nlTest sTests[] =
506 NL_TEST_DEF("Generate Decimal Representation from Partial Payload", TestDecimalRepresentation_PartialPayload),
507 NL_TEST_DEF("Generate Decimal Representation from Partial Payload (Custom Flow)", TestDecimalRepresentation_PartialPayload_RequiresCustomFlow),
508 NL_TEST_DEF("Generate Decimal Representation from Full Payload with Zeros", TestDecimalRepresentation_FullPayloadWithZeros),
509 NL_TEST_DEF("Decimal Representation from Full Payload without Zeros", TestDecimalRepresentation_FullPayloadWithoutZeros_DoesNotRequireCustomFlow),
510 NL_TEST_DEF("Decimal Representation from Full Payload without Zeros (Custom Flow)", TestDecimalRepresentation_FullPayloadWithoutZeros),
511 NL_TEST_DEF("Test Decimal Representation - Invalid Payload", TestDecimalRepresentation_InvalidPayload),
512 NL_TEST_DEF("Test 12 bit discriminator for manual setup code", TestGenerateAndParser_ManualSetupCodeWithLongDiscriminator),
513 NL_TEST_DEF("Test Decimal Representation - All Zeros", TestDecimalRepresentation_AllZeros),
514 NL_TEST_DEF("Test Decimal Representation - All Ones", TestDecimalRepresentation_AllOnes),
515 NL_TEST_DEF("Parse from Partial Payload", TestPayloadParser_PartialPayload),
516 NL_TEST_DEF("Parse from Full Payload", TestPayloadParser_FullPayload),
517 NL_TEST_DEF("Test Invalid Entry To QR Code Parser", TestPayloadParser_InvalidEntry),
518 NL_TEST_DEF("Test Short Read Write", TestShortCodeReadWrite),
519 NL_TEST_DEF("Test Long Read Write", TestLongCodeReadWrite),
520 NL_TEST_DEF("Check Decimal String Validity", TestCheckDecimalStringValidity),
521 NL_TEST_DEF("Check QR Code Length Validity", TestCheckCodeLengthValidity),
522 NL_TEST_DEF("Test Decimal String to Number", TestDecimalStringToNumber),
523 NL_TEST_DEF("Test Short Code Character Lengths", TestShortCodeCharLengths),
524 NL_TEST_DEF("Test Read Characters from Decimal String", TestReadCharsFromDecimalString),
525 NL_TEST_DEF("Generate Full Payload and Parse it", TestGenerateAndParser_FullPayload),
526 NL_TEST_DEF("Generate Partial Payload and Parse it", TestGenerateAndParser_PartialPayload),
534 nlTestSuite * mSuite;
542 int TestManualSetupCode()
545 nlTestSuite theSuite =
547 "chip-manual-code-general-Tests",
555 context.mSuite = &theSuite;
557 // Generate machine-readable, comma-separated value (CSV) output.
558 nl_test_set_output_style(OUTPUT_CSV);
560 // Run Test suit against one context
561 nlTestRunner(&theSuite, &context);
563 return nlTestRunnerStats(&theSuite);
566 CHIP_REGISTER_TEST_SUITE(TestManualSetupCode);