blob: 790928834a0d6634f86261329af7184dd8f654e6 [file] [log] [blame]
Laurence Lundblade2ded3d92018-10-09 21:36:11 +08001/*==============================================================================
Laurence Lundbladed92a6162018-11-01 11:38:35 +07002 Copyright (c) 2016-2018, The Linux Foundation.
Laurence Lundbladef0ea5f32019-01-11 20:10:26 -08003 Copyright (c) 2018-2019, Laurence Lundblade.
Laurence Lundbladed92a6162018-11-01 11:38:35 +07004 All rights reserved.
Laurence Lundblade3aee3a32018-12-17 16:17:45 -08005
Laurence Lundblade0dbc9172018-11-01 14:17:21 +07006Redistribution and use in source and binary forms, with or without
7modification, are permitted provided that the following conditions are
8met:
9 * Redistributions of source code must retain the above copyright
10 notice, this list of conditions and the following disclaimer.
11 * Redistributions in binary form must reproduce the above
12 copyright notice, this list of conditions and the following
13 disclaimer in the documentation and/or other materials provided
14 with the distribution.
15 * Neither the name of The Linux Foundation nor the names of its
16 contributors, nor the name "Laurence Lundblade" may be used to
17 endorse or promote products derived from this software without
18 specific prior written permission.
Laurence Lundblade3aee3a32018-12-17 16:17:45 -080019
Laurence Lundblade0dbc9172018-11-01 14:17:21 +070020THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
21WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
22MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
23ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
24BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
27BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
29OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
30IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Laurence Lundbladed92a6162018-11-01 11:38:35 +070031 ==============================================================================*/
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080032
33#ifndef __QCBOR__qcbor_encode_tests__
34#define __QCBOR__qcbor_encode_tests__
35
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080036
Laurence Lundblade3aee3a32018-12-17 16:17:45 -080037/*
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080038 Notes:
Laurence Lundblade3aee3a32018-12-17 16:17:45 -080039
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080040 - All the functions in qcbor.h are called once in the aggregation of all the tests below.
Laurence Lundblade3aee3a32018-12-17 16:17:45 -080041
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080042 - All the types that are supported are given as input and parsed by these tests
Laurence Lundblade3aee3a32018-12-17 16:17:45 -080043
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080044 - There is some hostile input such as invalid lengths and CBOR too complex
45 and types this parser doesn't handle
Laurence Lundblade3aee3a32018-12-17 16:17:45 -080046
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080047 */
48
49
50/*
Laurence Lundblade4d1ecba2018-10-12 21:22:30 +080051 Most basic test.
52 */
Laurence Lundblade369b90a2018-10-22 02:04:37 +053053int BasicEncodeTest(void);
Laurence Lundblade4d1ecba2018-10-12 21:22:30 +080054
55
56/*
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080057 Encode lots of integer values, particularly around the boundary and make sure they
58 Match the expected binary output. Primarily an encoding test.
59 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +053060int IntegerValuesTest1(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080061
62
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080063/*
64 Create nested arrays to the max depth allowed and make sure it succeeds.
65 This is an encoding test.
66 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +053067int ArrayNestingTest1(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080068
69
70/*
71 Create nested arrays to one more than the meax depth and make sure it fails.
72 This is an encoding test.
73 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +053074int ArrayNestingTest2(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080075
76
77/*
78 Encoding test.
79 Create arrays to max depth and close one extra time and look for correct error code
80 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +053081int ArrayNestingTest3(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080082
83
84/*
85 This tests the QCBOREncode_AddRaw() function by adding two chunks or RAWCBOR to an
86 array and comparing with expected values. This is an encoding test.
87 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +053088int EncodeRawTest(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080089
90
91/*
92 This creates a somewhat complicated CBOR MAP and verifies it against expected
93 data. This is an encoding test.
94 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +053095int MapEncodeTest(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080096
97
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080098/*
99 Encodes a goodly number of floats and doubles and checks encoding is right
100 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +0530101int FloatValuesTest1(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +0800102
103
104/*
105 Encodes true, false and the like
106 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +0530107int SimpleValuesTest1(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +0800108
109
110/*
Jan Jongboom47d86c52019-07-25 08:54:16 +0200111 Encodes basic maps and arrays with indefinite length
112 */
113int SimpleValuesIndefiniteLengthTest1(void);
114
Jan Jongboom5d827882019-08-07 12:51:15 +0200115/*
116 Indefinite length arrays and maps use the 'magic' number 31, verify that
117 everything with length 31 still works properly
118 */
119int EncodeLengthThirtyoneTest(void);
120
Jan Jongboom47d86c52019-07-25 08:54:16 +0200121
122/*
Laurence Lundblade2ded3d92018-10-09 21:36:11 +0800123 Encodes most data formats that are supported */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +0530124int EncodeDateTest(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +0800125
126
127/*
128 Encodes particular data structure that a particular app will need...
129 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +0530130int RTICResultsTest(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +0800131
132
133/*
134 Calls all public encode methods in qcbor.h once.
135 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +0530136int AllAddMethodsTest(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +0800137
138/*
139 The binary string wrapping of maps and arrays used by COSE
140 */
Laurence Lundblade369b90a2018-10-22 02:04:37 +0530141int BstrWrapTest(void);
Laurence Lundblade684aec22018-10-12 19:33:53 +0800142
Laurence Lundbladea65b4822019-09-08 12:17:03 -0700143
144/*
145 Test error cases for bstr wrapping encoding such as closing an open
146 array with CloseBstrWrap
147 */
Laurence Lundblade369b90a2018-10-22 02:04:37 +0530148int BstrWrapErrorTest(void);
Laurence Lundblade684aec22018-10-12 19:33:53 +0800149
Laurence Lundbladea65b4822019-09-08 12:17:03 -0700150
151/*
152 Test complicated nested bstr wrapping
153 */
Laurence Lundblade369b90a2018-10-22 02:04:37 +0530154int BstrWrapNestTest(void);
Laurence Lundblade684aec22018-10-12 19:33:53 +0800155
Laurence Lundbladea65b4822019-09-08 12:17:03 -0700156
157/*
158 Test encoding a COSE_Sign1 with bstr wrapping
159 */
Laurence Lundblade369b90a2018-10-22 02:04:37 +0530160int CoseSign1TBSTest(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +0800161
Laurence Lundblade1ef8b2d2018-12-14 23:13:34 -0800162
Laurence Lundbladea65b4822019-09-08 12:17:03 -0700163/*
164 Test the error cases when encoding CBOR such as buffer too large,
165 buffer too small, array nesting too deep. Aims to cover the error
166 codes returned when encoding CBOR
167 */
168int EncodeErrorTests(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +0800169
170
171#endif /* defined(__QCBOR__qcbor_encode_tests__) */