summaryrefslogtreecommitdiff
path: root/tests/test_utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_utils.c')
-rw-r--r--tests/test_utils.c124
1 files changed, 107 insertions, 17 deletions
diff --git a/tests/test_utils.c b/tests/test_utils.c
index 92db72a08..b79da926f 100644
--- a/tests/test_utils.c
+++ b/tests/test_utils.c
@@ -4,6 +4,7 @@
* Copyright (C) 2010, Digium, Inc.
*
* David Vossel <dvossel@digium.com>
+ * Russell Bryant <russell@digium.com>
*
* See http://www.asterisk.org for more information about
* the Asterisk project. Please do not directly contact
@@ -16,11 +17,12 @@
* at the top of the source tree.
*/
-/*! \file
- *
+/*!
+ * \file
* \brief Unit Tests for utils API
*
* \author David Vossel <dvossel@digium.com>
+ * \author Russell Bryant <russell@digium.com>
*/
/*** MODULEINFO
@@ -54,60 +56,148 @@ AST_TEST_DEFINE(uri_encode_decode_test)
break;
}
- ast_test_status_update(&args->status_update, "Input before executing ast_uri_encode:\n%s\n", in);
- ast_test_status_update(&args->status_update, "Output expected for ast_uri_encode with enabling do_special_char:\n%s\n", expected1);
- ast_test_status_update(&args->status_update, "Output expected for ast_uri_encode with out enabling do_special_char:\n%s\n\n", expected2);
+ ast_test_status_update(test, "Input before executing ast_uri_encode:\n%s\n", in);
+ ast_test_status_update(test, "Output expected for ast_uri_encode with enabling do_special_char: %s\n", expected1);
+ ast_test_status_update(test, "Output expected for ast_uri_encode with out enabling do_special_char: %s\n\n", expected2);
/* Test with do_special_char enabled */
ast_uri_encode(in, out, sizeof(out), 1);
- ast_test_status_update(&args->status_update, "Output after enabling do_special_char:\n%s\n", out);
+ ast_test_status_update(test, "Output after enabling do_special_char:\n%s\n", out);
if (strcmp(expected1, out)) {
- ast_test_status_update(&args->status_update, "ENCODE DOES NOT MATCH EXPECTED, FAIL\n");
- ast_str_append(&args->ast_test_error_str, 0, "enable do_special_char test encode failed: \n");
+ ast_test_status_update(test, "ENCODE DOES NOT MATCH EXPECTED, FAIL\n");
res = AST_TEST_FAIL;
}
/* Verify uri decode matches original */
ast_uri_decode(out);
if (strcmp(in, out)) {
- ast_test_status_update(&args->status_update, "Decoded string did not match original input\n\n");
- ast_str_append(&args->ast_test_error_str, 0, "enable do_special_char test decode failed: \n");
+ ast_test_status_update(test, "Decoded string did not match original input\n");
res = AST_TEST_FAIL;
} else {
- ast_test_status_update(&args->status_update, "Decoded string matched original input\n\n");
+ ast_test_status_update(test, "Decoded string matched original input\n");
}
/* Test with do_special_char disabled */
out[0] = '\0';
ast_uri_encode(in, out, sizeof(out), 0);
- ast_test_status_update(&args->status_update, "Output after disabling do_special_char:\n%s\n", out);
+ ast_test_status_update(test, "Output after disabling do_special_char: %s\n", out);
if (strcmp(expected2, out)) {
- ast_test_status_update(&args->status_update, "ENCODE DOES NOT MATCH EXPECTED, FAIL\n");
- ast_str_append(&args->ast_test_error_str, 0, "no do_special_char test encode failed: \n");
+ ast_test_status_update(test, "ENCODE DOES NOT MATCH EXPECTED, FAIL\n");
res = AST_TEST_FAIL;
}
/* Verify uri decode matches original */
ast_uri_decode(out);
if (strcmp(in, out)) {
- ast_test_status_update(&args->status_update, "Decoded string did not match original input\n\n");
- ast_str_append(&args->ast_test_error_str, 0, "no do_special_char test decode failed\n");
+ ast_test_status_update(test, "Decoded string did not match original input\n");
res = AST_TEST_FAIL;
} else {
- ast_test_status_update(&args->status_update, "Decoded string matched original input\n\n");
+ ast_test_status_update(test, "Decoded string matched original input\n");
+ }
+
+ return res;
+}
+
+AST_TEST_DEFINE(md5_test)
+{
+ static const struct {
+ const char *input;
+ const char *expected_output;
+ } tests[] = {
+ { "apples", "daeccf0ad3c1fc8c8015205c332f5b42" },
+ { "bananas", "ec121ff80513ae58ed478d5c5787075b" },
+ { "reallylongstringaboutgoatcheese", "0a2d9280d37e2e37545cfef6e7e4e890" },
+ };
+ enum ast_test_result_state res = AST_TEST_PASS;
+ int i;
+
+ switch (cmd) {
+ case TEST_INIT:
+ info->name = "md5_test";
+ info->category = "main/utils/";
+ info->summary = "MD5 test";
+ info->description =
+ "This test exercises MD5 calculations."
+ "";
+ return AST_TEST_NOT_RUN;
+ case TEST_EXECUTE:
+ break;
+ }
+
+ ast_test_status_update(test, "Testing MD5 ...\n");
+
+ for (i = 0; i < ARRAY_LEN(tests); i++) {
+ char md5_hash[32];
+ ast_md5_hash(md5_hash, tests[i].input);
+ if (strcasecmp(md5_hash, tests[i].expected_output)) {
+ ast_test_status_update(test,
+ "input: '%s' hash: '%s' expected hash: '%s'\n",
+ tests[i].input, md5_hash, tests[i].expected_output);
+ res = AST_TEST_FAIL;
+ }
}
+
+ return res;
+}
+
+AST_TEST_DEFINE(sha1_test)
+{
+ static const struct {
+ const char *input;
+ const char *expected_output;
+ } tests[] = {
+ { "giraffe",
+ "fac8f1a31d2998734d6a5253e49876b8e6a08239" },
+ { "platypus",
+ "1dfb21b7a4d35e90d943e3a16107ccbfabd064d5" },
+ { "ParastratiosphecomyiaStratiosphecomyioides",
+ "58af4e8438676f2bd3c4d8df9e00ee7fe06945bb" },
+ };
+ enum ast_test_result_state res = AST_TEST_PASS;
+ int i;
+
+ switch (cmd) {
+ case TEST_INIT:
+ info->name = "sha1_test";
+ info->category = "main/utils/";
+ info->summary = "SHA1 test";
+ info->description =
+ "This test exercises SHA1 calculations."
+ "";
+ return AST_TEST_NOT_RUN;
+ case TEST_EXECUTE:
+ break;
+ }
+
+ ast_test_status_update(test, "Testing SHA1 ...\n");
+
+ for (i = 0; i < ARRAY_LEN(tests); i++) {
+ char sha1_hash[64];
+ ast_sha1_hash(sha1_hash, tests[i].input);
+ if (strcasecmp(sha1_hash, tests[i].expected_output)) {
+ ast_test_status_update(test,
+ "input: '%s' hash: '%s' expected hash: '%s'\n",
+ tests[i].input, sha1_hash, tests[i].expected_output);
+ res = AST_TEST_FAIL;
+ }
+ }
+
return res;
}
static int unload_module(void)
{
AST_TEST_UNREGISTER(uri_encode_decode_test);
+ AST_TEST_UNREGISTER(md5_test);
+ AST_TEST_UNREGISTER(sha1_test);
return 0;
}
static int load_module(void)
{
AST_TEST_REGISTER(uri_encode_decode_test);
+ AST_TEST_REGISTER(md5_test);
+ AST_TEST_REGISTER(sha1_test);
return AST_MODULE_LOAD_SUCCESS;
}