app_queue: Revert bad ringinuse=no patch.
[asterisk/asterisk.git] / tests / test_uuid.c
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 2012, Digium, Inc.
5  *
6  * Mark Michelson <mmmichelson@digium.com>
7  *
8  * See http://www.asterisk.org for more information about
9  * the Asterisk project. Please do not directly contact
10  * any of the maintainers of this project for assistance;
11  * the project provides a web site, mailing lists and IRC
12  * channels for your use.
13  *
14  * This program is free software, distributed under the terms of
15  * the GNU General Public License Version 2. See the LICENSE file
16  * at the top of the source tree.
17  */
18
19 /*! \file
20  * \brief Universally unique identifier tests
21  */
22
23 /*** MODULEINFO
24         <depend>TEST_FRAMEWORK</depend>
25         <support_level>core</support_level>
26  ***/
27
28 #include "asterisk.h"
29 #include "asterisk/test.h"
30 #include "asterisk/uuid.h"
31 #include "asterisk/module.h"
32
33 AST_TEST_DEFINE(uuid)
34 {
35         struct ast_uuid *uuid1 = NULL;
36         struct ast_uuid *uuid2 = NULL;
37         struct ast_uuid *uuid3 = NULL;
38         char uuid_str[AST_UUID_STR_LEN];
39         enum ast_test_result_state res = AST_TEST_FAIL;
40
41         switch (cmd) {
42         case TEST_INIT:
43                 info->name = "uuid";
44                 info->category = "/main/uuid/";
45                 info->summary = "UUID unit test";
46                 info->description =
47                         "This tests basic UUID operations to ensure they work properly";
48                 return AST_TEST_NOT_RUN;
49         case TEST_EXECUTE:
50                 break;
51         }
52
53         /* First, make sure that we can generate a UUID */
54         uuid1 = ast_uuid_generate();
55         if (!uuid1) {
56                 ast_test_status_update(test, "Unable to generate a UUID\n");
57                 goto end;
58         }
59
60         /* Make sure we're not generating nil UUIDs */
61         if (ast_uuid_is_nil(uuid1)) {
62                 ast_test_status_update(test, "We generated a nil UUID. Something is wrong\n");
63                 goto end;
64         }
65
66         /* Convert it to a string */
67         ast_uuid_to_str(uuid1, uuid_str, sizeof(uuid_str));
68
69         if (strlen(uuid_str) != (AST_UUID_STR_LEN - 1)) {
70                 ast_test_status_update(test, "Failed to convert the UUID to a string\n");
71                 goto end;
72         }
73
74         ast_test_status_update(test, "Converted uuid to string, got %s\n", uuid_str);
75
76         /* Now convert the string back to a UUID */
77         uuid2 = ast_str_to_uuid(uuid_str);
78         if (!uuid2) {
79                 ast_test_status_update(test, "Unable to convert string %s to UUID\n", uuid_str);
80                 goto end;
81         }
82
83         /* Make sure the UUIDs are identical */
84         if (ast_uuid_compare(uuid1, uuid2) != 0) {
85                 ast_test_status_update(test, "UUIDs that should be identical are different\n");
86                 goto end;
87         }
88
89         /* Try copying a UUID */
90         uuid3 = ast_uuid_copy(uuid1);
91         if (!uuid3) {
92                 ast_test_status_update(test, "Unable to copy UUID\n");
93                 goto end;
94         }
95
96         /* Make sure copied UUIDs are identical */
97         if (ast_uuid_compare(uuid1, uuid3) != 0) {
98                 ast_test_status_update(test, "UUIDs that should be identical are different\n");
99                 goto end;
100         }
101
102         if (ast_uuid_compare(uuid2, uuid3) != 0) {
103                 ast_test_status_update(test, "UUIDs that should be identical are different\n");
104                 goto end;
105         }
106
107         /* Clear a UUID and ensure that it registers as nil */
108         ast_uuid_clear(uuid1);
109
110         if (!ast_uuid_is_nil(uuid1)) {
111                 ast_test_status_update(test, "UUID that was cleared does not appear to be nil\n");
112                 goto end;
113         }
114
115         res = AST_TEST_PASS;
116
117 end:
118         ast_free(uuid1);
119         ast_free(uuid2);
120         ast_free(uuid3);
121         return res;
122 }
123
124 static int unload_module(void)
125 {
126         AST_TEST_UNREGISTER(uuid);
127         return 0;
128 }
129
130 static int load_module(void)
131 {
132         AST_TEST_REGISTER(uuid);
133         return AST_MODULE_LOAD_SUCCESS;
134 }
135
136 AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "UUID test module");