56 #include <sys/resource.h>
88 assert_string_equal(copy_var.
data.s,
"Hello world");
89 free(copy_var.
data.s);
115 assert_true(copy_var.
data.b);
119 assert_false(copy_var.
data.b);
123 assert_true(copy_var.
data.b);
127 assert_false(copy_var.
data.b);
131 assert_true(copy_var.
data.b);
135 assert_false(copy_var.
data.b);
139 assert_true(copy_var.
data.b);
143 assert_false(copy_var.
data.b);
147 assert_true(copy_var.
data.b);
172 var.
data.s =
"12345Hello World";
179 assert_int_equal(copy_var.
data.i64, 12345);
183 assert_int_equal(copy_var.
data.i64, 555);
187 assert_int_equal(copy_var.
data.i64, -987);
189 var.
data.s =
"92233720368547758081";
191 var.
data.s =
"-92233720368547758081";
217 var.
data.s =
"12345Hello World";
224 assert_int_equal(copy_var.
data.ui64, 12345);
228 assert_int_equal(copy_var.
data.ui64, 555);
232 assert_int_equal(copy_var.
data.ui64, 987);
234 var.
data.s =
"92233720368547758081";
268 var.
data.s = strdup(
"a,b,c,d,e");
293 var.
data.s = strdup(
"a , b , c , d , \t \n e");
318 var.
data.s = strdup(
"a,,b,,c,,d, ,e");
393 var.
data.s = strdup(
"a b c d e");
418 var.
data.s = strdup(
"a b c d e");
474 var.
data.s =
"key1:a,key2:b,key3:c,key4:d,key5:e";
536 var.
data.s =
"12345Hello World";
543 assert_true(copy_var.
data.d == 12345);
547 assert_true(copy_var.
data.d == 1e+10);
552 var.
data.s =
"2.2204460492503131e-400";
577 var.
data.s =
"12345Hello World";
584 assert_true(copy_var.
data.f == 12345);
589 var.
data.s =
"2.2204460492503131e-400";
624 assert_int_equal(result, 0);
626 var1.
data.s =
"Hello world";
627 var2.
data.s =
"Hello world";
630 assert_int_equal(result, 0);
632 var2.
data.s =
"Hello europe";
634 assert_true(result < 0);
636 var2.
data.s =
"Hello zulu";
638 assert_true(result > 0);
644 const char* consttext = NULL;
650 assert_string_equal(text,
"");
655 assert_string_equal(var1.
data.s,
"Hello world");
658 assert_ptr_not_equal(text, NULL);
659 assert_string_equal(text,
"Hello world");
665 assert_ptr_not_equal(text, NULL);
666 assert_string_equal(text,
"Hello world");
672 assert_ptr_not_equal(text, NULL);
673 assert_string_equal(text,
"Hello world");
677 assert_ptr_not_equal(text, NULL);
678 assert_string_equal(text,
"Hello world");
681 assert_ptr_not_equal(consttext, NULL);
682 assert_string_equal(consttext,
"Hello world");
685 assert_ptr_not_equal(text, NULL);
686 assert_string_equal(text,
"Hello world");
689 assert_ptr_not_equal(consttext, NULL);
690 assert_string_equal(consttext,
"Hello world");
693 assert_ptr_not_equal(text, NULL);
694 assert_string_equal(text,
"Hello world");
697 assert_ptr_not_equal(consttext, NULL);
698 assert_string_equal(consttext,
"Hello world");
701 assert_ptr_equal(text, NULL);
703 assert_ptr_equal(text, NULL);
705 assert_ptr_equal(text, NULL);
709 assert_ptr_equal(text, NULL);
711 assert_ptr_equal(consttext, NULL);
714 assert_ptr_equal(consttext, NULL);
717 assert_ptr_equal(consttext, NULL);
789 assert_ptr_not_equal(txt, NULL);
791 assert_ptr_equal(var1.
data.s, NULL);
792 assert_string_equal(txt,
"Hello World.");
796 assert_ptr_not_equal(var1.
data.s, NULL);
797 assert_string_equal(var1.
data.s,
"Hello World.");
802 assert_ptr_not_equal(var1.
data.s, NULL);
803 assert_string_equal(var1.
data.s,
"Hello World.");
808 assert_ptr_not_equal(var1.
data.s, NULL);
809 assert_string_equal(var1.
data.s,
"Hello World.");
953 assert_string_equal(
GETI_CHAR(&
test_var, 0),
"Phonebook.Contact.[FirstName=='ward'].PhoneNumber.*");
961 assert_string_equal(
GETI_CHAR(&
test_var, 0),
"Phonebook.Contact.[FirstName=='ward'].PhoneNumber.*");
Ambiorix variant API header file.
#define csv_string_t
Convenience macro.
#define ssv_string_t
Convenience macro.
#define cstring_t
Convenience macro.
#define amxc_var_from_htable_it(ht_it)
Get the variant pointer from an amxc htable iterator.
#define amxc_var_from_llist_it(ll_it)
Get the variant pointer from an amxc linked list iterator.
AMXC_INLINE const char * amxc_htable_it_get_key(const amxc_htable_it_t *const it)
Gets the key from the iterator.
amxc_htable_it_t * amxc_htable_get_first(const amxc_htable_t *const htable)
Gets the first item stored in the table.
AMXC_INLINE size_t amxc_htable_size(const amxc_htable_t *const htable)
Calculates the size of the hash table.
amxc_htable_it_t * amxc_htable_get(const amxc_htable_t *const htable, const char *const key)
Gets a hash table iterator from the hash table.
AMXC_INLINE amxc_llist_it_t * amxc_llist_it_get_next(const amxc_llist_it_t *const reference)
Gets the next iterator in the list.
size_t amxc_llist_size(const amxc_llist_t *const llist)
Calculates the size of the linked list.
void amxc_llist_clean(amxc_llist_t *const llist, amxc_llist_it_delete_t func)
Removes all items from the linked list.
AMXC_INLINE amxc_llist_it_t * amxc_llist_get_first(const amxc_llist_t *const llist)
Gets the first item of the linked list.
AMXC_INLINE char * amxc_var_get_csv_string_t(const amxc_var_t *const var)
Conversion helper function.
int amxc_var_set_cstring_t(amxc_var_t *const var, const char *const val)
Setter helper function.
void variant_list_it_free(amxc_llist_it_t *it)
Helper functions, can be used as delete function for linked lists.
int amxc_var_set_ssv_string_t(amxc_var_t *const var, const char *const val)
Setter helper function.
AMXC_INLINE char * amxc_var_get_ssv_string_t(const amxc_var_t *const var)
Conversion helper function.
char * amxc_var_get_cstring_t(const amxc_var_t *const var)
Conversion helper function.
int amxc_var_set_csv_string_t(amxc_var_t *const var, const char *const val)
Setter helper function.
#define AMXC_VAR_ID_UINT32
Unsigned 32 bit integer variant id.
#define AMXC_VAR_ID_CUSTOM_BASE
Base variant id for custom variants.
#define AMXC_VAR_ID_NULL
Null variant type id (aka void)
#define AMXC_VAR_ID_CSTRING
C-string variant id (aka char *), null terminated string.
#define AMXC_VAR_ID_UINT64
Unsigned 64 bit integer variant id.
#define AMXC_VAR_ID_DOUBLE
Double variant id.
#define AMXC_VAR_ID_SSV_STRING
Space Separated Values string variant id.
#define AMXC_VAR_ID_BOOL
Boolean variant id.
#define AMXC_VAR_ID_INT32
Signed 32 bit integer variant id.
#define AMXC_VAR_ID_ANY
Special variant id, typically used in cast or conversion functions.
#define AMXC_VAR_ID_TIMESTAMP
Ambiorix timestamp variant id.
#define AMXC_VAR_ID_FLOAT
Float variant id.
#define AMXC_VAR_ID_CSV_STRING
Comma Separated Values string variant id.
#define AMXC_VAR_ID_LIST
Ambiorix Linked List variant id.
#define AMXC_VAR_ID_HTABLE
Ambiorix Hash Table variant id.
#define AMXC_VAR_ID_INT64
Signed 64 bit integer variant id.
int amxc_var_dump(const amxc_var_t *const var, int fd)
Dumps the content of the variant in a human readable manner.
#define GETI_CHAR(a, i)
Convenience macro for getting a char* out of a composite variant by index.
#define GETP_CHAR(a, p)
Convenience macro for getting a string out of a composite variant by path.
#define GETI_ARG(a, i)
Convenience macro for getting variant out of a composite variant by index.
int amxc_var_move(amxc_var_t *const dest, amxc_var_t *const src)
Moves the type and data from one variant (source) in another variant (destination).
uint32_t amxc_var_type_of(const amxc_var_t *const var)
Gets the variant type id of a variant.
#define amxc_var_add_key(type, var, key, data)
Convenience macro for adding a variant to composite variant type.
#define amxc_var_add(type, var, data)
Convenience macro for adding a variant to composite variant type.
int amxc_var_set_type(amxc_var_t *const var, const uint32_t type)
Change the variant data type.
#define amxc_var_dyncast(type, var)
Dynamic cast a variant to a certain type.
#define amxc_var_take(type, var)
Takes the content from a variant.
int amxc_var_cast(amxc_var_t *const var, const uint32_t type_id)
Casts the variant to another variant type id.
int amxc_var_init(amxc_var_t *const var)
Initializes a variant.
int amxc_var_copy(amxc_var_t *const dest, const amxc_var_t *const src)
Copy the type and data from one variant (source) in another variant (destination).
void amxc_var_clean(amxc_var_t *const var)
Clean-up and reset variant.
#define amxc_var_push(type, var, val)
Pushes a value into the variant.
#define amxc_var_set(type, var, data)
Convenience macro for setting a value in a variant.
int amxc_var_convert(amxc_var_t *const dest, const amxc_var_t *src, const uint32_t type_id)
Converts one variant (source) to another variant(destination) using the specified variant type id.
int amxc_var_compare(const amxc_var_t *const var1, const amxc_var_t *const var2, int *const result)
Compares two variants.
#define amxc_var_constcast(type, var)
Takes the content from a variant.
The hash table iterator structure.
The hash table structure.
The linked list iterator structure.
The linked list structure.
The variant struct definition.
static amxc_htable_it_t it[2000]
static amxc_var_t test_var
void test_variant_ssv_char_convert_to_list(UNUSED void **state)
void test_variant_cstring_add(UNUSED void **state)
void test_variant_char_move(UNUSED void **state)
void test_variant_char_convert_to_list(UNUSED void **state)
void test_variant_char_take_push(UNUSED void **state)
void test_variant_char_convert_to_uinteger(UNUSED void **state)
void test_variant_char_set_get(UNUSED void **state)
void test_variant_char_convert_to_double(UNUSED void **state)
void test_variant_char_convert_to_bool(UNUSED void **state)
void test_variant_char_compare(UNUSED void **state)
void test_variant_char_convert_to_htable(UNUSED void **state)
void test_variant_char_convert_to_integer(UNUSED void **state)
void test_variant_char_convert_to_float(UNUSED void **state)
void test_variant_char_cast(UNUSED void **state)
void test_variant_char_copy_null(UNUSED void **state)
void test_variant_char_convert_to_ts(UNUSED void **state)
void test_variant_char_copy(UNUSED void **state)