blob: 8625fe2c8fbe09d9c79d884dfcbd75b7b86f2e30 [file] [log] [blame]
Laurence Lundblade2ded3d92018-10-09 21:36:11 +08001/*==============================================================================
2Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
3
4Redistribution and use in source and binary forms, with or without
5modification, are permitted provided that the following conditions are
6met:
7 * Redistributions of source code must retain the above copyright
8 notice, this list of conditions and the following disclaimer.
9 * Redistributions in binary form must reproduce the above
10 copyright notice, this list of conditions and the following
11 disclaimer in the documentation and/or other materials provided
12 with the distribution.
13 * Neither the name of The Linux Foundation nor the names of its
14 contributors may be used to endorse or promote products derived
15 from this software without specific prior written permission.
16
17THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28==============================================================================*/
29
30#ifndef __QCBOR__qcbor_encode_tests__
31#define __QCBOR__qcbor_encode_tests__
32
33#include "qcbor.h"
34
35
36/*
37 Notes:
38
39 - All the functions in qcbor.h are called once in the aggregation of all the tests below.
40
41 - All the types that are supported are given as input and parsed by these tests
42
43 - There is some hostile input such as invalid lengths and CBOR too complex
44 and types this parser doesn't handle
45
46 */
47
48
49/*
Laurence Lundblade4d1ecba2018-10-12 21:22:30 +080050 Most basic test.
51 */
52int basic_encode_test(void);
53
54
55/*
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080056 Encode lots of integer values, particularly around the boundary and make sure they
57 Match the expected binary output. Primarily an encoding test.
58 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +053059int IntegerValuesTest1(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +080060
61
62
63/*
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
98
99/*
100 Encodes a goodly number of floats and doubles and checks encoding is right
101 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +0530102int FloatValuesTest1(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +0800103
104
105/*
106 Encodes true, false and the like
107 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +0530108int SimpleValuesTest1(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +0800109
110
111/*
112 Encodes most data formats that are supported */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +0530113int EncodeDateTest(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +0800114
115
116/*
117 Encodes particular data structure that a particular app will need...
118 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +0530119int RTICResultsTest(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +0800120
121
122/*
123 Calls all public encode methods in qcbor.h once.
124 */
Laurence Lundbladedc6e28e2018-10-11 19:19:27 +0530125int AllAddMethodsTest(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +0800126
127/*
128 The binary string wrapping of maps and arrays used by COSE
129 */
Laurence Lundblade684aec22018-10-12 19:33:53 +0800130int bstrwraptest(void);
131
132int bstr_wrap_error_test(void);
133
134int bstr_wrap_nest_test(void);
135
136int cose_sign1_tbs_test(void);
Laurence Lundblade2ded3d92018-10-09 21:36:11 +0800137
138
139
140#endif /* defined(__QCBOR__qcbor_encode_tests__) */