1*758e9fbaSOystein Eftevaag /*
2*758e9fbaSOystein Eftevaag * SPDX-License-Identifier: BSD-2-Clause
3*758e9fbaSOystein Eftevaag * Copyright 2019, Intel Corporation
4*758e9fbaSOystein Eftevaag */
5*758e9fbaSOystein Eftevaag
6*758e9fbaSOystein Eftevaag #ifdef HAVE_CONFIG_H
7*758e9fbaSOystein Eftevaag #include <config.h>
8*758e9fbaSOystein Eftevaag #endif
9*758e9fbaSOystein Eftevaag
10*758e9fbaSOystein Eftevaag #include <limits.h>
11*758e9fbaSOystein Eftevaag #include <stdio.h>
12*758e9fbaSOystein Eftevaag #include <stddef.h>
13*758e9fbaSOystein Eftevaag #include <stdlib.h>
14*758e9fbaSOystein Eftevaag #include <string.h>
15*758e9fbaSOystein Eftevaag
16*758e9fbaSOystein Eftevaag #include <setjmp.h>
17*758e9fbaSOystein Eftevaag #include <cmocka.h>
18*758e9fbaSOystein Eftevaag
19*758e9fbaSOystein Eftevaag #include "tss2_tctildr.h"
20*758e9fbaSOystein Eftevaag #include "tss2_tcti.h"
21*758e9fbaSOystein Eftevaag #include "tss2-tcti/tctildr.h"
22*758e9fbaSOystein Eftevaag
23*758e9fbaSOystein Eftevaag static TSS2_TCTI_CONTEXT_COMMON_V2 tcti_ctx = { 0, };
24*758e9fbaSOystein Eftevaag static TSS2_TCTILDR_CONTEXT tctildr_ctx = { 0, };
25*758e9fbaSOystein Eftevaag
26*758e9fbaSOystein Eftevaag TSS2_RC
local_init(TSS2_TCTI_CONTEXT * tctiContext,size_t * size,const char * config)27*758e9fbaSOystein Eftevaag local_init (
28*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tctiContext,
29*758e9fbaSOystein Eftevaag size_t *size,
30*758e9fbaSOystein Eftevaag const char *config)
31*758e9fbaSOystein Eftevaag {
32*758e9fbaSOystein Eftevaag *size = mock_type (size_t);
33*758e9fbaSOystein Eftevaag return mock_type (TSS2_RC);
34*758e9fbaSOystein Eftevaag }
35*758e9fbaSOystein Eftevaag
36*758e9fbaSOystein Eftevaag void
tcti_from_init_null_init(void ** state)37*758e9fbaSOystein Eftevaag tcti_from_init_null_init (void **state)
38*758e9fbaSOystein Eftevaag {
39*758e9fbaSOystein Eftevaag TSS2_RC rc = tcti_from_init (NULL, NULL, NULL);
40*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_BAD_REFERENCE);
41*758e9fbaSOystein Eftevaag }
42*758e9fbaSOystein Eftevaag
43*758e9fbaSOystein Eftevaag #define TEST_MAGIC_SIZE (size_t)5513444
44*758e9fbaSOystein Eftevaag #define TEST_INIT_RC_FAIL (TSS2_RC)0x6134
45*758e9fbaSOystein Eftevaag void
tcti_from_init_init_fail(void ** state)46*758e9fbaSOystein Eftevaag tcti_from_init_init_fail (void **state)
47*758e9fbaSOystein Eftevaag {
48*758e9fbaSOystein Eftevaag will_return(local_init, TEST_MAGIC_SIZE);
49*758e9fbaSOystein Eftevaag will_return(local_init, TEST_INIT_RC_FAIL);
50*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti_ctx = NULL;
51*758e9fbaSOystein Eftevaag TSS2_RC rc = tcti_from_init (local_init, NULL, &tcti_ctx);
52*758e9fbaSOystein Eftevaag assert_int_equal (rc, TEST_INIT_RC_FAIL);
53*758e9fbaSOystein Eftevaag }
54*758e9fbaSOystein Eftevaag
55*758e9fbaSOystein Eftevaag void* __real_calloc (size_t nmemb, size_t size);
56*758e9fbaSOystein Eftevaag void*
__wrap_calloc(size_t nmemb,size_t size)57*758e9fbaSOystein Eftevaag __wrap_calloc (size_t nmemb, size_t size)
58*758e9fbaSOystein Eftevaag {
59*758e9fbaSOystein Eftevaag if (size == TEST_MAGIC_SIZE || size == sizeof (TSS2_TCTILDR_CONTEXT))
60*758e9fbaSOystein Eftevaag return mock_type (void*);
61*758e9fbaSOystein Eftevaag else
62*758e9fbaSOystein Eftevaag return __real_calloc (nmemb, size);
63*758e9fbaSOystein Eftevaag }
64*758e9fbaSOystein Eftevaag void __real_free (void *ptr);
65*758e9fbaSOystein Eftevaag void
__wrap_free(void * ptr)66*758e9fbaSOystein Eftevaag __wrap_free (void *ptr)
67*758e9fbaSOystein Eftevaag {
68*758e9fbaSOystein Eftevaag if (ptr != &tcti_ctx && ptr != &tctildr_ctx)
69*758e9fbaSOystein Eftevaag __real_free (ptr);
70*758e9fbaSOystein Eftevaag return;
71*758e9fbaSOystein Eftevaag }
72*758e9fbaSOystein Eftevaag TSS2_RC
__wrap_tctildr_get_info(const char * name,const TSS2_TCTI_INFO ** info,void ** data)73*758e9fbaSOystein Eftevaag __wrap_tctildr_get_info (const char *name,
74*758e9fbaSOystein Eftevaag const TSS2_TCTI_INFO **info,
75*758e9fbaSOystein Eftevaag void **data)
76*758e9fbaSOystein Eftevaag {
77*758e9fbaSOystein Eftevaag return TSS2_RC_SUCCESS;
78*758e9fbaSOystein Eftevaag }
79*758e9fbaSOystein Eftevaag TSS2_RC
__wrap_tctildr_get_tcti(const char * name,const char * conf,TSS2_TCTI_CONTEXT ** tcti,void ** data)80*758e9fbaSOystein Eftevaag __wrap_tctildr_get_tcti (const char *name,
81*758e9fbaSOystein Eftevaag const char* conf,
82*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT **tcti,
83*758e9fbaSOystein Eftevaag void **data)
84*758e9fbaSOystein Eftevaag {
85*758e9fbaSOystein Eftevaag TSS2_RC rc = mock_type (TSS2_RC);
86*758e9fbaSOystein Eftevaag if (rc == TSS2_RC_SUCCESS) {
87*758e9fbaSOystein Eftevaag *tcti= mock_type (TSS2_TCTI_CONTEXT*);
88*758e9fbaSOystein Eftevaag *data = mock_type (void*);
89*758e9fbaSOystein Eftevaag }
90*758e9fbaSOystein Eftevaag return rc;
91*758e9fbaSOystein Eftevaag }
__wrap_tctildr_finalize_data(void ** data)92*758e9fbaSOystein Eftevaag void __wrap_tctildr_finalize_data (void **data){}
93*758e9fbaSOystein Eftevaag
94*758e9fbaSOystein Eftevaag void
tcti_from_init_calloc_fail(void ** state)95*758e9fbaSOystein Eftevaag tcti_from_init_calloc_fail (void **state)
96*758e9fbaSOystein Eftevaag {
97*758e9fbaSOystein Eftevaag will_return(local_init, TEST_MAGIC_SIZE);
98*758e9fbaSOystein Eftevaag will_return(local_init, TSS2_RC_SUCCESS);
99*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti_ctx = NULL;
100*758e9fbaSOystein Eftevaag will_return(__wrap_calloc, NULL);
101*758e9fbaSOystein Eftevaag TSS2_RC rc = tcti_from_init (local_init, NULL, &tcti_ctx);
102*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_ESYS_RC_MEMORY);
103*758e9fbaSOystein Eftevaag }
104*758e9fbaSOystein Eftevaag void
tcti_from_init_second_init_fail(void ** state)105*758e9fbaSOystein Eftevaag tcti_from_init_second_init_fail (void **state)
106*758e9fbaSOystein Eftevaag {
107*758e9fbaSOystein Eftevaag will_return(local_init, TEST_MAGIC_SIZE);
108*758e9fbaSOystein Eftevaag will_return(local_init, TSS2_RC_SUCCESS);
109*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti_ctx_ptr = NULL;
110*758e9fbaSOystein Eftevaag will_return(__wrap_calloc, &tcti_ctx);
111*758e9fbaSOystein Eftevaag will_return(local_init, TEST_MAGIC_SIZE);
112*758e9fbaSOystein Eftevaag will_return(local_init, TEST_INIT_RC_FAIL);
113*758e9fbaSOystein Eftevaag TSS2_RC rc = tcti_from_init (local_init, NULL, &tcti_ctx_ptr);
114*758e9fbaSOystein Eftevaag assert_int_equal (rc, TEST_INIT_RC_FAIL);
115*758e9fbaSOystein Eftevaag }
116*758e9fbaSOystein Eftevaag
117*758e9fbaSOystein Eftevaag void
tcti_from_init_success(void ** state)118*758e9fbaSOystein Eftevaag tcti_from_init_success (void **state)
119*758e9fbaSOystein Eftevaag {
120*758e9fbaSOystein Eftevaag will_return(local_init, TEST_MAGIC_SIZE);
121*758e9fbaSOystein Eftevaag will_return(local_init, TSS2_RC_SUCCESS);
122*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti_ctx_ptr = NULL;
123*758e9fbaSOystein Eftevaag will_return(__wrap_calloc, &tcti_ctx);
124*758e9fbaSOystein Eftevaag will_return(local_init, TEST_MAGIC_SIZE);
125*758e9fbaSOystein Eftevaag will_return(local_init, TSS2_RC_SUCCESS);
126*758e9fbaSOystein Eftevaag TSS2_RC rc = tcti_from_init (local_init, NULL, &tcti_ctx_ptr);
127*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_RC_SUCCESS);
128*758e9fbaSOystein Eftevaag }
129*758e9fbaSOystein Eftevaag TSS2_TCTI_INFO info = { .init = local_init, };
130*758e9fbaSOystein Eftevaag const TSS2_TCTI_INFO*
local_info(void)131*758e9fbaSOystein Eftevaag local_info (void)
132*758e9fbaSOystein Eftevaag {
133*758e9fbaSOystein Eftevaag return mock_type (const TSS2_TCTI_INFO*);
134*758e9fbaSOystein Eftevaag }
135*758e9fbaSOystein Eftevaag void
tcti_from_info_info_null(void ** state)136*758e9fbaSOystein Eftevaag tcti_from_info_info_null (void **state)
137*758e9fbaSOystein Eftevaag {
138*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti_ctx_ptr = NULL;
139*758e9fbaSOystein Eftevaag
140*758e9fbaSOystein Eftevaag will_return (local_info, NULL);
141*758e9fbaSOystein Eftevaag TSS2_RC rc = tcti_from_info (local_info, NULL, &tcti_ctx_ptr);
142*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_ESYS_RC_GENERAL_FAILURE);
143*758e9fbaSOystein Eftevaag }
144*758e9fbaSOystein Eftevaag void
tcti_from_info_info_fail(void ** state)145*758e9fbaSOystein Eftevaag tcti_from_info_info_fail (void **state)
146*758e9fbaSOystein Eftevaag {
147*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti_ctx_ptr = NULL;
148*758e9fbaSOystein Eftevaag
149*758e9fbaSOystein Eftevaag will_return (local_info, &info);
150*758e9fbaSOystein Eftevaag will_return(local_init, TEST_MAGIC_SIZE);
151*758e9fbaSOystein Eftevaag will_return(local_init, TEST_INIT_RC_FAIL);
152*758e9fbaSOystein Eftevaag TSS2_RC rc = tcti_from_info (local_info, NULL, &tcti_ctx_ptr);
153*758e9fbaSOystein Eftevaag assert_int_equal (rc, TEST_INIT_RC_FAIL);
154*758e9fbaSOystein Eftevaag }
155*758e9fbaSOystein Eftevaag void
tcti_from_info_success(void ** state)156*758e9fbaSOystein Eftevaag tcti_from_info_success (void **state)
157*758e9fbaSOystein Eftevaag {
158*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti_ctx_ptr = NULL;
159*758e9fbaSOystein Eftevaag
160*758e9fbaSOystein Eftevaag will_return (local_info, &info);
161*758e9fbaSOystein Eftevaag will_return(local_init, TEST_MAGIC_SIZE);
162*758e9fbaSOystein Eftevaag will_return(local_init, TSS2_RC_SUCCESS);
163*758e9fbaSOystein Eftevaag will_return(__wrap_calloc, &tcti_ctx);
164*758e9fbaSOystein Eftevaag will_return(local_init, TEST_MAGIC_SIZE);
165*758e9fbaSOystein Eftevaag will_return(local_init, TSS2_RC_SUCCESS);
166*758e9fbaSOystein Eftevaag TSS2_RC rc = tcti_from_info (local_info, NULL, &tcti_ctx_ptr);
167*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_RC_SUCCESS);
168*758e9fbaSOystein Eftevaag }
169*758e9fbaSOystein Eftevaag void
test_conf_parse_null(void ** state)170*758e9fbaSOystein Eftevaag test_conf_parse_null (void **state)
171*758e9fbaSOystein Eftevaag {
172*758e9fbaSOystein Eftevaag TSS2_RC rc = tctildr_conf_parse (NULL, NULL, NULL);
173*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_BAD_REFERENCE);
174*758e9fbaSOystein Eftevaag }
175*758e9fbaSOystein Eftevaag
176*758e9fbaSOystein Eftevaag void
test_conf_parse_bad_length(void ** state)177*758e9fbaSOystein Eftevaag test_conf_parse_bad_length (void **state)
178*758e9fbaSOystein Eftevaag {
179*758e9fbaSOystein Eftevaag char name_buf[0], conf_buf[0];
180*758e9fbaSOystein Eftevaag char name[PATH_MAX+1];
181*758e9fbaSOystein Eftevaag memset(&name[0], 'a', sizeof(name));
182*758e9fbaSOystein Eftevaag name[PATH_MAX] = '\0';
183*758e9fbaSOystein Eftevaag TSS2_RC rc = tctildr_conf_parse (name, name_buf, conf_buf);
184*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_BAD_VALUE);
185*758e9fbaSOystein Eftevaag }
186*758e9fbaSOystein Eftevaag void
test_conf_parse_empty_str(void ** state)187*758e9fbaSOystein Eftevaag test_conf_parse_empty_str (void **state)
188*758e9fbaSOystein Eftevaag {
189*758e9fbaSOystein Eftevaag char name_buf[0], conf_buf[0];
190*758e9fbaSOystein Eftevaag TSS2_RC rc = tctildr_conf_parse ("", name_buf, conf_buf);
191*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_RC_SUCCESS);
192*758e9fbaSOystein Eftevaag }
193*758e9fbaSOystein Eftevaag void
test_conf_parse_no_colon(void ** state)194*758e9fbaSOystein Eftevaag test_conf_parse_no_colon (void **state)
195*758e9fbaSOystein Eftevaag {
196*758e9fbaSOystein Eftevaag char name_buf[50] = { 0, }, conf_buf[50] = { 0, };
197*758e9fbaSOystein Eftevaag TSS2_RC rc = tctildr_conf_parse ("foo", name_buf, conf_buf);
198*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_RC_SUCCESS);
199*758e9fbaSOystein Eftevaag }
200*758e9fbaSOystein Eftevaag void
test_conf_parse_name_colon(void ** state)201*758e9fbaSOystein Eftevaag test_conf_parse_name_colon (void **state)
202*758e9fbaSOystein Eftevaag {
203*758e9fbaSOystein Eftevaag char name_buf[50] = { 0, }, conf_buf[50] = { 0, };
204*758e9fbaSOystein Eftevaag TSS2_RC rc = tctildr_conf_parse ("foo:", name_buf, conf_buf);
205*758e9fbaSOystein Eftevaag assert_string_equal (name_buf, "foo");
206*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_RC_SUCCESS);
207*758e9fbaSOystein Eftevaag }
208*758e9fbaSOystein Eftevaag void
test_conf_parse_name_colon_conf(void ** state)209*758e9fbaSOystein Eftevaag test_conf_parse_name_colon_conf (void **state)
210*758e9fbaSOystein Eftevaag {
211*758e9fbaSOystein Eftevaag char name_buf[50] = { 0, }, conf_buf[50] = { 0, };
212*758e9fbaSOystein Eftevaag TSS2_RC rc = tctildr_conf_parse ("foo:bar", name_buf, conf_buf);
213*758e9fbaSOystein Eftevaag assert_string_equal (name_buf, "foo");
214*758e9fbaSOystein Eftevaag assert_string_equal (conf_buf, "bar");
215*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_RC_SUCCESS);
216*758e9fbaSOystein Eftevaag }
217*758e9fbaSOystein Eftevaag /* tctildr init begin */
218*758e9fbaSOystein Eftevaag static void
tctildr_init_ex_null_test(void ** state)219*758e9fbaSOystein Eftevaag tctildr_init_ex_null_test (void **state)
220*758e9fbaSOystein Eftevaag {
221*758e9fbaSOystein Eftevaag TSS2_RC rc;
222*758e9fbaSOystein Eftevaag
223*758e9fbaSOystein Eftevaag rc = Tss2_TctiLdr_Initialize_Ex (NULL, NULL, NULL);
224*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_BAD_VALUE);
225*758e9fbaSOystein Eftevaag }
226*758e9fbaSOystein Eftevaag static void
tctildr_init_null_test(void ** state)227*758e9fbaSOystein Eftevaag tctildr_init_null_test (void **state)
228*758e9fbaSOystein Eftevaag {
229*758e9fbaSOystein Eftevaag TSS2_RC rc;
230*758e9fbaSOystein Eftevaag
231*758e9fbaSOystein Eftevaag rc = Tss2_TctiLdr_Initialize (NULL, NULL);
232*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_BAD_VALUE);
233*758e9fbaSOystein Eftevaag }
234*758e9fbaSOystein Eftevaag static void
tctildr_init_conf_fail_test(void ** state)235*758e9fbaSOystein Eftevaag tctildr_init_conf_fail_test (void **state)
236*758e9fbaSOystein Eftevaag {
237*758e9fbaSOystein Eftevaag TSS2_RC rc;
238*758e9fbaSOystein Eftevaag char name[PATH_MAX+1];
239*758e9fbaSOystein Eftevaag memset(&name[0], 'a', sizeof(name));
240*758e9fbaSOystein Eftevaag name[PATH_MAX] = '\0';
241*758e9fbaSOystein Eftevaag rc = Tss2_TctiLdr_Initialize (name, NULL);
242*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_BAD_VALUE);
243*758e9fbaSOystein Eftevaag }
244*758e9fbaSOystein Eftevaag static void
tctildr_init_ex_default_fail(void ** state)245*758e9fbaSOystein Eftevaag tctildr_init_ex_default_fail (void **state)
246*758e9fbaSOystein Eftevaag {
247*758e9fbaSOystein Eftevaag TSS2_RC rc;
248*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *context;
249*758e9fbaSOystein Eftevaag
250*758e9fbaSOystein Eftevaag will_return (__wrap_tctildr_get_tcti, TSS2_TCTI_RC_BAD_REFERENCE);
251*758e9fbaSOystein Eftevaag rc = Tss2_TctiLdr_Initialize_Ex (NULL, NULL, &context);
252*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_BAD_REFERENCE);
253*758e9fbaSOystein Eftevaag }
254*758e9fbaSOystein Eftevaag static void
tctildr_init_ex_from_file_fail(void ** state)255*758e9fbaSOystein Eftevaag tctildr_init_ex_from_file_fail (void **state)
256*758e9fbaSOystein Eftevaag {
257*758e9fbaSOystein Eftevaag TSS2_RC rc;
258*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *context;
259*758e9fbaSOystein Eftevaag
260*758e9fbaSOystein Eftevaag will_return (__wrap_tctildr_get_tcti, TSS2_TCTI_RC_BAD_REFERENCE);
261*758e9fbaSOystein Eftevaag rc = Tss2_TctiLdr_Initialize_Ex ("foo", NULL, &context);
262*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_BAD_REFERENCE);
263*758e9fbaSOystein Eftevaag }
264*758e9fbaSOystein Eftevaag #define TEST_TCTI_HANDLE (TSS2_TCTI_LIBRARY_HANDLE)0x9827635
265*758e9fbaSOystein Eftevaag static void
tctildr_init_ex_calloc_fail_test(void ** state)266*758e9fbaSOystein Eftevaag tctildr_init_ex_calloc_fail_test (void **state)
267*758e9fbaSOystein Eftevaag {
268*758e9fbaSOystein Eftevaag TSS2_RC rc;
269*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *ctx;
270*758e9fbaSOystein Eftevaag
271*758e9fbaSOystein Eftevaag will_return (__wrap_tctildr_get_tcti, TSS2_RC_SUCCESS);
272*758e9fbaSOystein Eftevaag will_return (__wrap_tctildr_get_tcti, &tcti_ctx);
273*758e9fbaSOystein Eftevaag will_return (__wrap_tctildr_get_tcti, TEST_TCTI_HANDLE);
274*758e9fbaSOystein Eftevaag will_return (__wrap_calloc, NULL);
275*758e9fbaSOystein Eftevaag
276*758e9fbaSOystein Eftevaag rc = Tss2_TctiLdr_Initialize_Ex (NULL, NULL, &ctx);
277*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_MEMORY);
278*758e9fbaSOystein Eftevaag }
279*758e9fbaSOystein Eftevaag static void
tctildr_init_ex_success_test(void ** state)280*758e9fbaSOystein Eftevaag tctildr_init_ex_success_test (void **state)
281*758e9fbaSOystein Eftevaag {
282*758e9fbaSOystein Eftevaag TSS2_RC rc;
283*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *ctx;
284*758e9fbaSOystein Eftevaag
285*758e9fbaSOystein Eftevaag will_return (__wrap_tctildr_get_tcti, TSS2_RC_SUCCESS);
286*758e9fbaSOystein Eftevaag will_return (__wrap_tctildr_get_tcti, &tcti_ctx);
287*758e9fbaSOystein Eftevaag will_return (__wrap_tctildr_get_tcti, TEST_TCTI_HANDLE);
288*758e9fbaSOystein Eftevaag will_return (__wrap_calloc, &tctildr_ctx);
289*758e9fbaSOystein Eftevaag
290*758e9fbaSOystein Eftevaag rc = Tss2_TctiLdr_Initialize_Ex (NULL, NULL, &ctx);
291*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_RC_SUCCESS);
292*758e9fbaSOystein Eftevaag }
293*758e9fbaSOystein Eftevaag static void
tctildr_finalize_null_ref_test(void ** state)294*758e9fbaSOystein Eftevaag tctildr_finalize_null_ref_test (void **state)
295*758e9fbaSOystein Eftevaag {
296*758e9fbaSOystein Eftevaag Tss2_TctiLdr_Finalize (NULL);
297*758e9fbaSOystein Eftevaag assert_int_equal (1, 1);
298*758e9fbaSOystein Eftevaag }
299*758e9fbaSOystein Eftevaag static void
tctildr_finalize_null_ctx_test(void ** state)300*758e9fbaSOystein Eftevaag tctildr_finalize_null_ctx_test (void **state)
301*758e9fbaSOystein Eftevaag {
302*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *ctx = NULL;
303*758e9fbaSOystein Eftevaag Tss2_TctiLdr_Finalize (&ctx);
304*758e9fbaSOystein Eftevaag assert_int_equal (1, 1);
305*758e9fbaSOystein Eftevaag }
306*758e9fbaSOystein Eftevaag static void
tctildr_finalize_test(void ** state)307*758e9fbaSOystein Eftevaag tctildr_finalize_test (void **state)
308*758e9fbaSOystein Eftevaag {
309*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *ctx = (TSS2_TCTI_CONTEXT*)&tctildr_ctx;
310*758e9fbaSOystein Eftevaag
311*758e9fbaSOystein Eftevaag TSS2_TCTI_VERSION(&tctildr_ctx) = 3;
312*758e9fbaSOystein Eftevaag tctildr_ctx.library_handle = TEST_TCTI_HANDLE;
313*758e9fbaSOystein Eftevaag TSS2_TCTI_MAGIC(&tctildr_ctx) = TCTILDR_MAGIC;
314*758e9fbaSOystein Eftevaag tctildr_ctx.tcti = (TSS2_TCTI_CONTEXT*)&tcti_ctx;
315*758e9fbaSOystein Eftevaag Tss2_TctiLdr_Finalize (&ctx);
316*758e9fbaSOystein Eftevaag assert_null (ctx);
317*758e9fbaSOystein Eftevaag }
318*758e9fbaSOystein Eftevaag /* tctildr init end */
319*758e9fbaSOystein Eftevaag int
main(void)320*758e9fbaSOystein Eftevaag main(void)
321*758e9fbaSOystein Eftevaag {
322*758e9fbaSOystein Eftevaag const struct CMUnitTest tests[] = {
323*758e9fbaSOystein Eftevaag cmocka_unit_test(tcti_from_init_null_init),
324*758e9fbaSOystein Eftevaag cmocka_unit_test(tcti_from_init_init_fail),
325*758e9fbaSOystein Eftevaag cmocka_unit_test(tcti_from_init_calloc_fail),
326*758e9fbaSOystein Eftevaag cmocka_unit_test(tcti_from_init_second_init_fail),
327*758e9fbaSOystein Eftevaag cmocka_unit_test(tcti_from_init_success),
328*758e9fbaSOystein Eftevaag cmocka_unit_test(tcti_from_info_info_null),
329*758e9fbaSOystein Eftevaag cmocka_unit_test(tcti_from_info_info_fail),
330*758e9fbaSOystein Eftevaag cmocka_unit_test(tcti_from_info_success),
331*758e9fbaSOystein Eftevaag cmocka_unit_test(test_conf_parse_null),
332*758e9fbaSOystein Eftevaag cmocka_unit_test(test_conf_parse_bad_length),
333*758e9fbaSOystein Eftevaag cmocka_unit_test(test_conf_parse_empty_str),
334*758e9fbaSOystein Eftevaag cmocka_unit_test(test_conf_parse_no_colon),
335*758e9fbaSOystein Eftevaag cmocka_unit_test(test_conf_parse_name_colon),
336*758e9fbaSOystein Eftevaag cmocka_unit_test(test_conf_parse_name_colon_conf),
337*758e9fbaSOystein Eftevaag cmocka_unit_test (tctildr_init_ex_null_test),
338*758e9fbaSOystein Eftevaag cmocka_unit_test (tctildr_init_null_test),
339*758e9fbaSOystein Eftevaag cmocka_unit_test (tctildr_init_conf_fail_test),
340*758e9fbaSOystein Eftevaag cmocka_unit_test (tctildr_init_ex_default_fail),
341*758e9fbaSOystein Eftevaag cmocka_unit_test (tctildr_init_ex_from_file_fail),
342*758e9fbaSOystein Eftevaag cmocka_unit_test (tctildr_init_ex_calloc_fail_test),
343*758e9fbaSOystein Eftevaag cmocka_unit_test (tctildr_init_ex_success_test),
344*758e9fbaSOystein Eftevaag cmocka_unit_test (tctildr_finalize_null_ref_test),
345*758e9fbaSOystein Eftevaag cmocka_unit_test (tctildr_finalize_null_ctx_test),
346*758e9fbaSOystein Eftevaag cmocka_unit_test (tctildr_finalize_test),
347*758e9fbaSOystein Eftevaag };
348*758e9fbaSOystein Eftevaag return cmocka_run_group_tests (tests, NULL, NULL);
349*758e9fbaSOystein Eftevaag }
350