81 lines
1.5 KiB
C
81 lines
1.5 KiB
C
#include <criterion/criterion.h>
|
|
#include "cig.h"
|
|
|
|
Test(map_key_equals, ints) {
|
|
{ // should be equal
|
|
int key1 = 20;
|
|
int key2 = 20;
|
|
map_header_t header = (map_header_t) { 0 };
|
|
header.key_size = sizeof(key1);
|
|
cr_assert(
|
|
map_key_equals(
|
|
&header,
|
|
(const uint8_t*)&key1,
|
|
(const uint8_t*)&key2
|
|
),
|
|
"key %d is not equal to key %d",
|
|
key1,
|
|
key2
|
|
);
|
|
}
|
|
{ // should not be equal
|
|
int key1 = 20;
|
|
int key2 = 21;
|
|
map_header_t header = (map_header_t) { 0 };
|
|
header.key_size = sizeof(key1);
|
|
cr_assert(
|
|
!map_key_equals(
|
|
&header,
|
|
(const uint8_t*)&key1,
|
|
(const uint8_t*)&key2
|
|
),
|
|
"key %d is equal to key %d",
|
|
key1,
|
|
key2
|
|
);
|
|
}
|
|
}
|
|
|
|
static bool inverse_int_equals(const void *key1, const void *key2) {
|
|
int key1_i = *((int*)key1);
|
|
int key2_i = *((int*)key2);
|
|
return key1_i != key2_i;
|
|
}
|
|
|
|
Test(map_key_equals, custom) {
|
|
{ // should be equal
|
|
int key1 = 20;
|
|
int key2 = 21;
|
|
map_header_t header = (map_header_t) { 0 };
|
|
header.key_size = sizeof(key1);
|
|
header.equals = inverse_int_equals;
|
|
cr_assert(
|
|
map_key_equals(
|
|
&header,
|
|
(const uint8_t*)&key1,
|
|
(const uint8_t*)&key2
|
|
),
|
|
"key %d is equal to key %d",
|
|
key1,
|
|
key2
|
|
);
|
|
}
|
|
{ // should not be equal
|
|
int key1 = 20;
|
|
int key2 = 20;
|
|
map_header_t header = (map_header_t) { 0 };
|
|
header.key_size = sizeof(key1);
|
|
header.equals = inverse_int_equals;
|
|
cr_assert(
|
|
!map_key_equals(
|
|
&header,
|
|
(const uint8_t*)&key1,
|
|
(const uint8_t*)&key2
|
|
),
|
|
"key %d is not equal to key %d",
|
|
key1,
|
|
key2
|
|
);
|
|
}
|
|
}
|