Blame src/functional/search_lsearch.c
|
Szabolcs Nagy |
132e38 |
#include <string.h>
|
|
Szabolcs Nagy |
132e38 |
#include <search.h>
|
|
Szabolcs Nagy |
132e38 |
#include "test.h"
|
|
Szabolcs Nagy |
132e38 |
|
|
Szabolcs Nagy |
132e38 |
#define W 80
|
|
Szabolcs Nagy |
132e38 |
static char tab[100][W];
|
|
Szabolcs Nagy |
132e38 |
static size_t nel;
|
|
Szabolcs Nagy |
132e38 |
|
|
Szabolcs Nagy |
132e38 |
#define set(k) do{ \
|
|
Szabolcs Nagy |
132e38 |
char *r = lsearch(k, tab, &nel, W, (int(*)(const void*,const void*))strcmp); \
|
|
Szabolcs Nagy |
132e38 |
if (strcmp(r, k) != 0) \
|
|
Szabolcs Nagy |
132e38 |
t_error("lsearch %s failed\n", #k); \
|
|
Szabolcs Nagy |
132e38 |
}while(0)
|
|
Szabolcs Nagy |
132e38 |
|
|
Szabolcs Nagy |
132e38 |
#define get(k) lfind(k, tab, &nel, W, (int(*)(const void*,const void*))strcmp)
|
|
Szabolcs Nagy |
132e38 |
|
|
Szabolcs Nagy |
132e38 |
int main()
|
|
Szabolcs Nagy |
132e38 |
{
|
|
Szabolcs Nagy |
132e38 |
size_t n;
|
|
Szabolcs Nagy |
132e38 |
|
|
Szabolcs Nagy |
132e38 |
set("");
|
|
Szabolcs Nagy |
132e38 |
set("a");
|
|
Szabolcs Nagy |
132e38 |
set("b");
|
|
Szabolcs Nagy |
132e38 |
set("abc");
|
|
Szabolcs Nagy |
132e38 |
set("cd");
|
|
Szabolcs Nagy |
132e38 |
set("e");
|
|
Szabolcs Nagy |
132e38 |
set("ef");
|
|
Szabolcs Nagy |
132e38 |
set("g");
|
|
Szabolcs Nagy |
132e38 |
set("h");
|
|
Szabolcs Nagy |
132e38 |
set("iiiiiiiiii");
|
|
Szabolcs Nagy |
132e38 |
if (!get("a"))
|
|
Szabolcs Nagy |
132e38 |
t_error("lfind a failed\n");
|
|
Szabolcs Nagy |
132e38 |
if (get("c"))
|
|
Szabolcs Nagy |
132e38 |
t_error("lfind c should fail\n");
|
|
Szabolcs Nagy |
132e38 |
n = nel;
|
|
Szabolcs Nagy |
132e38 |
set("g");
|
|
Szabolcs Nagy |
132e38 |
if (nel != n)
|
|
Szabolcs Nagy |
132e38 |
t_error("lsearch g should not modify the table size (%d, was %d)\n", nel, n);
|
|
Szabolcs Nagy |
132e38 |
n = nel;
|
|
Szabolcs Nagy |
132e38 |
set("j");
|
|
Szabolcs Nagy |
132e38 |
if (nel != n+1)
|
|
Szabolcs Nagy |
132e38 |
t_error("lsearch j should increase the table size (%d, was %d)\n", nel, n);
|
|
Szabolcs Nagy |
132e38 |
return t_status;
|
|
Szabolcs Nagy |
132e38 |
}
|