diff options
Diffstat (limited to 'tests/test_sorcery.c')
-rw-r--r-- | tests/test_sorcery.c | 69 |
1 files changed, 68 insertions, 1 deletions
diff --git a/tests/test_sorcery.c b/tests/test_sorcery.c index e1d4b7fce..868c58268 100644 --- a/tests/test_sorcery.c +++ b/tests/test_sorcery.c @@ -49,7 +49,7 @@ struct test_sorcery_object { /*! \brief Internal function to allocate a test object */ static void *test_sorcery_object_alloc(const char *id) { - return ao2_alloc(sizeof(struct test_sorcery_object), NULL); + return ast_sorcery_generic_alloc(sizeof(struct test_sorcery_object), NULL); } /*! \brief Internal function for object set transformation */ @@ -1300,6 +1300,71 @@ AST_TEST_DEFINE(objectset_apply_fields) return res; } +AST_TEST_DEFINE(extended_fields) +{ + int res = AST_TEST_PASS; + RAII_VAR(struct ast_sorcery *, sorcery, NULL, ast_sorcery_unref); + RAII_VAR(struct test_sorcery_object *, obj, NULL, ao2_cleanup); + RAII_VAR(struct ast_variable *, objset, NULL, ast_variables_destroy); + const char *value; + + switch (cmd) { + case TEST_INIT: + info->name = "extended_fields"; + info->category = "/main/sorcery/"; + info->summary = "sorcery object extended fields unit test"; + info->description = + "Test extended fields support in sorcery"; + return AST_TEST_NOT_RUN; + case TEST_EXECUTE: + break; + } + + if (!(sorcery = alloc_and_initialize_sorcery())) { + ast_test_status_update(test, "Failed to open sorcery structure\n"); + return AST_TEST_FAIL; + } + + if (!(obj = ast_sorcery_alloc(sorcery, "test", "blah"))) { + ast_test_status_update(test, "Failed to allocate a known object type\n"); + return AST_TEST_FAIL; + } + + if (!(objset = ast_variable_new("@testing", "toast", ""))) { + ast_test_status_update(test, "Failed to create an object set, test could not occur\n"); + res = AST_TEST_FAIL; + } else if (ast_sorcery_objectset_apply(sorcery, obj, objset)) { + ast_test_status_update(test, "Failed to apply valid object set to object\n"); + res = AST_TEST_FAIL; + } else if (!(value = ast_sorcery_object_get_extended(obj, "testing"))) { + ast_test_status_update(test, "Extended field, which was set using object set, could not be found\n"); + res = AST_TEST_FAIL; + } else if (strcmp(value, "toast")) { + ast_test_status_update(test, "Extended field does not contain expected value\n"); + res = AST_TEST_FAIL; + } else if (ast_sorcery_object_set_extended(obj, "@tacos", "supreme")) { + ast_test_status_update(test, "Extended field could not be set\n"); + res = AST_TEST_FAIL; + } else if (!(value = ast_sorcery_object_get_extended(obj, "tacos"))) { + ast_test_status_update(test, "Extended field, which was set using the API, could not be found\n"); + res = AST_TEST_FAIL; + } else if (strcmp(value, "supreme")) { + ast_test_status_update(test, "Extended field does not contain expected value\n"); + res = AST_TEST_FAIL; + } else if (ast_sorcery_object_set_extended(obj, "@tacos", "canadian")) { + ast_test_status_update(test, "Extended field could not be set a second time\n"); + res = AST_TEST_FAIL; + } else if (!(value = ast_sorcery_object_get_extended(obj, "tacos"))) { + ast_test_status_update(test, "Extended field, which was set using the API, could not be found\n"); + res = AST_TEST_FAIL; + } else if (strcmp(value, "canadian")) { + ast_test_status_update(test, "Extended field does not contain expected value\n"); + res = AST_TEST_FAIL; + } + + return res; +} + AST_TEST_DEFINE(changeset_create) { int res = AST_TEST_PASS; @@ -2604,6 +2669,7 @@ static int unload_module(void) AST_TEST_UNREGISTER(objectset_apply_invalid); AST_TEST_UNREGISTER(objectset_transform); AST_TEST_UNREGISTER(objectset_apply_fields); + AST_TEST_UNREGISTER(extended_fields); AST_TEST_UNREGISTER(changeset_create); AST_TEST_UNREGISTER(changeset_create_unchanged); AST_TEST_UNREGISTER(object_create); @@ -2651,6 +2717,7 @@ static int load_module(void) AST_TEST_REGISTER(objectset_apply_invalid); AST_TEST_REGISTER(objectset_transform); AST_TEST_REGISTER(objectset_apply_fields); + AST_TEST_REGISTER(extended_fields); AST_TEST_REGISTER(changeset_create); AST_TEST_REGISTER(changeset_create_unchanged); AST_TEST_REGISTER(object_create); |