This is ad-hoc test program for LINEARN_LINEAR macro. --- sys/dev/auconv.c +++ sys/dev/auconv.c @@ -54,6 +54,7 @@ __KERNEL_RCSID(0, "$NetBSD: auconv.c,v 1.31 2017/07/30 00:47:48 nat Exp $"); #include #include #include +#define min(a,b) ((aflags = encodings->items[aep->index].flags; return 0; } + +#ifndef _KERNEL +/* + * gcc -Dpaddr_t=ulong -Dpsize_t=ulong \ + * -I.. -I/dst/usr/include \ + * auconv.c -o + */ +#include +#include +#include + +int total; +int failed; +jmp_buf jmpenv; + +/* derived from audio.c:audio_stream_ctor() */ +int +audio_stream_ctor(audio_stream_t *stream, const audio_params_t *param, int size) +{ + memset(stream, 0, sizeof(*stream)); + stream->bufsize = size; + stream->start = malloc(size); + stream->end = stream->start + size; + stream->inp = stream->start; + stream->outp = stream->start; + stream->used = 0; + stream->param = *param; + return 0; +} + +void +audio_stream_dtor(audio_stream_t *stream) +{ + free(stream->start); +} + +/* dummy */ +int +test_fetcher_fetch_to(struct audio_softc *sc, stream_fetcher_t *self, + audio_stream_t *p, int max_used) +{ + return 0; +} + +void +sigalarm(int signo) +{ + longjmp(jmpenv, 1); +} + +int +test_linear( + int (*testfunc)(struct audio_softc *, stream_fetcher_t *, + audio_stream_t *, int), + const char *testname, + int srcenc, int srcprec, int srcvalid, + int dstenc, int dstprec, int dstvalid, + const uint8_t *expected) +{ + stream_filter_t this; + stream_fetcher_t fetcher; + audio_stream_t sstream; + audio_stream_t dstream; + audio_params_t sparam; + audio_params_t dparam; + struct itimerval itimer; + int max_used = 4; + int dstlen; + int i; + + total++; + + dstlen = dstprec / NBBY; + + sparam.encoding = srcenc; + sparam.precision = srcprec; + sparam.validbits = srcvalid; + sparam.channels = 1; + + dparam.encoding = dstenc; + dparam.precision = dstprec; + dparam.validbits = dstvalid; + dparam.channels = 1; + + audio_stream_ctor(&sstream, &sparam, max_used); + audio_stream_ctor(&dstream, &dparam, max_used); + + memcpy(sstream.inp, "\x01\x02\x03\x04", max_used); + sstream.inp += max_used; + sstream.used += max_used; + + this.prev = &fetcher; + this.prev->fetch_to = test_fetcher_fetch_to; + this.src = &sstream; + + /* set signal for infinate loop... */ + signal(SIGVTALRM, sigalarm); + memset(&itimer, 0, sizeof(itimer)); + itimer.it_value.tv_sec = 0; + itimer.it_value.tv_usec = 50 * 1000; + + printf("%s", testname); + fflush(stdout); + setitimer(ITIMER_VIRTUAL, &itimer, NULL); + if (setjmp(jmpenv) == 0) { + testfunc(NULL, (stream_fetcher_t *)&this, &dstream, dstlen); + signal(SIGVTALRM, SIG_IGN); + } else { + printf(" expects "); + for (i = 0; i < dstlen; i++) + printf("%02x", expected[i]); + printf(" but infinate loop!\n"); + failed++; + goto done; + } + + if (dstlen != dstream.used || + memcmp(dstream.start, expected, dstlen) != 0) { + printf(" expects "); + for (i = 0; i < dstlen; i++) + printf("%02x", expected[i]); + printf(" but "); + if (dstream.used == 0) { + printf("no output!"); + } else { + for (i = 0; i < dstream.used; i++) + printf("%02x", ((unsigned char *)dstream.start)[i]); + } + printf("\n"); + failed++; + } else { + printf(" ok "); + for (i = 0; i < dstlen; i++) + printf("%02x", expected[i]); + printf("\n"); + } + + done: + audio_stream_dtor(&sstream); + audio_stream_dtor(&dstream); + return 0; +} + +#define TEST(SPREC, SVALID, DPREC, SENC, DENC, EXPECTED) \ + test_linear(linear##SPREC##_##SVALID##_to_linear##DPREC##_fetch_to,\ + "linear" #SPREC "_" #SVALID "_to_linear" #DPREC "(" #SENC "->" #DENC ")",\ + AUDIO_ENCODING_##SENC, SPREC, SVALID, \ + AUDIO_ENCODING_##DENC, DPREC, DPREC, \ + EXPECTED) + +int +main(int ac, char *av[]) +{ + /* generated by script */ + TEST(32, 32, 32, SLINEAR_LE, SLINEAR_LE, "\x01\x02\x03\x04"); + TEST(32, 32, 32, SLINEAR_LE, SLINEAR_BE, "\x04\x03\x02\x01"); + TEST(32, 32, 32, SLINEAR_LE, ULINEAR_LE, "\x01\x02\x03\x84"); + TEST(32, 32, 32, SLINEAR_LE, ULINEAR_BE, "\x84\x03\x02\x01"); + TEST(32, 32, 32, SLINEAR_BE, SLINEAR_LE, "\x04\x03\x02\x01"); + TEST(32, 32, 32, SLINEAR_BE, SLINEAR_BE, "\x01\x02\x03\x04"); + TEST(32, 32, 32, SLINEAR_BE, ULINEAR_LE, "\x04\x03\x02\x81"); + TEST(32, 32, 32, SLINEAR_BE, ULINEAR_BE, "\x81\x02\x03\x04"); + TEST(32, 32, 32, ULINEAR_LE, SLINEAR_LE, "\x01\x02\x03\x84"); + TEST(32, 32, 32, ULINEAR_LE, SLINEAR_BE, "\x84\x03\x02\x01"); + TEST(32, 32, 32, ULINEAR_LE, ULINEAR_LE, "\x01\x02\x03\x04"); + TEST(32, 32, 32, ULINEAR_LE, ULINEAR_BE, "\x04\x03\x02\x01"); + TEST(32, 32, 32, ULINEAR_BE, SLINEAR_LE, "\x04\x03\x02\x81"); + TEST(32, 32, 32, ULINEAR_BE, SLINEAR_BE, "\x81\x02\x03\x04"); + TEST(32, 32, 32, ULINEAR_BE, ULINEAR_LE, "\x04\x03\x02\x01"); + TEST(32, 32, 32, ULINEAR_BE, ULINEAR_BE, "\x01\x02\x03\x04"); + TEST(32, 32, 24, SLINEAR_LE, SLINEAR_LE, "\x02\x03\x04"); + TEST(32, 32, 24, SLINEAR_LE, SLINEAR_BE, "\x04\x03\x02"); + TEST(32, 32, 24, SLINEAR_LE, ULINEAR_LE, "\x02\x03\x84"); + TEST(32, 32, 24, SLINEAR_LE, ULINEAR_BE, "\x84\x03\x02"); + TEST(32, 32, 24, SLINEAR_BE, SLINEAR_LE, "\x03\x02\x01"); + TEST(32, 32, 24, SLINEAR_BE, SLINEAR_BE, "\x01\x02\x03"); + TEST(32, 32, 24, SLINEAR_BE, ULINEAR_LE, "\x03\x02\x81"); + TEST(32, 32, 24, SLINEAR_BE, ULINEAR_BE, "\x81\x02\x03"); + TEST(32, 32, 24, ULINEAR_LE, SLINEAR_LE, "\x02\x03\x84"); + TEST(32, 32, 24, ULINEAR_LE, SLINEAR_BE, "\x84\x03\x02"); + TEST(32, 32, 24, ULINEAR_LE, ULINEAR_LE, "\x02\x03\x04"); + TEST(32, 32, 24, ULINEAR_LE, ULINEAR_BE, "\x04\x03\x02"); + TEST(32, 32, 24, ULINEAR_BE, SLINEAR_LE, "\x03\x02\x81"); + TEST(32, 32, 24, ULINEAR_BE, SLINEAR_BE, "\x81\x02\x03"); + TEST(32, 32, 24, ULINEAR_BE, ULINEAR_LE, "\x03\x02\x01"); + TEST(32, 32, 24, ULINEAR_BE, ULINEAR_BE, "\x01\x02\x03"); + TEST(32, 32, 16, SLINEAR_LE, SLINEAR_LE, "\x03\x04"); + TEST(32, 32, 16, SLINEAR_LE, SLINEAR_BE, "\x04\x03"); + TEST(32, 32, 16, SLINEAR_LE, ULINEAR_LE, "\x03\x84"); + TEST(32, 32, 16, SLINEAR_LE, ULINEAR_BE, "\x84\x03"); + TEST(32, 32, 16, SLINEAR_BE, SLINEAR_LE, "\x02\x01"); + TEST(32, 32, 16, SLINEAR_BE, SLINEAR_BE, "\x01\x02"); + TEST(32, 32, 16, SLINEAR_BE, ULINEAR_LE, "\x02\x81"); + TEST(32, 32, 16, SLINEAR_BE, ULINEAR_BE, "\x81\x02"); + TEST(32, 32, 16, ULINEAR_LE, SLINEAR_LE, "\x03\x84"); + TEST(32, 32, 16, ULINEAR_LE, SLINEAR_BE, "\x84\x03"); + TEST(32, 32, 16, ULINEAR_LE, ULINEAR_LE, "\x03\x04"); + TEST(32, 32, 16, ULINEAR_LE, ULINEAR_BE, "\x04\x03"); + TEST(32, 32, 16, ULINEAR_BE, SLINEAR_LE, "\x02\x81"); + TEST(32, 32, 16, ULINEAR_BE, SLINEAR_BE, "\x81\x02"); + TEST(32, 32, 16, ULINEAR_BE, ULINEAR_LE, "\x02\x01"); + TEST(32, 32, 16, ULINEAR_BE, ULINEAR_BE, "\x01\x02"); + TEST(32, 32, 8, SLINEAR_LE, SLINEAR_LE, "\x04"); + TEST(32, 32, 8, SLINEAR_LE, SLINEAR_BE, "\x04"); + TEST(32, 32, 8, SLINEAR_LE, ULINEAR_LE, "\x84"); + TEST(32, 32, 8, SLINEAR_LE, ULINEAR_BE, "\x84"); + TEST(32, 32, 8, SLINEAR_BE, SLINEAR_LE, "\x01"); + TEST(32, 32, 8, SLINEAR_BE, SLINEAR_BE, "\x01"); + TEST(32, 32, 8, SLINEAR_BE, ULINEAR_LE, "\x81"); + TEST(32, 32, 8, SLINEAR_BE, ULINEAR_BE, "\x81"); + TEST(32, 32, 8, ULINEAR_LE, SLINEAR_LE, "\x84"); + TEST(32, 32, 8, ULINEAR_LE, SLINEAR_BE, "\x84"); + TEST(32, 32, 8, ULINEAR_LE, ULINEAR_LE, "\x04"); + TEST(32, 32, 8, ULINEAR_LE, ULINEAR_BE, "\x04"); + TEST(32, 32, 8, ULINEAR_BE, SLINEAR_LE, "\x81"); + TEST(32, 32, 8, ULINEAR_BE, SLINEAR_BE, "\x81"); + TEST(32, 32, 8, ULINEAR_BE, ULINEAR_LE, "\x01"); + TEST(32, 32, 8, ULINEAR_BE, ULINEAR_BE, "\x01"); + TEST(24, 32, 32, SLINEAR_LE, SLINEAR_LE, "\x00\x01\x02\x03"); + TEST(24, 32, 32, SLINEAR_LE, SLINEAR_BE, "\x03\x02\x01\x00"); + TEST(24, 32, 32, SLINEAR_LE, ULINEAR_LE, "\x00\x01\x02\x83"); + TEST(24, 32, 32, SLINEAR_LE, ULINEAR_BE, "\x83\x02\x01\x00"); + TEST(24, 32, 32, SLINEAR_BE, SLINEAR_LE, "\x00\x04\x03\x02"); + TEST(24, 32, 32, SLINEAR_BE, SLINEAR_BE, "\x02\x03\x04\x00"); + TEST(24, 32, 32, SLINEAR_BE, ULINEAR_LE, "\x00\x04\x03\x82"); + TEST(24, 32, 32, SLINEAR_BE, ULINEAR_BE, "\x82\x03\x04\x00"); + TEST(24, 32, 32, ULINEAR_LE, SLINEAR_LE, "\x00\x01\x02\x83"); + TEST(24, 32, 32, ULINEAR_LE, SLINEAR_BE, "\x83\x02\x01\x00"); + TEST(24, 32, 32, ULINEAR_LE, ULINEAR_LE, "\x00\x01\x02\x03"); + TEST(24, 32, 32, ULINEAR_LE, ULINEAR_BE, "\x03\x02\x01\x00"); + TEST(24, 32, 32, ULINEAR_BE, SLINEAR_LE, "\x00\x04\x03\x82"); + TEST(24, 32, 32, ULINEAR_BE, SLINEAR_BE, "\x82\x03\x04\x00"); + TEST(24, 32, 32, ULINEAR_BE, ULINEAR_LE, "\x00\x04\x03\x02"); + TEST(24, 32, 32, ULINEAR_BE, ULINEAR_BE, "\x02\x03\x04\x00"); + TEST(24, 32, 24, SLINEAR_LE, SLINEAR_LE, "\x01\x02\x03"); + TEST(24, 32, 24, SLINEAR_LE, SLINEAR_BE, "\x03\x02\x01"); + TEST(24, 32, 24, SLINEAR_LE, ULINEAR_LE, "\x01\x02\x83"); + TEST(24, 32, 24, SLINEAR_LE, ULINEAR_BE, "\x83\x02\x01"); + TEST(24, 32, 24, SLINEAR_BE, SLINEAR_LE, "\x04\x03\x02"); + TEST(24, 32, 24, SLINEAR_BE, SLINEAR_BE, "\x02\x03\x04"); + TEST(24, 32, 24, SLINEAR_BE, ULINEAR_LE, "\x04\x03\x82"); + TEST(24, 32, 24, SLINEAR_BE, ULINEAR_BE, "\x82\x03\x04"); + TEST(24, 32, 24, ULINEAR_LE, SLINEAR_LE, "\x01\x02\x83"); + TEST(24, 32, 24, ULINEAR_LE, SLINEAR_BE, "\x83\x02\x01"); + TEST(24, 32, 24, ULINEAR_LE, ULINEAR_LE, "\x01\x02\x03"); + TEST(24, 32, 24, ULINEAR_LE, ULINEAR_BE, "\x03\x02\x01"); + TEST(24, 32, 24, ULINEAR_BE, SLINEAR_LE, "\x04\x03\x82"); + TEST(24, 32, 24, ULINEAR_BE, SLINEAR_BE, "\x82\x03\x04"); + TEST(24, 32, 24, ULINEAR_BE, ULINEAR_LE, "\x04\x03\x02"); + TEST(24, 32, 24, ULINEAR_BE, ULINEAR_BE, "\x02\x03\x04"); + TEST(24, 32, 16, SLINEAR_LE, SLINEAR_LE, "\x02\x03"); + TEST(24, 32, 16, SLINEAR_LE, SLINEAR_BE, "\x03\x02"); + TEST(24, 32, 16, SLINEAR_LE, ULINEAR_LE, "\x02\x83"); + TEST(24, 32, 16, SLINEAR_LE, ULINEAR_BE, "\x83\x02"); + TEST(24, 32, 16, SLINEAR_BE, SLINEAR_LE, "\x03\x02"); + TEST(24, 32, 16, SLINEAR_BE, SLINEAR_BE, "\x02\x03"); + TEST(24, 32, 16, SLINEAR_BE, ULINEAR_LE, "\x03\x82"); + TEST(24, 32, 16, SLINEAR_BE, ULINEAR_BE, "\x82\x03"); + TEST(24, 32, 16, ULINEAR_LE, SLINEAR_LE, "\x02\x83"); + TEST(24, 32, 16, ULINEAR_LE, SLINEAR_BE, "\x83\x02"); + TEST(24, 32, 16, ULINEAR_LE, ULINEAR_LE, "\x02\x03"); + TEST(24, 32, 16, ULINEAR_LE, ULINEAR_BE, "\x03\x02"); + TEST(24, 32, 16, ULINEAR_BE, SLINEAR_LE, "\x03\x82"); + TEST(24, 32, 16, ULINEAR_BE, SLINEAR_BE, "\x82\x03"); + TEST(24, 32, 16, ULINEAR_BE, ULINEAR_LE, "\x03\x02"); + TEST(24, 32, 16, ULINEAR_BE, ULINEAR_BE, "\x02\x03"); + TEST(24, 32, 8, SLINEAR_LE, SLINEAR_LE, "\x03"); + TEST(24, 32, 8, SLINEAR_LE, SLINEAR_BE, "\x03"); + TEST(24, 32, 8, SLINEAR_LE, ULINEAR_LE, "\x83"); + TEST(24, 32, 8, SLINEAR_LE, ULINEAR_BE, "\x83"); + TEST(24, 32, 8, SLINEAR_BE, SLINEAR_LE, "\x02"); + TEST(24, 32, 8, SLINEAR_BE, SLINEAR_BE, "\x02"); + TEST(24, 32, 8, SLINEAR_BE, ULINEAR_LE, "\x82"); + TEST(24, 32, 8, SLINEAR_BE, ULINEAR_BE, "\x82"); + TEST(24, 32, 8, ULINEAR_LE, SLINEAR_LE, "\x83"); + TEST(24, 32, 8, ULINEAR_LE, SLINEAR_BE, "\x83"); + TEST(24, 32, 8, ULINEAR_LE, ULINEAR_LE, "\x03"); + TEST(24, 32, 8, ULINEAR_LE, ULINEAR_BE, "\x03"); + TEST(24, 32, 8, ULINEAR_BE, SLINEAR_LE, "\x82"); + TEST(24, 32, 8, ULINEAR_BE, SLINEAR_BE, "\x82"); + TEST(24, 32, 8, ULINEAR_BE, ULINEAR_LE, "\x02"); + TEST(24, 32, 8, ULINEAR_BE, ULINEAR_BE, "\x02"); + TEST(24, 24, 32, SLINEAR_LE, SLINEAR_LE, "\x00\x01\x02\x03"); + TEST(24, 24, 32, SLINEAR_LE, SLINEAR_BE, "\x03\x02\x01\x00"); + TEST(24, 24, 32, SLINEAR_LE, ULINEAR_LE, "\x00\x01\x02\x83"); + TEST(24, 24, 32, SLINEAR_LE, ULINEAR_BE, "\x83\x02\x01\x00"); + TEST(24, 24, 32, SLINEAR_BE, SLINEAR_LE, "\x00\x03\x02\x01"); + TEST(24, 24, 32, SLINEAR_BE, SLINEAR_BE, "\x01\x02\x03\x00"); + TEST(24, 24, 32, SLINEAR_BE, ULINEAR_LE, "\x00\x03\x02\x81"); + TEST(24, 24, 32, SLINEAR_BE, ULINEAR_BE, "\x81\x02\x03\x00"); + TEST(24, 24, 32, ULINEAR_LE, SLINEAR_LE, "\x00\x01\x02\x83"); + TEST(24, 24, 32, ULINEAR_LE, SLINEAR_BE, "\x83\x02\x01\x00"); + TEST(24, 24, 32, ULINEAR_LE, ULINEAR_LE, "\x00\x01\x02\x03"); + TEST(24, 24, 32, ULINEAR_LE, ULINEAR_BE, "\x03\x02\x01\x00"); + TEST(24, 24, 32, ULINEAR_BE, SLINEAR_LE, "\x00\x03\x02\x81"); + TEST(24, 24, 32, ULINEAR_BE, SLINEAR_BE, "\x81\x02\x03\x00"); + TEST(24, 24, 32, ULINEAR_BE, ULINEAR_LE, "\x00\x03\x02\x01"); + TEST(24, 24, 32, ULINEAR_BE, ULINEAR_BE, "\x01\x02\x03\x00"); + TEST(24, 24, 24, SLINEAR_LE, SLINEAR_LE, "\x01\x02\x03"); + TEST(24, 24, 24, SLINEAR_LE, SLINEAR_BE, "\x03\x02\x01"); + TEST(24, 24, 24, SLINEAR_LE, ULINEAR_LE, "\x01\x02\x83"); + TEST(24, 24, 24, SLINEAR_LE, ULINEAR_BE, "\x83\x02\x01"); + TEST(24, 24, 24, SLINEAR_BE, SLINEAR_LE, "\x03\x02\x01"); + TEST(24, 24, 24, SLINEAR_BE, SLINEAR_BE, "\x01\x02\x03"); + TEST(24, 24, 24, SLINEAR_BE, ULINEAR_LE, "\x03\x02\x81"); + TEST(24, 24, 24, SLINEAR_BE, ULINEAR_BE, "\x81\x02\x03"); + TEST(24, 24, 24, ULINEAR_LE, SLINEAR_LE, "\x01\x02\x83"); + TEST(24, 24, 24, ULINEAR_LE, SLINEAR_BE, "\x83\x02\x01"); + TEST(24, 24, 24, ULINEAR_LE, ULINEAR_LE, "\x01\x02\x03"); + TEST(24, 24, 24, ULINEAR_LE, ULINEAR_BE, "\x03\x02\x01"); + TEST(24, 24, 24, ULINEAR_BE, SLINEAR_LE, "\x03\x02\x81"); + TEST(24, 24, 24, ULINEAR_BE, SLINEAR_BE, "\x81\x02\x03"); + TEST(24, 24, 24, ULINEAR_BE, ULINEAR_LE, "\x03\x02\x01"); + TEST(24, 24, 24, ULINEAR_BE, ULINEAR_BE, "\x01\x02\x03"); + TEST(24, 24, 16, SLINEAR_LE, SLINEAR_LE, "\x02\x03"); + TEST(24, 24, 16, SLINEAR_LE, SLINEAR_BE, "\x03\x02"); + TEST(24, 24, 16, SLINEAR_LE, ULINEAR_LE, "\x02\x83"); + TEST(24, 24, 16, SLINEAR_LE, ULINEAR_BE, "\x83\x02"); + TEST(24, 24, 16, SLINEAR_BE, SLINEAR_LE, "\x02\x01"); + TEST(24, 24, 16, SLINEAR_BE, SLINEAR_BE, "\x01\x02"); + TEST(24, 24, 16, SLINEAR_BE, ULINEAR_LE, "\x02\x81"); + TEST(24, 24, 16, SLINEAR_BE, ULINEAR_BE, "\x81\x02"); + TEST(24, 24, 16, ULINEAR_LE, SLINEAR_LE, "\x02\x83"); + TEST(24, 24, 16, ULINEAR_LE, SLINEAR_BE, "\x83\x02"); + TEST(24, 24, 16, ULINEAR_LE, ULINEAR_LE, "\x02\x03"); + TEST(24, 24, 16, ULINEAR_LE, ULINEAR_BE, "\x03\x02"); + TEST(24, 24, 16, ULINEAR_BE, SLINEAR_LE, "\x02\x81"); + TEST(24, 24, 16, ULINEAR_BE, SLINEAR_BE, "\x81\x02"); + TEST(24, 24, 16, ULINEAR_BE, ULINEAR_LE, "\x02\x01"); + TEST(24, 24, 16, ULINEAR_BE, ULINEAR_BE, "\x01\x02"); + TEST(24, 24, 8, SLINEAR_LE, SLINEAR_LE, "\x03"); + TEST(24, 24, 8, SLINEAR_LE, SLINEAR_BE, "\x03"); + TEST(24, 24, 8, SLINEAR_LE, ULINEAR_LE, "\x83"); + TEST(24, 24, 8, SLINEAR_LE, ULINEAR_BE, "\x83"); + TEST(24, 24, 8, SLINEAR_BE, SLINEAR_LE, "\x01"); + TEST(24, 24, 8, SLINEAR_BE, SLINEAR_BE, "\x01"); + TEST(24, 24, 8, SLINEAR_BE, ULINEAR_LE, "\x81"); + TEST(24, 24, 8, SLINEAR_BE, ULINEAR_BE, "\x81"); + TEST(24, 24, 8, ULINEAR_LE, SLINEAR_LE, "\x83"); + TEST(24, 24, 8, ULINEAR_LE, SLINEAR_BE, "\x83"); + TEST(24, 24, 8, ULINEAR_LE, ULINEAR_LE, "\x03"); + TEST(24, 24, 8, ULINEAR_LE, ULINEAR_BE, "\x03"); + TEST(24, 24, 8, ULINEAR_BE, SLINEAR_LE, "\x81"); + TEST(24, 24, 8, ULINEAR_BE, SLINEAR_BE, "\x81"); + TEST(24, 24, 8, ULINEAR_BE, ULINEAR_LE, "\x01"); + TEST(24, 24, 8, ULINEAR_BE, ULINEAR_BE, "\x01"); + TEST(16, 16, 32, SLINEAR_LE, SLINEAR_LE, "\x00\x00\x01\x02"); + TEST(16, 16, 32, SLINEAR_LE, SLINEAR_BE, "\x02\x01\x00\x00"); + TEST(16, 16, 32, SLINEAR_LE, ULINEAR_LE, "\x00\x00\x01\x82"); + TEST(16, 16, 32, SLINEAR_LE, ULINEAR_BE, "\x82\x01\x00\x00"); + TEST(16, 16, 32, SLINEAR_BE, SLINEAR_LE, "\x00\x00\x02\x01"); + TEST(16, 16, 32, SLINEAR_BE, SLINEAR_BE, "\x01\x02\x00\x00"); + TEST(16, 16, 32, SLINEAR_BE, ULINEAR_LE, "\x00\x00\x02\x81"); + TEST(16, 16, 32, SLINEAR_BE, ULINEAR_BE, "\x81\x02\x00\x00"); + TEST(16, 16, 32, ULINEAR_LE, SLINEAR_LE, "\x00\x00\x01\x82"); + TEST(16, 16, 32, ULINEAR_LE, SLINEAR_BE, "\x82\x01\x00\x00"); + TEST(16, 16, 32, ULINEAR_LE, ULINEAR_LE, "\x00\x00\x01\x02"); + TEST(16, 16, 32, ULINEAR_LE, ULINEAR_BE, "\x02\x01\x00\x00"); + TEST(16, 16, 32, ULINEAR_BE, SLINEAR_LE, "\x00\x00\x02\x81"); + TEST(16, 16, 32, ULINEAR_BE, SLINEAR_BE, "\x81\x02\x00\x00"); + TEST(16, 16, 32, ULINEAR_BE, ULINEAR_LE, "\x00\x00\x02\x01"); + TEST(16, 16, 32, ULINEAR_BE, ULINEAR_BE, "\x01\x02\x00\x00"); + TEST(16, 16, 24, SLINEAR_LE, SLINEAR_LE, "\x00\x01\x02"); + TEST(16, 16, 24, SLINEAR_LE, SLINEAR_BE, "\x02\x01\x00"); + TEST(16, 16, 24, SLINEAR_LE, ULINEAR_LE, "\x00\x01\x82"); + TEST(16, 16, 24, SLINEAR_LE, ULINEAR_BE, "\x82\x01\x00"); + TEST(16, 16, 24, SLINEAR_BE, SLINEAR_LE, "\x00\x02\x01"); + TEST(16, 16, 24, SLINEAR_BE, SLINEAR_BE, "\x01\x02\x00"); + TEST(16, 16, 24, SLINEAR_BE, ULINEAR_LE, "\x00\x02\x81"); + TEST(16, 16, 24, SLINEAR_BE, ULINEAR_BE, "\x81\x02\x00"); + TEST(16, 16, 24, ULINEAR_LE, SLINEAR_LE, "\x00\x01\x82"); + TEST(16, 16, 24, ULINEAR_LE, SLINEAR_BE, "\x82\x01\x00"); + TEST(16, 16, 24, ULINEAR_LE, ULINEAR_LE, "\x00\x01\x02"); + TEST(16, 16, 24, ULINEAR_LE, ULINEAR_BE, "\x02\x01\x00"); + TEST(16, 16, 24, ULINEAR_BE, SLINEAR_LE, "\x00\x02\x81"); + TEST(16, 16, 24, ULINEAR_BE, SLINEAR_BE, "\x81\x02\x00"); + TEST(16, 16, 24, ULINEAR_BE, ULINEAR_LE, "\x00\x02\x01"); + TEST(16, 16, 24, ULINEAR_BE, ULINEAR_BE, "\x01\x02\x00"); + TEST(16, 16, 16, SLINEAR_LE, SLINEAR_LE, "\x01\x02"); + TEST(16, 16, 16, SLINEAR_LE, SLINEAR_BE, "\x02\x01"); + TEST(16, 16, 16, SLINEAR_LE, ULINEAR_LE, "\x01\x82"); + TEST(16, 16, 16, SLINEAR_LE, ULINEAR_BE, "\x82\x01"); + TEST(16, 16, 16, SLINEAR_BE, SLINEAR_LE, "\x02\x01"); + TEST(16, 16, 16, SLINEAR_BE, SLINEAR_BE, "\x01\x02"); + TEST(16, 16, 16, SLINEAR_BE, ULINEAR_LE, "\x02\x81"); + TEST(16, 16, 16, SLINEAR_BE, ULINEAR_BE, "\x81\x02"); + TEST(16, 16, 16, ULINEAR_LE, SLINEAR_LE, "\x01\x82"); + TEST(16, 16, 16, ULINEAR_LE, SLINEAR_BE, "\x82\x01"); + TEST(16, 16, 16, ULINEAR_LE, ULINEAR_LE, "\x01\x02"); + TEST(16, 16, 16, ULINEAR_LE, ULINEAR_BE, "\x02\x01"); + TEST(16, 16, 16, ULINEAR_BE, SLINEAR_LE, "\x02\x81"); + TEST(16, 16, 16, ULINEAR_BE, SLINEAR_BE, "\x81\x02"); + TEST(16, 16, 16, ULINEAR_BE, ULINEAR_LE, "\x02\x01"); + TEST(16, 16, 16, ULINEAR_BE, ULINEAR_BE, "\x01\x02"); + TEST(16, 16, 8, SLINEAR_LE, SLINEAR_LE, "\x02"); + TEST(16, 16, 8, SLINEAR_LE, SLINEAR_BE, "\x02"); + TEST(16, 16, 8, SLINEAR_LE, ULINEAR_LE, "\x82"); + TEST(16, 16, 8, SLINEAR_LE, ULINEAR_BE, "\x82"); + TEST(16, 16, 8, SLINEAR_BE, SLINEAR_LE, "\x01"); + TEST(16, 16, 8, SLINEAR_BE, SLINEAR_BE, "\x01"); + TEST(16, 16, 8, SLINEAR_BE, ULINEAR_LE, "\x81"); + TEST(16, 16, 8, SLINEAR_BE, ULINEAR_BE, "\x81"); + TEST(16, 16, 8, ULINEAR_LE, SLINEAR_LE, "\x82"); + TEST(16, 16, 8, ULINEAR_LE, SLINEAR_BE, "\x82"); + TEST(16, 16, 8, ULINEAR_LE, ULINEAR_LE, "\x02"); + TEST(16, 16, 8, ULINEAR_LE, ULINEAR_BE, "\x02"); + TEST(16, 16, 8, ULINEAR_BE, SLINEAR_LE, "\x81"); + TEST(16, 16, 8, ULINEAR_BE, SLINEAR_BE, "\x81"); + TEST(16, 16, 8, ULINEAR_BE, ULINEAR_LE, "\x01"); + TEST(16, 16, 8, ULINEAR_BE, ULINEAR_BE, "\x01"); + TEST(8, 8, 32, SLINEAR_LE, SLINEAR_LE, "\x00\x00\x00\x01"); + TEST(8, 8, 32, SLINEAR_LE, SLINEAR_BE, "\x01\x00\x00\x00"); + TEST(8, 8, 32, SLINEAR_LE, ULINEAR_LE, "\x00\x00\x00\x81"); + TEST(8, 8, 32, SLINEAR_LE, ULINEAR_BE, "\x81\x00\x00\x00"); + TEST(8, 8, 32, SLINEAR_BE, SLINEAR_LE, "\x00\x00\x00\x01"); + TEST(8, 8, 32, SLINEAR_BE, SLINEAR_BE, "\x01\x00\x00\x00"); + TEST(8, 8, 32, SLINEAR_BE, ULINEAR_LE, "\x00\x00\x00\x81"); + TEST(8, 8, 32, SLINEAR_BE, ULINEAR_BE, "\x81\x00\x00\x00"); + TEST(8, 8, 32, ULINEAR_LE, SLINEAR_LE, "\x00\x00\x00\x81"); + TEST(8, 8, 32, ULINEAR_LE, SLINEAR_BE, "\x81\x00\x00\x00"); + TEST(8, 8, 32, ULINEAR_LE, ULINEAR_LE, "\x00\x00\x00\x01"); + TEST(8, 8, 32, ULINEAR_LE, ULINEAR_BE, "\x01\x00\x00\x00"); + TEST(8, 8, 32, ULINEAR_BE, SLINEAR_LE, "\x00\x00\x00\x81"); + TEST(8, 8, 32, ULINEAR_BE, SLINEAR_BE, "\x81\x00\x00\x00"); + TEST(8, 8, 32, ULINEAR_BE, ULINEAR_LE, "\x00\x00\x00\x01"); + TEST(8, 8, 32, ULINEAR_BE, ULINEAR_BE, "\x01\x00\x00\x00"); + TEST(8, 8, 24, SLINEAR_LE, SLINEAR_LE, "\x00\x00\x01"); + TEST(8, 8, 24, SLINEAR_LE, SLINEAR_BE, "\x01\x00\x00"); + TEST(8, 8, 24, SLINEAR_LE, ULINEAR_LE, "\x00\x00\x81"); + TEST(8, 8, 24, SLINEAR_LE, ULINEAR_BE, "\x81\x00\x00"); + TEST(8, 8, 24, SLINEAR_BE, SLINEAR_LE, "\x00\x00\x01"); + TEST(8, 8, 24, SLINEAR_BE, SLINEAR_BE, "\x01\x00\x00"); + TEST(8, 8, 24, SLINEAR_BE, ULINEAR_LE, "\x00\x00\x81"); + TEST(8, 8, 24, SLINEAR_BE, ULINEAR_BE, "\x81\x00\x00"); + TEST(8, 8, 24, ULINEAR_LE, SLINEAR_LE, "\x00\x00\x81"); + TEST(8, 8, 24, ULINEAR_LE, SLINEAR_BE, "\x81\x00\x00"); + TEST(8, 8, 24, ULINEAR_LE, ULINEAR_LE, "\x00\x00\x01"); + TEST(8, 8, 24, ULINEAR_LE, ULINEAR_BE, "\x01\x00\x00"); + TEST(8, 8, 24, ULINEAR_BE, SLINEAR_LE, "\x00\x00\x81"); + TEST(8, 8, 24, ULINEAR_BE, SLINEAR_BE, "\x81\x00\x00"); + TEST(8, 8, 24, ULINEAR_BE, ULINEAR_LE, "\x00\x00\x01"); + TEST(8, 8, 24, ULINEAR_BE, ULINEAR_BE, "\x01\x00\x00"); + TEST(8, 8, 16, SLINEAR_LE, SLINEAR_LE, "\x00\x01"); + TEST(8, 8, 16, SLINEAR_LE, SLINEAR_BE, "\x01\x00"); + TEST(8, 8, 16, SLINEAR_LE, ULINEAR_LE, "\x00\x81"); + TEST(8, 8, 16, SLINEAR_LE, ULINEAR_BE, "\x81\x00"); + TEST(8, 8, 16, SLINEAR_BE, SLINEAR_LE, "\x00\x01"); + TEST(8, 8, 16, SLINEAR_BE, SLINEAR_BE, "\x01\x00"); + TEST(8, 8, 16, SLINEAR_BE, ULINEAR_LE, "\x00\x81"); + TEST(8, 8, 16, SLINEAR_BE, ULINEAR_BE, "\x81\x00"); + TEST(8, 8, 16, ULINEAR_LE, SLINEAR_LE, "\x00\x81"); + TEST(8, 8, 16, ULINEAR_LE, SLINEAR_BE, "\x81\x00"); + TEST(8, 8, 16, ULINEAR_LE, ULINEAR_LE, "\x00\x01"); + TEST(8, 8, 16, ULINEAR_LE, ULINEAR_BE, "\x01\x00"); + TEST(8, 8, 16, ULINEAR_BE, SLINEAR_LE, "\x00\x81"); + TEST(8, 8, 16, ULINEAR_BE, SLINEAR_BE, "\x81\x00"); + TEST(8, 8, 16, ULINEAR_BE, ULINEAR_LE, "\x00\x01"); + TEST(8, 8, 16, ULINEAR_BE, ULINEAR_BE, "\x01\x00"); + TEST(8, 8, 8, SLINEAR_LE, SLINEAR_LE, "\x01"); + TEST(8, 8, 8, SLINEAR_LE, SLINEAR_BE, "\x01"); + TEST(8, 8, 8, SLINEAR_LE, ULINEAR_LE, "\x81"); + TEST(8, 8, 8, SLINEAR_LE, ULINEAR_BE, "\x81"); + TEST(8, 8, 8, SLINEAR_BE, SLINEAR_LE, "\x01"); + TEST(8, 8, 8, SLINEAR_BE, SLINEAR_BE, "\x01"); + TEST(8, 8, 8, SLINEAR_BE, ULINEAR_LE, "\x81"); + TEST(8, 8, 8, SLINEAR_BE, ULINEAR_BE, "\x81"); + TEST(8, 8, 8, ULINEAR_LE, SLINEAR_LE, "\x81"); + TEST(8, 8, 8, ULINEAR_LE, SLINEAR_BE, "\x81"); + TEST(8, 8, 8, ULINEAR_LE, ULINEAR_LE, "\x01"); + TEST(8, 8, 8, ULINEAR_LE, ULINEAR_BE, "\x01"); + TEST(8, 8, 8, ULINEAR_BE, SLINEAR_LE, "\x81"); + TEST(8, 8, 8, ULINEAR_BE, SLINEAR_BE, "\x81"); + TEST(8, 8, 8, ULINEAR_BE, ULINEAR_LE, "\x01"); + TEST(8, 8, 8, ULINEAR_BE, ULINEAR_BE, "\x01"); + + printf("%d tests, %d passed, %d failed\n", total, total - failed, failed); + return 0; +} +#endif