Add unit test framework and simple unit test example

This commit is contained in:
Thomas Klaehn
2019-07-15 22:38:04 +02:00
parent e5f7de6df1
commit 66be59c7ee
6 changed files with 7472 additions and 10 deletions

46
test/unit/test_gpio.c Normal file
View File

@@ -0,0 +1,46 @@
#include <assert.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>
#include <sys/syscall.h>
#include <fff.h>
#include <utest.h>
#include <ftdi_dev.h>
#include <gpio.h>
DEFINE_FFF_GLOBALS;
FAKE_VOID_FUNC(ftdi_free, struct ftdi_context *);
FAKE_VALUE_FUNC(int, ftdi_usb_open, struct ftdi_context *, int, int);
FAKE_VALUE_FUNC(int, ftdi_usb_close, struct ftdi_context *);
FAKE_VALUE_FUNC(struct ftdi_context *, ftdi_new);
FAKE_VALUE_FUNC(const char *, ftdi_get_error_string, struct ftdi_context *);
FAKE_VALUE_FUNC(int, ftdi_set_bitmode, struct ftdi_context *, unsigned char, unsigned char);
FAKE_VALUE_FUNC(int, ftdi_read_data, struct ftdi_context *, unsigned char *, int);
FAKE_VALUE_FUNC(int, ftdi_write_data, struct ftdi_context *, const unsigned char *, int);
UTEST_MAIN();
UTEST(gpio, gpio_open) {
struct gpio gpio_1;
struct ftdi_dev ftdi_obj;
struct ftdi_context ftdi_ctx;
ftdi_obj.ftdi = NULL,
ftdi_obj.is_open = false,
ftdi_obj.vendor_id = 0x0403,
ftdi_obj.product_id = 0x6001,
ftdi_obj.bit_mask = 0,
ftdi_obj.status_mask = 0,
gpio_1.pin = 0x08;
gpio_1.ftdi_dev = &ftdi_obj;
ASSERT_EQ(gpio_open(NULL), EXIT_FAILURE);
ftdi_new_fake.return_val = &ftdi_ctx;
ASSERT_EQ(gpio_open(&gpio_1), EXIT_SUCCESS);
}