diff options
Diffstat (limited to 'snmplib/test_binary_array.c')
-rw-r--r-- | snmplib/test_binary_array.c | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/snmplib/test_binary_array.c b/snmplib/test_binary_array.c new file mode 100644 index 0000000..44b1f0e --- /dev/null +++ b/snmplib/test_binary_array.c @@ -0,0 +1,171 @@ +#include <net-snmp/net-snmp-config.h> + +#if HAVE_IO_H +#include <io.h> +#endif +#include <stdio.h> +#if HAVE_STDLIB_H +#include <stdlib.h> +#endif +#if HAVE_MALLOC_H +#include <malloc.h> +#endif +#include <sys/types.h> +#if HAVE_STRING_H +#include <string.h> +#else +#include <strings.h> +#endif + +#include <net-snmp/net-snmp-includes.h> +#include <net-snmp/types.h> +#include <net-snmp/library/snmp_api.h> +#include <net-snmp/library/container.h> +#include <net-snmp/library/container_binary_array.h> +#include <net-snmp/library/tools.h> +#include <net-snmp/library/snmp_assert.h> + +#define TEST_SIZE 7 + +void +print_int(netsnmp_index *i, void *v) +{ + printf("item %p = %ld\n", i, i->oids[0]); +} + +int +test_int(void) +{ + oid o1 = 1; + oid o2 = 2; + oid o3 = 6; + oid o4 = 8; + oid o5 = 9; + oid ox = 7; + oid oy = 10; + netsnmp_index i1,i2,i3,i4,i5,ix,iy, *ip; + netsnmp_index *a[TEST_SIZE] = { &i1, &i2, &i3, &ix, &i4, &i5, &iy }; + netsnmp_container *c = netsnmp_container_get_binary_array(); + int i; + + c->compare = netsnmp_compare_netsnmp_index; + + i1.oids = &o1; + i2.oids = &o2; + i3.oids = &o3; + i4.oids = &o4; + i5.oids = &o5; + ix.oids = &ox; + iy.oids = &oy; + i1.len = i2.len = i3.len = i4.len = i5.len = ix.len = iy.len = 1; + + printf("Creating container...\n"); + + printf("Inserting data...\n"); + CONTAINER_INSERT(c,&i4); + CONTAINER_INSERT(c,&i2); + CONTAINER_INSERT(c,&i3); + CONTAINER_INSERT(c,&i1); + CONTAINER_INSERT(c,&i5); + + printf("For each...\n"); + CONTAINER_FOR_EACH(c, print_int, NULL); + printf("Done.\n"); + + printf("\n"); + ip = CONTAINER_FIRST(c); + printf("Find first = %p %ld\n",ip, ip->oids[0]); + while( ip ) { + ip = CONTAINER_NEXT(c,ip); + if(ip) + printf("Find next = %p %ld\n",ip, ip->oids[0]); + else + printf("Find next = %s\n",ip); + } + + for( i=0; i < TEST_SIZE; ++i) { + printf("\n"); + ip = CONTAINER_FIND(c,a[i]); + printf("Find %ld = %p %ld\n", a[i]->oids[0], ip, ip ? ip->oids[0] : 0); + ip = CONTAINER_NEXT(c,a[i]); + printf("Next %ld = %p %ld\n", a[i]->oids[0], ip, ip ? ip->oids[0] : 0); + } + + printf("Done.\n"); + + return 0; +} + +void +print_string(char *i, void *v) +{ + printf("item %s\n", i); +} + +int +my_strcmp(char *lhs, char *rhs) +{ + int rc = strcmp(lhs,rhs); +/* printf("%s %d %s\n",lhs, rc, rhs); */ + return rc; +} + +int +test_string() +{ + const char *o1 = "zebra"; + const char *o2 = "b-two"; + const char *o3 = "b"; + const char *o4 = "cedar"; + const char *o5 = "alpha"; + const char *ox = "dev"; + const char *oy = "aa"; + const char * ip; + + const char *a[TEST_SIZE] = { o1, o2, o3, ox, o4, o5, oy }; + netsnmp_container *c = netsnmp_container_get_binary_array(); + int i; + + c->compare = my_strcmp; + + printf("Creating container...\n"); + + printf("Inserting data...\n"); + CONTAINER_INSERT(c,o4); + CONTAINER_INSERT(c,o2); + CONTAINER_INSERT(c,o3); + CONTAINER_INSERT(c,o1); + CONTAINER_INSERT(c,o5); + printf("\n"); + printf("For each...\n"); + CONTAINER_FOR_EACH(c, print_string, NULL); + printf("Done.\n"); + + printf("\n"); + ip = CONTAINER_FIRST(c); + printf("Find first = %s\n",ip); + while( ip ) { + ip = CONTAINER_NEXT(c,ip); + printf("Find next = %s\n",ip); + } + + for( i=0; i < TEST_SIZE; ++i) { + printf("\n"); + ip = CONTAINER_FIND(c,a[i]); + printf("Find %s = %s\n", a[i], ip); + ip = CONTAINER_NEXT(c,a[i]); + printf("Next %s = %s\n", a[i], ip); + } + + printf("Done.\n"); + + return 0; +} + +int +main(int argc, char** argv) +{ + + test_int(); + test_string(); +} |