diff --git a/tests/testbcd.c b/tests/testbcd.c index b87eadbf2..592fa39e3 100644 --- a/tests/testbcd.c +++ b/tests/testbcd.c @@ -9,30 +9,42 @@ #include #include "misc.h" +#define MAXDIGITS 32 int main (int argc, char *argv[]) { - unsigned char b[5]; + unsigned char b[(MAXDIGITS+1)/2]; freq_t f=0; + int digits = 10; + int i; - if (argc != 2) { - fprintf(stderr,"Usage: %s \n",argv[0]); + if (argc != 2 && argc != 3) { + fprintf(stderr,"Usage: %s [digits]\n",argv[0]); exit(1); } - f = atoi(argv[1]); - + f = atoll(argv[1]); + if (argc > 2) { + digits = atoi(argv[2]); + if (digits > MAXDIGITS) + exit(1); + } + printf("Little Endian mode\n"); printf("Frequency: %lld\n",f); - to_bcd(b, f, 10); - printf("BCD: %2.2x,%2.2x,%2.2x,%2.2x,%2.2x\n",b[0],b[1],b[2],b[3],b[4]); - printf("Result after recoding: %lld\n", from_bcd(b, 10)); + to_bcd(b, f, digits); + printf("BCD: %2.2x",b[0]); + for (i = 1; i < (digits+1)/2; i++) + printf(",%2.2x",b[i]); + printf("\nResult after recoding: %lld\n", from_bcd(b, digits)); printf("\nBig Endian mode\n"); printf("Frequency: %lld\n",f); - to_bcd_be(b, f, 10); - printf("BCD: %2.2x,%2.2x,%2.2x,%2.2x,%2.2x\n",b[0],b[1],b[2],b[3],b[4]); - printf("Result after recoding: %lld\n", from_bcd_be(b, 10)); + to_bcd_be(b, f, digits); + printf("BCD: %2.2x",b[0]); + for (i = 1; i < (digits+1)/2; i++) + printf(",%2.2x",b[i]); + printf("\nResult after recoding: %lld\n", from_bcd_be(b, digits)); return 0; }