Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
uamqp/deps/umock-c/src/umock_c.c@0:f7f1f0d76dd6, 2018-08-23 (annotated)
- Committer:
- XinZhangMS
- Date:
- Thu Aug 23 06:52:14 2018 +0000
- Revision:
- 0:f7f1f0d76dd6
azure-c-sdk for mbed os supporting NUCLEO_F767ZI
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
XinZhangMS | 0:f7f1f0d76dd6 | 1 | // Copyright (c) Microsoft. All rights reserved. |
XinZhangMS | 0:f7f1f0d76dd6 | 2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information. |
XinZhangMS | 0:f7f1f0d76dd6 | 3 | |
XinZhangMS | 0:f7f1f0d76dd6 | 4 | #include "umock_c.h" |
XinZhangMS | 0:f7f1f0d76dd6 | 5 | #include "umockcall.h" |
XinZhangMS | 0:f7f1f0d76dd6 | 6 | #include "umocktypes.h" |
XinZhangMS | 0:f7f1f0d76dd6 | 7 | #include "umocktypes_c.h" |
XinZhangMS | 0:f7f1f0d76dd6 | 8 | #include "umockcallrecorder.h" |
XinZhangMS | 0:f7f1f0d76dd6 | 9 | #include "umock_log.h" |
XinZhangMS | 0:f7f1f0d76dd6 | 10 | |
XinZhangMS | 0:f7f1f0d76dd6 | 11 | typedef enum UMOCK_C_STATE_TAG |
XinZhangMS | 0:f7f1f0d76dd6 | 12 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 13 | UMOCK_C_STATE_NOT_INITIALIZED, |
XinZhangMS | 0:f7f1f0d76dd6 | 14 | UMOCK_C_STATE_INITIALIZED |
XinZhangMS | 0:f7f1f0d76dd6 | 15 | } UMOCK_C_STATE; |
XinZhangMS | 0:f7f1f0d76dd6 | 16 | |
XinZhangMS | 0:f7f1f0d76dd6 | 17 | static ON_UMOCK_C_ERROR on_umock_c_error_function; |
XinZhangMS | 0:f7f1f0d76dd6 | 18 | static UMOCK_C_STATE umock_c_state = UMOCK_C_STATE_NOT_INITIALIZED; |
XinZhangMS | 0:f7f1f0d76dd6 | 19 | static UMOCKCALLRECORDER_HANDLE umock_call_recorder = NULL; |
XinZhangMS | 0:f7f1f0d76dd6 | 20 | |
XinZhangMS | 0:f7f1f0d76dd6 | 21 | int umock_c_init(ON_UMOCK_C_ERROR on_umock_c_error) |
XinZhangMS | 0:f7f1f0d76dd6 | 22 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 23 | int result; |
XinZhangMS | 0:f7f1f0d76dd6 | 24 | |
XinZhangMS | 0:f7f1f0d76dd6 | 25 | if (umock_c_state != UMOCK_C_STATE_NOT_INITIALIZED) |
XinZhangMS | 0:f7f1f0d76dd6 | 26 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 27 | /* Codes_SRS_UMOCK_C_01_007: [ umock_c_init when umock is already initialized shall fail and return a non-zero value. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 28 | UMOCK_LOG("umock_c: umock_c already initialized."); |
XinZhangMS | 0:f7f1f0d76dd6 | 29 | result = __LINE__; |
XinZhangMS | 0:f7f1f0d76dd6 | 30 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 31 | else |
XinZhangMS | 0:f7f1f0d76dd6 | 32 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 33 | /* Codes_SRS_UMOCK_C_LIB_01_144: [ Out of the box umock_c shall support the following types through the header umocktypes_c.h: ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 34 | /* Codes_SRS_UMOCK_C_LIB_01_028: [**char**] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 35 | /* Codes_SRS_UMOCK_C_LIB_01_029 : [**unsigned char**] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 36 | /* Codes_SRS_UMOCK_C_LIB_01_030 : [**short**] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 37 | /* Codes_SRS_UMOCK_C_LIB_01_031 : [**unsigned short**] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 38 | /* Codes_SRS_UMOCK_C_LIB_01_032 : [**int**] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 39 | /* Codes_SRS_UMOCK_C_LIB_01_033 : [**unsigned int**] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 40 | /* Codes_SRS_UMOCK_C_LIB_01_034 : [**long**] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 41 | /* Codes_SRS_UMOCK_C_LIB_01_035 : [**unsigned long**] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 42 | /* Codes_SRS_UMOCK_C_LIB_01_036 : [**long long**] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 43 | /* Codes_SRS_UMOCK_C_LIB_01_037 : [**unsigned long long**] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 44 | /* Codes_SRS_UMOCK_C_LIB_01_038 : [**float**] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 45 | /* Codes_SRS_UMOCK_C_LIB_01_039 : [**double**] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 46 | /* Codes_SRS_UMOCK_C_LIB_01_040 : [**long double**] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 47 | /* Codes_SRS_UMOCK_C_LIB_01_041 : [**size_t**] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 48 | /* Codes_SRS_UMOCK_C_LIB_01_151: [ void\* ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 49 | /* Codes_SRS_UMOCK_C_LIB_01_152: [ const void\* ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 50 | /* Codes_SRS_UMOCK_C_01_023: [ umock_c_init shall initialize the umock types by calling umocktypes_init. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 51 | if ((umocktypes_init() != 0) || |
XinZhangMS | 0:f7f1f0d76dd6 | 52 | /* Codes_SRS_UMOCK_C_01_002: [ umock_c_init shall register the C naive types by calling umocktypes_c_register_types. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 53 | (umocktypes_c_register_types() != 0)) |
XinZhangMS | 0:f7f1f0d76dd6 | 54 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 55 | /* Codes_SRS_UMOCK_C_01_005: [ If any of the calls fails, umock_c_init shall fail and return a non-zero value. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 56 | UMOCK_LOG("umock_c: Could not register standard C types with umock_c."); |
XinZhangMS | 0:f7f1f0d76dd6 | 57 | result = __LINE__; |
XinZhangMS | 0:f7f1f0d76dd6 | 58 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 59 | else |
XinZhangMS | 0:f7f1f0d76dd6 | 60 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 61 | /* Codes_SRS_UMOCK_C_01_003: [ umock_c_init shall create a call recorder by calling umockcallrecorder_create. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 62 | umock_call_recorder = umockcallrecorder_create(); |
XinZhangMS | 0:f7f1f0d76dd6 | 63 | if (umock_call_recorder == NULL) |
XinZhangMS | 0:f7f1f0d76dd6 | 64 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 65 | /* Codes_SRS_UMOCK_C_01_005: [ If any of the calls fails, umock_c_init shall fail and return a non-zero value. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 66 | UMOCK_LOG("umock_c: Could not create the call recorder."); |
XinZhangMS | 0:f7f1f0d76dd6 | 67 | result = __LINE__; |
XinZhangMS | 0:f7f1f0d76dd6 | 68 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 69 | else |
XinZhangMS | 0:f7f1f0d76dd6 | 70 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 71 | /* Codes_SRS_UMOCK_C_01_024: [ on_umock_c_error shall be optional. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 72 | /* Codes_SRS_UMOCK_C_01_006: [ The on_umock_c_error callback shall be stored to be used for later error callbacks. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 73 | on_umock_c_error_function = on_umock_c_error; |
XinZhangMS | 0:f7f1f0d76dd6 | 74 | |
XinZhangMS | 0:f7f1f0d76dd6 | 75 | /* Codes_SRS_UMOCK_C_01_001: [umock_c_init shall initialize the umock library.] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 76 | umock_c_state = UMOCK_C_STATE_INITIALIZED; |
XinZhangMS | 0:f7f1f0d76dd6 | 77 | |
XinZhangMS | 0:f7f1f0d76dd6 | 78 | /* Codes_SRS_UMOCK_C_01_004: [ On success, umock_c_init shall return 0. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 79 | result = 0; |
XinZhangMS | 0:f7f1f0d76dd6 | 80 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 81 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 82 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 83 | |
XinZhangMS | 0:f7f1f0d76dd6 | 84 | return result; |
XinZhangMS | 0:f7f1f0d76dd6 | 85 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 86 | |
XinZhangMS | 0:f7f1f0d76dd6 | 87 | void umock_c_deinit(void) |
XinZhangMS | 0:f7f1f0d76dd6 | 88 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 89 | /* Codes_SRS_UMOCK_C_LIB_01_012: [If umock_c was not initialized, umock_c_deinit shall do nothing.] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 90 | /* Codes_SRS_UMOCK_C_01_010: [ If the module is not initialized, umock_c_deinit shall do nothing. ] */ |
XinZhangMS | 0:f7f1f0d76dd6 | 91 | if (umock_c_state == UMOCK_C_STATE_INITIALIZED) |
XinZhangMS | 0:f7f1f0d76dd6 | 92 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 93 | /* Codes_SRS_UMOCK_C_01_009: [ umock_c_deinit shall free the call recorder created in umock_c_init. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 94 | umockcallrecorder_destroy(umock_call_recorder); |
XinZhangMS | 0:f7f1f0d76dd6 | 95 | umock_c_state = UMOCK_C_STATE_NOT_INITIALIZED; |
XinZhangMS | 0:f7f1f0d76dd6 | 96 | |
XinZhangMS | 0:f7f1f0d76dd6 | 97 | /* Codes_SRS_UMOCK_C_01_008: [ umock_c_deinit shall deinitialize the umock types by calling umocktypes_deinit. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 98 | umocktypes_deinit(); |
XinZhangMS | 0:f7f1f0d76dd6 | 99 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 100 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 101 | |
XinZhangMS | 0:f7f1f0d76dd6 | 102 | void umock_c_reset_all_calls(void) |
XinZhangMS | 0:f7f1f0d76dd6 | 103 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 104 | /* Codes_SRS_UMOCK_C_01_012: [ If the module is not initialized, umock_c_reset_all_calls shall do nothing. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 105 | if (umock_c_state == UMOCK_C_STATE_INITIALIZED) |
XinZhangMS | 0:f7f1f0d76dd6 | 106 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 107 | /* Codes_SRS_UMOCK_C_01_011: [ umock_c_reset_all_calls shall reset all calls by calling umockcallrecorder_reset_all_calls on the call recorder created in umock_c_init. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 108 | if (umockcallrecorder_reset_all_calls(umock_call_recorder) != 0) |
XinZhangMS | 0:f7f1f0d76dd6 | 109 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 110 | /* Codes_SRS_UMOCK_C_01_025: [ If the underlying umockcallrecorder_reset_all_calls fails, the on_umock_c_error callback shall be triggered with UMOCK_C_RESET_CALLS_ERROR. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 111 | umock_c_indicate_error(UMOCK_C_RESET_CALLS_ERROR); |
XinZhangMS | 0:f7f1f0d76dd6 | 112 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 113 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 114 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 115 | |
XinZhangMS | 0:f7f1f0d76dd6 | 116 | int umock_c_add_expected_call(UMOCKCALL_HANDLE mock_call) |
XinZhangMS | 0:f7f1f0d76dd6 | 117 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 118 | int result; |
XinZhangMS | 0:f7f1f0d76dd6 | 119 | |
XinZhangMS | 0:f7f1f0d76dd6 | 120 | if (umock_c_state != UMOCK_C_STATE_INITIALIZED) |
XinZhangMS | 0:f7f1f0d76dd6 | 121 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 122 | /* Codes_SRS_UMOCK_C_01_020: [ If the module is not initialized, umock_c_add_expected_call shall return a non-zero value. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 123 | UMOCK_LOG("umock_c: Cannot add an expected call, umock_c not initialized."); |
XinZhangMS | 0:f7f1f0d76dd6 | 124 | result = __LINE__; |
XinZhangMS | 0:f7f1f0d76dd6 | 125 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 126 | else |
XinZhangMS | 0:f7f1f0d76dd6 | 127 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 128 | /* Codes_SRS_UMOCK_C_01_019: [ umock_c_add_expected_call shall add an expected call by calling umockcallrecorder_add_expected_call on the call recorder created in umock_c_init. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 129 | result = umockcallrecorder_add_expected_call(umock_call_recorder, mock_call); |
XinZhangMS | 0:f7f1f0d76dd6 | 130 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 131 | |
XinZhangMS | 0:f7f1f0d76dd6 | 132 | return result; |
XinZhangMS | 0:f7f1f0d76dd6 | 133 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 134 | |
XinZhangMS | 0:f7f1f0d76dd6 | 135 | int umock_c_add_actual_call(UMOCKCALL_HANDLE mock_call, UMOCKCALL_HANDLE* matched_call) |
XinZhangMS | 0:f7f1f0d76dd6 | 136 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 137 | int result; |
XinZhangMS | 0:f7f1f0d76dd6 | 138 | |
XinZhangMS | 0:f7f1f0d76dd6 | 139 | if (umock_c_state != UMOCK_C_STATE_INITIALIZED) |
XinZhangMS | 0:f7f1f0d76dd6 | 140 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 141 | /* Codes_SRS_UMOCK_C_01_022: [ If the module is not initialized, umock_c_add_actual_call shall return a non-zero value. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 142 | UMOCK_LOG("umock_c: Cannot add an actual call, umock_c not initialized."); |
XinZhangMS | 0:f7f1f0d76dd6 | 143 | result = __LINE__; |
XinZhangMS | 0:f7f1f0d76dd6 | 144 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 145 | else |
XinZhangMS | 0:f7f1f0d76dd6 | 146 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 147 | /* Codes_SRS_UMOCK_C_01_021: [ umock_c_add_actual_call shall add an actual call by calling umockcallrecorder_add_actual_call on the call recorder created in umock_c_init. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 148 | result = umockcallrecorder_add_actual_call(umock_call_recorder, mock_call, matched_call); |
XinZhangMS | 0:f7f1f0d76dd6 | 149 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 150 | |
XinZhangMS | 0:f7f1f0d76dd6 | 151 | return result; |
XinZhangMS | 0:f7f1f0d76dd6 | 152 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 153 | |
XinZhangMS | 0:f7f1f0d76dd6 | 154 | const char* umock_c_get_expected_calls(void) |
XinZhangMS | 0:f7f1f0d76dd6 | 155 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 156 | const char* result; |
XinZhangMS | 0:f7f1f0d76dd6 | 157 | |
XinZhangMS | 0:f7f1f0d76dd6 | 158 | if (umock_c_state != UMOCK_C_STATE_INITIALIZED) |
XinZhangMS | 0:f7f1f0d76dd6 | 159 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 160 | /* Codes_SRS_UMOCK_C_01_016: [ If the module is not initialized, umock_c_get_expected_calls shall return NULL. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 161 | UMOCK_LOG("umock_c: Cannot get the expected calls, umock_c not initialized."); |
XinZhangMS | 0:f7f1f0d76dd6 | 162 | result = NULL; |
XinZhangMS | 0:f7f1f0d76dd6 | 163 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 164 | else |
XinZhangMS | 0:f7f1f0d76dd6 | 165 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 166 | /* Codes_SRS_UMOCK_C_01_015: [ umock_c_get_expected_calls shall return the string for the recorded expected calls by calling umockcallrecorder_get_expected_calls on the call recorder created in umock_c_init. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 167 | result = umockcallrecorder_get_expected_calls(umock_call_recorder); |
XinZhangMS | 0:f7f1f0d76dd6 | 168 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 169 | |
XinZhangMS | 0:f7f1f0d76dd6 | 170 | return result; |
XinZhangMS | 0:f7f1f0d76dd6 | 171 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 172 | |
XinZhangMS | 0:f7f1f0d76dd6 | 173 | const char* umock_c_get_actual_calls(void) |
XinZhangMS | 0:f7f1f0d76dd6 | 174 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 175 | const char* result; |
XinZhangMS | 0:f7f1f0d76dd6 | 176 | |
XinZhangMS | 0:f7f1f0d76dd6 | 177 | if (umock_c_state != UMOCK_C_STATE_INITIALIZED) |
XinZhangMS | 0:f7f1f0d76dd6 | 178 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 179 | /* Codes_SRS_UMOCK_C_01_014: [ If the module is not initialized, umock_c_get_actual_calls shall return NULL. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 180 | UMOCK_LOG("umock_c: Cannot get the actual calls, umock_c not initialized."); |
XinZhangMS | 0:f7f1f0d76dd6 | 181 | result = NULL; |
XinZhangMS | 0:f7f1f0d76dd6 | 182 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 183 | else |
XinZhangMS | 0:f7f1f0d76dd6 | 184 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 185 | /* Codes_SRS_UMOCK_C_01_013: [ umock_c_get_actual_calls shall return the string for the recorded actual calls by calling umockcallrecorder_get_actual_calls on the call recorder created in umock_c_init. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 186 | result = umockcallrecorder_get_actual_calls(umock_call_recorder); |
XinZhangMS | 0:f7f1f0d76dd6 | 187 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 188 | |
XinZhangMS | 0:f7f1f0d76dd6 | 189 | return result; |
XinZhangMS | 0:f7f1f0d76dd6 | 190 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 191 | |
XinZhangMS | 0:f7f1f0d76dd6 | 192 | UMOCKCALL_HANDLE umock_c_get_last_expected_call(void) |
XinZhangMS | 0:f7f1f0d76dd6 | 193 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 194 | UMOCKCALL_HANDLE result; |
XinZhangMS | 0:f7f1f0d76dd6 | 195 | |
XinZhangMS | 0:f7f1f0d76dd6 | 196 | if (umock_c_state != UMOCK_C_STATE_INITIALIZED) |
XinZhangMS | 0:f7f1f0d76dd6 | 197 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 198 | /* Codes_SRS_UMOCK_C_01_018: [ If the module is not initialized, umock_c_get_last_expected_call shall return NULL. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 199 | UMOCK_LOG("umock_c: Cannot get the last expected call, umock_c not initialized."); |
XinZhangMS | 0:f7f1f0d76dd6 | 200 | result = NULL; |
XinZhangMS | 0:f7f1f0d76dd6 | 201 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 202 | else |
XinZhangMS | 0:f7f1f0d76dd6 | 203 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 204 | /* Codes_SRS_UMOCK_C_01_017: [ umock_c_get_last_expected_call shall return the last expected call by calling umockcallrecorder_get_last_expected_call on the call recorder created in umock_c_init. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 205 | result = umockcallrecorder_get_last_expected_call(umock_call_recorder); |
XinZhangMS | 0:f7f1f0d76dd6 | 206 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 207 | |
XinZhangMS | 0:f7f1f0d76dd6 | 208 | return result; |
XinZhangMS | 0:f7f1f0d76dd6 | 209 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 210 | |
XinZhangMS | 0:f7f1f0d76dd6 | 211 | void umock_c_indicate_error(UMOCK_C_ERROR_CODE error_code) |
XinZhangMS | 0:f7f1f0d76dd6 | 212 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 213 | if (on_umock_c_error_function != NULL) |
XinZhangMS | 0:f7f1f0d76dd6 | 214 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 215 | on_umock_c_error_function(error_code); |
XinZhangMS | 0:f7f1f0d76dd6 | 216 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 217 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 218 | |
XinZhangMS | 0:f7f1f0d76dd6 | 219 | UMOCKCALLRECORDER_HANDLE umock_c_get_call_recorder(void) |
XinZhangMS | 0:f7f1f0d76dd6 | 220 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 221 | UMOCKCALLRECORDER_HANDLE result; |
XinZhangMS | 0:f7f1f0d76dd6 | 222 | |
XinZhangMS | 0:f7f1f0d76dd6 | 223 | if (umock_c_state != UMOCK_C_STATE_INITIALIZED) |
XinZhangMS | 0:f7f1f0d76dd6 | 224 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 225 | /* Codes_SRS_UMOCK_C_01_027: [ If the module is not initialized, umock_c_get_call_recorder shall return NULL. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 226 | UMOCK_LOG("umock_c_get_call_recorder: Cannot get the call recorder, umock_c not initialized."); |
XinZhangMS | 0:f7f1f0d76dd6 | 227 | result = NULL; |
XinZhangMS | 0:f7f1f0d76dd6 | 228 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 229 | else |
XinZhangMS | 0:f7f1f0d76dd6 | 230 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 231 | /* Codes_SRS_UMOCK_C_01_026: [ umock_c_get_call_recorder shall return the handle to the currently used call recorder. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 232 | result = umock_call_recorder; |
XinZhangMS | 0:f7f1f0d76dd6 | 233 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 234 | |
XinZhangMS | 0:f7f1f0d76dd6 | 235 | return result; |
XinZhangMS | 0:f7f1f0d76dd6 | 236 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 237 | |
XinZhangMS | 0:f7f1f0d76dd6 | 238 | int umock_c_set_call_recorder(UMOCKCALLRECORDER_HANDLE call_recorder) |
XinZhangMS | 0:f7f1f0d76dd6 | 239 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 240 | int result; |
XinZhangMS | 0:f7f1f0d76dd6 | 241 | |
XinZhangMS | 0:f7f1f0d76dd6 | 242 | if (umock_c_state != UMOCK_C_STATE_INITIALIZED) |
XinZhangMS | 0:f7f1f0d76dd6 | 243 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 244 | /* Codes_SRS_UMOCK_C_01_033: [ If the module is not initialized, umock_c_set_call_recorder shall return a non-zero value. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 245 | UMOCK_LOG("umock_c_set_call_recorder: Cannot set the call recorder, umock_c not initialized."); |
XinZhangMS | 0:f7f1f0d76dd6 | 246 | result = __LINE__; |
XinZhangMS | 0:f7f1f0d76dd6 | 247 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 248 | else if (call_recorder == NULL) |
XinZhangMS | 0:f7f1f0d76dd6 | 249 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 250 | /* Codes_SRS_UMOCK_C_01_030: [ If call_recorder is NULL, umock_c_set_call_recorder shall return a non-zero value. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 251 | UMOCK_LOG("umock_c_set_call_recorder: NULL call_recorder."); |
XinZhangMS | 0:f7f1f0d76dd6 | 252 | result = __LINE__; |
XinZhangMS | 0:f7f1f0d76dd6 | 253 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 254 | else |
XinZhangMS | 0:f7f1f0d76dd6 | 255 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 256 | UMOCKCALLRECORDER_HANDLE new_call_recorder; |
XinZhangMS | 0:f7f1f0d76dd6 | 257 | |
XinZhangMS | 0:f7f1f0d76dd6 | 258 | /* Codes_SRS_UMOCK_C_01_028: [ umock_c_set_call_recorder shall replace the currently used call recorder with the one identified by the call_recorder argument. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 259 | /* Codes_SRS_UMOCK_C_01_031: [ umock_c_set_call_recorder shall make a copy of call_recorder by calling umockcallrecorder_clone and use the copy for future actions. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 260 | new_call_recorder = umockcallrecorder_clone(call_recorder); |
XinZhangMS | 0:f7f1f0d76dd6 | 261 | if (new_call_recorder == NULL) |
XinZhangMS | 0:f7f1f0d76dd6 | 262 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 263 | /* Codes_SRS_UMOCK_C_01_032: [ If umockcallrecorder_clone fails, umock_c_set_call_recorder shall return a non-zero value. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 264 | UMOCK_LOG("umock_c_set_call_recorder: Failed cloning call recorder."); |
XinZhangMS | 0:f7f1f0d76dd6 | 265 | result = __LINE__; |
XinZhangMS | 0:f7f1f0d76dd6 | 266 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 267 | else |
XinZhangMS | 0:f7f1f0d76dd6 | 268 | { |
XinZhangMS | 0:f7f1f0d76dd6 | 269 | /* Codes_SRS_UMOCK_C_01_034: [ The previously used call recorder shall be destroyed by calling umockcallrecorder_destroy. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 270 | umockcallrecorder_destroy(umock_call_recorder); |
XinZhangMS | 0:f7f1f0d76dd6 | 271 | umock_call_recorder = new_call_recorder; |
XinZhangMS | 0:f7f1f0d76dd6 | 272 | |
XinZhangMS | 0:f7f1f0d76dd6 | 273 | /* Codes_SRS_UMOCK_C_01_029: [ On success, umock_c_set_call_recorder shall return 0. ]*/ |
XinZhangMS | 0:f7f1f0d76dd6 | 274 | result = 0; |
XinZhangMS | 0:f7f1f0d76dd6 | 275 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 276 | } |
XinZhangMS | 0:f7f1f0d76dd6 | 277 | |
XinZhangMS | 0:f7f1f0d76dd6 | 278 | return result; |
XinZhangMS | 0:f7f1f0d76dd6 | 279 | } |