|
Packit Service |
779887 |
# -*- Autotest -*-
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
AT_BANNER([libreport types])
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
## ------------- ##
|
|
Packit Service |
779887 |
## string_vector ##
|
|
Packit Service |
779887 |
## ------------- ##
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
AT_TESTFUN([string_vector],
|
|
Packit Service |
779887 |
[[
|
|
Packit Service |
779887 |
#include "internal_libreport.h"
|
|
Packit Service |
779887 |
#include <assert.h>
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
int main(int argc, char **argv)
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
g_verbose = 3;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
const char *const raw_value = "foo, blah, bang";
|
|
Packit Service |
779887 |
string_vector_ptr_t vector = string_vector_new_from_string(raw_value);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(strcmp("foo", vector[0]) == 0 || !"The first item");
|
|
Packit Service |
779887 |
assert(strcmp("blah", vector[1]) == 0 || !"The second item");
|
|
Packit Service |
779887 |
assert(strcmp("bang", vector[2]) == 0 || !"The third item");
|
|
Packit Service |
779887 |
assert(NULL == vector[3] || !"NULL-terminated");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
string_vector_free(vector);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
vector = string_vector_new_from_string(NULL);
|
|
Packit Service |
779887 |
assert(NULL == vector[0] || !"NULL-terminated");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
string_vector_free(vector);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
vector = string_vector_new_from_string("");
|
|
Packit Service |
779887 |
assert(NULL == vector[0] || !"NULL-terminated");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
string_vector_free(vector);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
]])
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
## ----------------------------------- ##
|
|
Packit Service |
779887 |
## map_string_get_set_as_various_types ##
|
|
Packit Service |
779887 |
## ----------------------------------- ##
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
AT_TESTFUN([map_string_get_set_as_various_types],
|
|
Packit Service |
779887 |
[[
|
|
Packit Service |
779887 |
#include "internal_libreport.h"
|
|
Packit Service |
779887 |
#include <assert.h>
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
int main(int argc, char **argv)
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
g_verbose = 3;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
const char *const key = "my_bool";
|
|
Packit Service |
779887 |
map_string_t *map = new_map_string();
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
int retval = 0;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_bool(map, key, &retval) || !"Returns bool(0) even if option does not exist");
|
|
Packit Service |
779887 |
assert(retval == 0 || !"Modifies bool(0) return value on failure");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
retval = 1;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_bool(map, key, &retval) || !"Returns bool(1) even if option does not exist");
|
|
Packit Service |
779887 |
assert(retval == 1 || !"Modifies bool(1) return value on failure");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
set_map_string_item_from_bool(map, key, 1);
|
|
Packit Service |
779887 |
assert(get_map_string_item_or_NULL(map, key) || !"Set bool(1)");
|
|
Packit Service |
779887 |
assert(strcmp("yes", get_map_string_item_or_NULL(map, key)) == 0 || !"Invalid string repr for bool(1)");
|
|
Packit Service |
779887 |
assert(try_get_map_string_item_as_bool(map, key, &retval) || !"Failed to return bool(1)");
|
|
Packit Service |
779887 |
assert(retval || !"Failed to convert 'yes' to bool(1)");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
set_map_string_item_from_bool(map, key, 0);
|
|
Packit Service |
779887 |
assert(get_map_string_item_or_NULL(map, key) || !"Set bool(0)");
|
|
Packit Service |
779887 |
assert(strcmp("no", get_map_string_item_or_NULL(map, key)) == 0 || !"Invalid string repr for bool(0)");
|
|
Packit Service |
779887 |
retval = 1;
|
|
Packit Service |
779887 |
assert(try_get_map_string_item_as_bool(map, key, &retval) || !"Failed to return bool(0)");
|
|
Packit Service |
779887 |
assert(!retval || !"Failed to convert 'no' to bool(0)");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
replace_map_string_item(map, xstrdup(key), xstrdup("foo"));
|
|
Packit Service |
779887 |
retval = 1;
|
|
Packit Service |
779887 |
assert(try_get_map_string_item_as_bool(map, key, &retval) || !"Can not convert a random string to bool(0)");
|
|
Packit Service |
779887 |
assert(!retval || !"Failed to convert a random string to bool(0)");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
free_map_string(map);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
const char *const key = "my_int";
|
|
Packit Service |
779887 |
map_string_t *map = new_map_string();
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
int retval = INT_MIN;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_int(map, key, &retval) || !"Returns INT_MIN even if option does not exist");
|
|
Packit Service |
779887 |
assert(retval == INT_MIN || !"Modifies INT_MIN value on failure");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
retval = INT_MAX;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_int(map, key, &retval) || !"Returns INT_MAX even if option does not exist");
|
|
Packit Service |
779887 |
assert(retval == INT_MAX || !"Modifies INT_MAX value on failure");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
set_map_string_item_from_int(map, key, 12345);
|
|
Packit Service |
779887 |
assert(get_map_string_item_or_NULL(map, key) || !"Set int(12345)");
|
|
Packit Service |
779887 |
assert(strcmp("12345", get_map_string_item_or_NULL(map, key)) == 0 || !"Invalid string repr for int(12345)");
|
|
Packit Service |
779887 |
assert(try_get_map_string_item_as_int(map, key, &retval) || !"Failed to return int(12345)");
|
|
Packit Service |
779887 |
assert(12345 == retval || !"Failed to convert '12345' to int(12345)");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
set_map_string_item_from_int(map, key, -12345);
|
|
Packit Service |
779887 |
assert(get_map_string_item_or_NULL(map, key) || !"Set int(-12345)");
|
|
Packit Service |
779887 |
assert(strcmp("-12345", get_map_string_item_or_NULL(map, key)) == 0 || !"Invalid string repr for int(-12345)");
|
|
Packit Service |
779887 |
assert(try_get_map_string_item_as_int(map, key, &retval) || !"Failed to return int(-12345)");
|
|
Packit Service |
779887 |
assert(-12345 == retval || !"Failed to convert '-12345' to int(-12345)");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
set_map_string_item_from_int(map, key, INT_MAX);
|
|
Packit Service |
779887 |
assert(try_get_map_string_item_as_int(map, key, &retval) || !"Cannot return INT_MAX");
|
|
Packit Service |
779887 |
assert(retval == INT_MAX || !"Garbled INT_MAX");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
set_map_string_item_from_int(map, key, INT_MIN);
|
|
Packit Service |
779887 |
assert(try_get_map_string_item_as_int(map, key, &retval) || !"Cannot return INT_MIN");
|
|
Packit Service |
779887 |
assert(retval == INT_MIN || !"Garbled INT_MIN");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
retval = 69;
|
|
Packit Service |
779887 |
replace_map_string_item(map, xstrdup(key), xstrdup(""));
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_int(map, key, &retval) || !"Converts '' to number");
|
|
Packit Service |
779887 |
assert(retval == 69 || !"Modifies int(69) on ''");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
replace_map_string_item(map, xstrdup(key), xstrdup("foo"));
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_int(map, key, &retval) || !"Converts 'foo' to number");
|
|
Packit Service |
779887 |
assert(retval == 69 || !"Modifies int(69) on 'foo'");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
replace_map_string_item(map, xstrdup(key), xstrdup("777foo"));
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_int(map, key, &retval) || !"Converts '777foo' to number");
|
|
Packit Service |
779887 |
assert(retval == 69 || !"Modifies int(69) on '777foo'");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
/*0123456789ABCDEF*/
|
|
Packit Service |
779887 |
replace_map_string_item(map, xstrdup(key), xstrdup("77777777777777777777777777777777"));
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_int(map, key, &retval) || !"Converts '77777777777777777777777777777777' to number");
|
|
Packit Service |
779887 |
assert(retval == 69 || !"Modifies int(69) on '77777777777777777777777777777777'");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
free_map_string(map);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
const char *const key = "my_uint";
|
|
Packit Service |
779887 |
map_string_t *map = new_map_string();
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
unsigned int retval = 0;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_uint(map, key, &retval) || !"Returns 0 even if option does not exist");
|
|
Packit Service |
779887 |
assert(retval == 0 || !"Modifies 0 value on failure");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
retval = UINT_MAX;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_uint(map, key, &retval) || !"Returns UINT_MAX even if option does not exist");
|
|
Packit Service |
779887 |
assert(retval == UINT_MAX || !"Modifies UINT_MAX value on failure");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
set_map_string_item_from_uint(map, key, 12345);
|
|
Packit Service |
779887 |
assert(get_map_string_item_or_NULL(map, key) || !"Set uint(12345)");
|
|
Packit Service |
779887 |
assert(strcmp("12345", get_map_string_item_or_NULL(map, key)) == 0 || !"Invalid string repr for uint(12345)");
|
|
Packit Service |
779887 |
assert(try_get_map_string_item_as_uint(map, key, &retval) || !"Failed to return uint(12345)");
|
|
Packit Service |
779887 |
assert(12345 == retval || !"Failed to convert '12345' to uint(12345)");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
set_map_string_item_from_uint(map, key, INT_MAX + 1);
|
|
Packit Service |
779887 |
assert(get_map_string_item_or_NULL(map, key) || !"Set INT_MAX + 1");
|
|
Packit Service |
779887 |
assert(try_get_map_string_item_as_uint(map, key, &retval) || !"Failed to return int(INT_MAX + 1)");
|
|
Packit Service |
779887 |
assert(INT_MAX + 1 == retval || !"Failed to convert 'INT_MAX + 1' to int(INT_MAX + 1)");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
set_map_string_item_from_uint(map, key, UINT_MAX);
|
|
Packit Service |
779887 |
assert(try_get_map_string_item_as_uint(map, key, &retval) || !"Cannot return UINT_MAX");
|
|
Packit Service |
779887 |
assert(retval == UINT_MAX || !"Garbled UINT_MAX");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
set_map_string_item_from_uint(map, key, 0);
|
|
Packit Service |
779887 |
assert(try_get_map_string_item_as_uint(map, key, &retval) || !"Cannot return 0");
|
|
Packit Service |
779887 |
assert(retval == 0 || !"Garbled 0");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
retval = 69;
|
|
Packit Service |
779887 |
replace_map_string_item(map, xstrdup(key), xstrdup(""));
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_uint(map, key, &retval) || !"Converts '' to number");
|
|
Packit Service |
779887 |
assert(retval == 69 || !"Modifies int(69) on ''");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
replace_map_string_item(map, xstrdup(key), xstrdup("foo"));
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_uint(map, key, &retval) || !"Converts 'foo' to number");
|
|
Packit Service |
779887 |
assert(retval == 69 || !"Modifies int(69) on 'foo'");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
replace_map_string_item(map, xstrdup(key), xstrdup("777foo"));
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_uint(map, key, &retval) || !"Converts '777foo' to number");
|
|
Packit Service |
779887 |
assert(retval == 69 || !"Modifies int(69) on '777foo'");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
replace_map_string_item(map, xstrdup(key), xstrdup("77777777777777777777777777777777"));
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_uint(map, key, &retval) || !"Converts '77777777777777777777777777777777' to number");
|
|
Packit Service |
779887 |
assert(retval == 69 || !"Modifies int(69) on '77777777777777777777777777777777'");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
replace_map_string_item(map, xstrdup(key), xstrdup("-1"));
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_uint(map, key, &retval) || !"Converts '-1' to unsigned number");
|
|
Packit Service |
779887 |
assert(retval == 69 || !"Modifies int(69) on '-1'");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
free_map_string(map);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
const char *const key = "my_string";
|
|
Packit Service |
779887 |
map_string_t *map = new_map_string();
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
char *retval = NULL;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_string(map, key, &retval) || !"Returns string(NULL) even if option does not exist");
|
|
Packit Service |
779887 |
assert(retval == NULL || !"Modifies string(NULL) return value on failure");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
char *bck = xstrdup("test");
|
|
Packit Service |
779887 |
retval = bck;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_string(map, key, &retval) || !"Returns string('test') even if option does not exist");
|
|
Packit Service |
779887 |
assert(retval == bck || !"Modifies string('test') return value on failure");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
retval = xstrdup(bck);
|
|
Packit Service |
779887 |
set_map_string_item_from_string(map, key, bck);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
free(bck);
|
|
Packit Service |
779887 |
bck = retval;
|
|
Packit Service |
779887 |
retval = NULL;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(try_get_map_string_item_as_string(map, key, &retval) || !"Cannot return string('test')");
|
|
Packit Service |
779887 |
assert(NULL != retval || !"The return value is not assigned to the return variable");
|
|
Packit Service |
779887 |
assert(strcmp(bck, retval) == 0 || !"Garbled string('test') after freeing the original pointer");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
free(bck);
|
|
Packit Service |
779887 |
free(retval);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
bck = xstrdup(key);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
set_map_string_item_from_string(map, bck, "test");
|
|
Packit Service |
779887 |
free(bck);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(try_get_map_string_item_as_string(map, key, &retval) || !"Cannot find key string('my_string') after freeing original key");
|
|
Packit Service |
779887 |
assert(NULL != retval || !"The return value is not assigned to the return variable");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
/* disabled because this line was failing during an i686 build on RHEL8 */
|
|
Packit Service |
779887 |
/* need to investigate what it's good for in the first place */
|
|
Packit Service |
779887 |
//assert(strcmp(bck, retval) == 0 || !"Garbled string('test') after freeing the original key value");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
/* TODO: try to store really big string */
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
free_map_string(map);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
const char *const key = "my_string_vector";
|
|
Packit Service |
779887 |
map_string_t *map = new_map_string();
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
string_vector_ptr_t retval = NULL;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(!try_get_map_string_item_as_string_vector(map, key, &retval) || !"Returns string_vector(NULL) even if option does not exist");
|
|
Packit Service |
779887 |
assert(retval == NULL || !"Modifies string_vector(NULL) return value on failure");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
const char *const raw_value = "foo, blah, bang";
|
|
Packit Service |
779887 |
string_vector_ptr_t vector = string_vector_new_from_string(raw_value);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
set_map_string_item_from_string_vector(map, key, vector);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(get_map_string_item_or_NULL(map, key) || !"Set string_vector('foo, blah, bang')");
|
|
Packit Service |
779887 |
assert(strcmp(raw_value, get_map_string_item_or_NULL(map, key)) == 0 || !"Invalid string repr for string_vector('foo, blah, bang')");
|
|
Packit Service |
779887 |
assert(try_get_map_string_item_as_string_vector(map, key, &retval) || !"Failed to return string_vector('foo, blah, bang')");
|
|
Packit Service |
779887 |
assert(retval || !"Failed to convert 'foo, blah, bang' to string_vector('foo, blah, bang')");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
string_vector_free(vector);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
free_map_string(map);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
]])
|