summaryrefslogtreecommitdiff
path: root/snmplib/test_binary_array.c
diff options
context:
space:
mode:
Diffstat (limited to 'snmplib/test_binary_array.c')
-rw-r--r--snmplib/test_binary_array.c171
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();
+}