/* * @(#) $Revision: 4.3 $ $Source: /judy/src/funcs/Judy1DupCheck.c $ * * Judy1DupCheck.c * * Test Judy1Dup.c */ #include <errno.h> #include <limits.h> #include "Judy1Dup.h" #define LARRAYSIZE(array) sizeof(array)/sizeof(Word_t) // fcn to init a Judy array with an array of ulong's Pvoid_t ularray2Judy(Word_t *ularray, Word_t ularray_size) { Word_t i; Pvoid_t PJArray = 0; JError_t JError; for (i = 0L; i < ularray_size; i++) { if (Judy1Set(&PJArray, ularray[i], &JError) == JERR) { printf("ularray2Judy: Judy1Set failure, error %d\n", JU_ERRNO(&JError)); exit(2); } } return PJArray; } /* ularray2Judy */ int main() { static Word_t knowns[] = { 0, 1, 1024, 4095, 4096, 4097, 4098, 123456 }; int i; Pvoid_t PJArray = 0; Pvoid_t PJArrayNew = 0; Word_t Index; int Judy_rv; // Judy Return value JError_t JError; // populate a judy array with known values PJArray = ularray2Judy(knowns, LARRAYSIZE(knowns)); printf("Testing Judy1Dup ..."); // dup the judy array if ((Judy1Dup(&PJArrayNew, PJArray, &JError)) == JERR) { printf("Judy1Dup failed: error %d\n", JU_ERRNO(&JError)); return (2); } // compare the duped array with known values for (i = 0, Index = 0L, Judy_rv = Judy1First(PJArrayNew, &Index, &JError); Judy_rv == 1; i++, Judy_rv = Judy1Next(PJArrayNew, &Index, &JError)) { if (Index != knowns[i]) { printf("Judy1DupCheck Failed: Judy1Dup does not match original\n"); return (2); } } if (i != LARRAYSIZE(knowns)) { printf ("Judy1DupCheck Failed: Judy1Dup does not match original (too short)\n"); exit(2); } else printf("Ok\n"); return (0); }