int main() { struct Allocator* alloc = MallocAllocator_new(1<<22); struct Random* rand = Random_new(alloc, NULL, NULL); uint8_t ip[16]; uint8_t printedIp[40]; uint8_t printedShortIp[40]; uint8_t ipFromFull[16]; uint8_t ipFromShort[16]; for (int i = 0; i < 1024; ++i) { Random_bytes(rand, ip, 16); AddrTools_printIp(printedIp, ip); AddrTools_printShortIp(printedShortIp, ip); printf("%s\n%s\n\n", printedIp, printedShortIp); AddrTools_parseIp(ipFromFull, printedIp); AddrTools_parseIp(ipFromShort, printedShortIp); Assert_true(0 == Bits_memcmp(ip, ipFromFull, 16)); Assert_true(0 == Bits_memcmp(ipFromFull, ipFromShort, 16)); } return 0; }
int main() { struct Allocator* alloc = MallocAllocator_new(1<<22); struct Random* rand = Random_new(alloc, NULL, NULL); struct Log* log = FileWriterLog_new(stdout, alloc); uint8_t ip[16]; uint8_t printedIp[40]; uint8_t printedShortIp[40]; uint8_t ipFromFull[16]; uint8_t ipFromShort[16]; for (int i = 0; i < 1024; ++i) { Random_bytes(rand, ip, 16); for (int j = 0; j < 16; j++) { // make the random result have lots of zeros since that's what we're looking for. ip[j] = (ip[j] % 2) ? 0 : ip[j]; } AddrTools_printIp(printedIp, ip); AddrTools_printShortIp(printedShortIp, ip); //printf("%s\n%s\n\n", printedIp, printedShortIp); AddrTools_parseIp(ipFromFull, printedIp); AddrTools_parseIp(ipFromShort, printedShortIp); Log_debug(log, "print/parse %s", printedIp); Assert_true(0 == Bits_memcmp(ip, ipFromFull, 16)); Assert_true(0 == Bits_memcmp(ipFromFull, ipFromShort, 16)); } Allocator_free(alloc); return 0; }