/** * \file * * * \brief FIFO and KFileFifo test. * * \author Bernie Innocenti */ #include #include #include #include #include int kfilefifo_testSetup(void) { kdbg_init(); return 0; } int kfilefifo_testRun(void) { #define FIFOBUF_LEN 256 uint8_t buf[FIFOBUF_LEN]; FIFOBuffer fifo; fifo_init(&fifo, buf, sizeof(buf)); ASSERT(fifo_isempty(&fifo)); ASSERT(!fifo_isfull(&fifo)); for (int i = 0; i < FIFOBUF_LEN - 1; i++) { ASSERT(!fifo_isfull(&fifo)); fifo_push(&fifo, i); } ASSERT(fifo_isfull(&fifo)); for (int i = 0; i < FIFOBUF_LEN - 1; i++) { ASSERT(!fifo_isempty(&fifo)); ASSERT(fifo_pop(&fifo) == i); } ASSERT(fifo_isempty(&fifo)); for (int i = 0; i < FIFOBUF_LEN - 1; i++) { ASSERT(!fifo_isfull(&fifo)); fifo_push(&fifo, i); } ASSERT(fifo_isfull(&fifo)); fifo_flush(&fifo); ASSERT(!fifo_isfull(&fifo)); ASSERT(fifo_isempty(&fifo)); KFileFifo kfifo; kfilefifo_init(&kfifo, &fifo); for (int i = 0; i < FIFOBUF_LEN - 1; i++) { ASSERT(!fifo_isfull(&fifo)); fifo_push(&fifo, i); } for (int i = 0; i < FIFOBUF_LEN - 1; i++) ASSERT(kfile_getc(&kfifo.fd) == i); ASSERT(kfile_getc(&kfifo.fd) == EOF); ASSERT(fifo_isempty(&fifo)); for (int i = 0; i < FIFOBUF_LEN - 1; i++) ASSERT(kfile_putc(i, &kfifo.fd) == i); ASSERT(fifo_isfull(&fifo)); for (int i = 0; i < FIFOBUF_LEN - 1; i++) { ASSERT(!fifo_isempty(&fifo)); ASSERT(fifo_pop(&fifo) == i); } ASSERT(fifo_isempty(&fifo)); for (int i = 0; i < FIFOBUF_LEN - 1; i++) ASSERT(kfile_putc(i, &kfifo.fd) == i); ASSERT(fifo_isfull(&fifo)); ASSERT(kfile_putc('a', &kfifo.fd) == EOF); fifo_flush(&fifo); ASSERT(!fifo_isfull(&fifo)); ASSERT(fifo_isempty(&fifo)); ASSERT(kfile_getc(&kfifo.fd) == EOF); ASSERT(kfile_write(&kfifo.fd, "hello world", 11) == 11); ASSERT(kfile_write(&kfifo.fd, "hello world", FIFOBUF_LEN) == FIFOBUF_LEN - 1 - 11); uint8_t test_buf[FIFOBUF_LEN]; ASSERT(kfile_read(&kfifo.fd, test_buf, FIFOBUF_LEN + 20) == FIFOBUF_LEN - 1); ASSERT(!fifo_isfull(&fifo)); ASSERT(fifo_isempty(&fifo)); ASSERT(kfile_getc(&kfifo.fd) == EOF); return 0; } int kfilefifo_testTearDown(void) { return 0; } TEST_MAIN(kfilefifo);