Asterisk - The Open Source Telephony Project GIT-master-b023714
Loading...
Searching...
No Matches
Macros | Enumerations | Functions | Variables
test_optional_api.c File Reference

Test optional API. More...

#include "asterisk.h"
#include "asterisk/module.h"
#include "asterisk/optional_api.h"
#include "asterisk/test.h"
Include dependency graph for test_optional_api.c:

Go to the source code of this file.

Macros

#define CATEGORY   "/main/optional_api/"
 
#define SYMNAME   "test_option"
 

Enumerations

enum  was_called { NONE , STUB , IMPL }
 

Functions

static void __reg_module (void)
 
static void __unreg_module (void)
 
struct ast_moduleAST_MODULE_SELF_SYM (void)
 
 AST_TEST_DEFINE (test_provide_first)
 
 AST_TEST_DEFINE (test_provide_last)
 
static int load_module (void)
 
static void test_optional (void)
 
static void test_optional_impl (void)
 
static void test_optional_stub (void)
 
static int unload_module (void)
 

Variables

static struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_DEFAULT , .description = "ARI testing" , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, }
 
static const struct ast_module_infoast_module_info = &__mod_info
 
ast_optional_fn test_optional_ref
 
enum was_called was_called_result
 

Detailed Description

Test optional API.

This tests exercise the underlying implementation functions. Actual usage won't look anything like this; it would use the wrapper macros.

Author
David M. Lee, II <dlee@digium.com> 

Definition in file test_optional_api.c.

Macro Definition Documentation

◆ CATEGORY

#define CATEGORY   "/main/optional_api/"

Definition at line 43 of file test_optional_api.c.

◆ SYMNAME

#define SYMNAME   "test_option"

Definition at line 73 of file test_optional_api.c.

Enumeration Type Documentation

◆ was_called

enum was_called
Enumerator
NONE 
STUB 
IMPL 

Definition at line 45 of file test_optional_api.c.

45 {
46 NONE,
47 STUB,
48 IMPL
49};

Function Documentation

◆ __reg_module()

static void __reg_module ( void  )
static

Definition at line 187 of file test_optional_api.c.

◆ __unreg_module()

static void __unreg_module ( void  )
static

Definition at line 187 of file test_optional_api.c.

◆ AST_MODULE_SELF_SYM()

struct ast_module * AST_MODULE_SELF_SYM ( void  )

Definition at line 187 of file test_optional_api.c.

◆ AST_TEST_DEFINE() [1/2]

AST_TEST_DEFINE ( test_provide_first  )

Definition at line 75 of file test_optional_api.c.

76{
77 enum ast_test_result_state res;
78
79 switch (cmd) {
80 case TEST_INIT:
81 info->name = __func__;
82 info->category = CATEGORY;
83 info->summary = "Test optional API publishing.";
84 info->description = "Test optional API publishing.";
85 return AST_TEST_NOT_RUN;
86 case TEST_EXECUTE:
87 break;
88 }
89
90 res = AST_TEST_FAIL;
92
93 ast_optional_api_provide(SYMNAME, test_optional_impl);
94
95 ast_optional_api_use(SYMNAME, &test_optional_ref, test_optional_stub,
97
99
100 if (was_called_result != IMPL) {
101 ast_test_status_update(test, "Expected %d, was %u",
103 goto done;
104 }
105
106 res = AST_TEST_PASS;
107
108 done:
109 ast_optional_api_unuse(SYMNAME, &test_optional_ref, AST_MODULE);
110 ast_optional_api_unprovide(SYMNAME, test_optional_impl);
111 return res;
112}
#define AST_MODULE
@ TEST_INIT
Definition test.h:200
@ TEST_EXECUTE
Definition test.h:201
#define ast_test_status_update(a, b, c...)
Definition test.h:129
ast_test_result_state
Definition test.h:193
@ AST_TEST_PASS
Definition test.h:195
@ AST_TEST_FAIL
Definition test.h:196
@ AST_TEST_NOT_RUN
Definition test.h:194
int done
static void test_optional_stub(void)
static void test_optional(void)
ast_optional_fn test_optional_ref
static void test_optional_impl(void)
#define CATEGORY
#define SYMNAME
enum was_called was_called_result

References AST_MODULE, AST_TEST_FAIL, AST_TEST_NOT_RUN, AST_TEST_PASS, ast_test_status_update, CATEGORY, done, IMPL, SYMNAME, TEST_EXECUTE, TEST_INIT, test_optional(), test_optional_impl(), test_optional_ref, test_optional_stub(), and was_called_result.

◆ AST_TEST_DEFINE() [2/2]

AST_TEST_DEFINE ( test_provide_last  )

Definition at line 114 of file test_optional_api.c.

115{
116 enum ast_test_result_state res;
117
118 switch (cmd) {
119 case TEST_INIT:
120 info->name = __func__;
121 info->category = CATEGORY;
122 info->summary = "Test optional API publishing.";
123 info->description = "Test optional API publishing.";
124 return AST_TEST_NOT_RUN;
125 case TEST_EXECUTE:
126 break;
127 }
128
129 res = AST_TEST_FAIL;
131
132 ast_optional_api_use(SYMNAME, &test_optional_ref, test_optional_stub,
133 AST_MODULE);
134
136 if (was_called_result != STUB) {
137 ast_test_status_update(test, "Expected %d, was %u",
139 goto done;
140 }
141
142 ast_optional_api_provide(SYMNAME, test_optional_impl);
143
145 if (was_called_result != IMPL) {
146 ast_test_status_update(test, "Expected %d, was %u",
148 ast_optional_api_unprovide(SYMNAME, test_optional_impl);
149 goto done;
150 }
151
152 ast_optional_api_unprovide(SYMNAME, test_optional_impl);
153
155 if (was_called_result != STUB) {
156 ast_test_status_update(test, "Expected %d, was %u",
158 ast_optional_api_unprovide(SYMNAME, test_optional_impl);
159 goto done;
160 }
161
162 res = AST_TEST_PASS;
163
164 done:
165 ast_optional_api_unuse(SYMNAME, &test_optional_ref, AST_MODULE);
166 return res;
167}

References AST_MODULE, AST_TEST_FAIL, AST_TEST_NOT_RUN, AST_TEST_PASS, ast_test_status_update, CATEGORY, done, IMPL, STUB, SYMNAME, TEST_EXECUTE, TEST_INIT, test_optional(), test_optional_impl(), test_optional_ref, test_optional_stub(), and was_called_result.

◆ load_module()

static int load_module ( void  )
static

Definition at line 176 of file test_optional_api.c.

177{
178 AST_TEST_REGISTER(test_provide_first);
179 AST_TEST_REGISTER(test_provide_last);
181}
@ AST_MODULE_LOAD_SUCCESS
Definition module.h:70
#define AST_TEST_REGISTER(cb)
Definition test.h:127

References AST_MODULE_LOAD_SUCCESS, and AST_TEST_REGISTER.

◆ test_optional()

static void test_optional ( void  )
static

Definition at line 65 of file test_optional_api.c.

66{
70 }
71}

References NONE, test_optional_ref, and was_called_result.

Referenced by AST_TEST_DEFINE(), and AST_TEST_DEFINE().

◆ test_optional_impl()

static void test_optional_impl ( void  )
static

Definition at line 60 of file test_optional_api.c.

61{
63}

References IMPL, and was_called_result.

Referenced by AST_TEST_DEFINE(), and AST_TEST_DEFINE().

◆ test_optional_stub()

static void test_optional_stub ( void  )
static

Definition at line 55 of file test_optional_api.c.

56{
58}

References STUB, and was_called_result.

Referenced by AST_TEST_DEFINE(), and AST_TEST_DEFINE().

◆ unload_module()

static int unload_module ( void  )
static

Definition at line 169 of file test_optional_api.c.

170{
171 AST_TEST_UNREGISTER(test_provide_first);
172 AST_TEST_UNREGISTER(test_provide_last);
173 return 0;
174}
#define AST_TEST_UNREGISTER(cb)
Definition test.h:128

References AST_TEST_UNREGISTER.

Variable Documentation

◆ __mod_info

struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_DEFAULT , .description = "ARI testing" , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, }
static

Definition at line 187 of file test_optional_api.c.

◆ ast_module_info

const struct ast_module_info* ast_module_info = &__mod_info
static

Definition at line 187 of file test_optional_api.c.

◆ test_optional_ref

ast_optional_fn test_optional_ref

Definition at line 53 of file test_optional_api.c.

Referenced by AST_TEST_DEFINE(), AST_TEST_DEFINE(), and test_optional().

◆ was_called_result

enum was_called was_called_result