| /* HEADER Testing binary OID array */ |
| |
| static const char test_name[] = "binary-array-of-OIDs-test"; |
| 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; |
| const netsnmp_index *const i_last = &i5; |
| netsnmp_index *a[] = { &ix, &iy }; |
| netsnmp_index *b[] = { &i4, &i2, &i3, &i1, &i5 }; |
| netsnmp_container *c; |
| int i; |
| |
| init_snmp(test_name); |
| |
| c = netsnmp_container_get_binary_array(); |
| 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; |
| |
| for (i = 0; i < sizeof(b)/sizeof(b[0]); ++i) |
| CONTAINER_INSERT(c, b[i]); |
| |
| for (ip = CONTAINER_FIRST(c); ip; ip = CONTAINER_NEXT(c, ip)) { |
| for (i = sizeof(b)/sizeof(b[0]) - 1; i >= 0; --i) |
| if (c->compare(ip, b[i]) == 0) |
| break; |
| OKF(i >= 0, ("OID b[%d] = %" NETSNMP_PRIo "d present", i, b[i]->oids[0])); |
| } |
| |
| for (i = 0; i < sizeof(b)/sizeof(b[0]); ++i) { |
| ip = CONTAINER_FIND(c, b[i]); |
| OKF(ip, ("Value b[%d] = %" NETSNMP_PRIo "d present", i, b[i]->oids[0])); |
| ip = CONTAINER_NEXT(c, b[i]); |
| if (c->compare(b[i], i_last) < 0) |
| OKF(ip && c->compare(b[i], ip) < 0, |
| ("Successor of b[%d] = %" NETSNMP_PRIo "d is %" NETSNMP_PRIo "d", |
| i, b[i]->oids[0], ip->oids[0])); |
| else |
| OKF(!ip, ("No successor found for b[%d] = %" NETSNMP_PRIo "d", i, |
| b[i]->oids[0])); |
| } |
| |
| for (i = 0; i < sizeof(a)/sizeof(a[0]); ++i) { |
| ip = CONTAINER_FIND(c, a[i]); |
| OKF(!ip, ("a[%d] = %" NETSNMP_PRIo "d absent", i, a[i]->oids[0])); |
| ip = CONTAINER_NEXT(c, a[i]); |
| if (c->compare(a[i], i_last) < 0) |
| OKF(ip && c->compare(ip, a[i]) > 0, |
| ("Successor of a[%d] = %" NETSNMP_PRIo "d is %" NETSNMP_PRIo "d", |
| i, a[i]->oids[0], ip->oids[0])); |
| else |
| OKF(!ip, ("No successor found for a[%d] = %" NETSNMP_PRIo "d", i, |
| a[i]->oids[0])); |
| } |
| |
| while ((ip = CONTAINER_FIRST(c))) |
| CONTAINER_REMOVE(c, ip); |
| CONTAINER_FREE(c); |
| |
| snmp_shutdown(test_name); |