156 lines
4.0 KiB
C
156 lines
4.0 KiB
C
|
#include <stdlib.h>
|
||
|
#include <stdbool.h>
|
||
|
#include <time.h>
|
||
|
#include <sys/syscall.h>
|
||
|
|
||
|
#include <utest.h>
|
||
|
#include <mock_ftdi.h>
|
||
|
|
||
|
#include <ftdi_dev.h>
|
||
|
#include <gpio.h>
|
||
|
|
||
|
UTEST(gpio_open, invalid_ftdi_new_result) {
|
||
|
struct gpio gpio_1;
|
||
|
struct ftdi_dev ftdi_obj;
|
||
|
|
||
|
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;
|
||
|
|
||
|
ftdi_new_fake.return_val = NULL;
|
||
|
|
||
|
ASSERT_EQ(gpio_open(&gpio_1), EXIT_FAILURE);
|
||
|
}
|
||
|
|
||
|
UTEST(gpio_open, ftdi_usb_open_failed) {
|
||
|
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;
|
||
|
|
||
|
ftdi_new_fake.return_val = &ftdi_ctx;
|
||
|
ftdi_usb_open_fake.return_val = -1;
|
||
|
ASSERT_EQ(gpio_open(&gpio_1), EXIT_FAILURE);
|
||
|
}
|
||
|
|
||
|
UTEST(gpio_open, ftdi_read_data_failed) {
|
||
|
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;
|
||
|
|
||
|
ftdi_new_fake.return_val = &ftdi_ctx;
|
||
|
ftdi_usb_open_fake.return_val = 0;
|
||
|
ftdi_read_data_fake.return_val = -1;
|
||
|
ASSERT_EQ(gpio_open(&gpio_1), EXIT_FAILURE);
|
||
|
}
|
||
|
|
||
|
UTEST(gpio_open, ftdi_open_success) {
|
||
|
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;
|
||
|
|
||
|
ftdi_new_fake.return_val = &ftdi_ctx;
|
||
|
ftdi_usb_open_fake.return_val = 0;
|
||
|
ftdi_read_data_fake.return_val = 0;
|
||
|
ftdi_set_bitmode_fake.return_val = 0;
|
||
|
ftdi_write_data_fake.return_val = 0;
|
||
|
ASSERT_EQ(gpio_open(&gpio_1), EXIT_SUCCESS);
|
||
|
}
|
||
|
|
||
|
UTEST(gpio_open, ftdi_set_bitmode_failed) {
|
||
|
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;
|
||
|
|
||
|
ftdi_new_fake.return_val = &ftdi_ctx;
|
||
|
ftdi_usb_open_fake.return_val = 0;
|
||
|
ftdi_read_data_fake.return_val = 0;
|
||
|
ftdi_set_bitmode_fake.return_val = -1;
|
||
|
ASSERT_EQ(gpio_open(&gpio_1), EXIT_FAILURE);
|
||
|
}
|
||
|
|
||
|
UTEST(gpio_open, ftdi_write_data_failed) {
|
||
|
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;
|
||
|
|
||
|
ftdi_new_fake.return_val = &ftdi_ctx;
|
||
|
ftdi_usb_open_fake.return_val = 0;
|
||
|
ftdi_read_data_fake.return_val = 0;
|
||
|
ftdi_set_bitmode_fake.return_val = 0;
|
||
|
ftdi_write_data_fake.return_val = -1;
|
||
|
ASSERT_EQ(gpio_open(&gpio_1), EXIT_FAILURE);
|
||
|
}
|
||
|
|
||
|
UTEST(gpio_open, success) {
|
||
|
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;
|
||
|
|
||
|
ftdi_new_fake.return_val = &ftdi_ctx;
|
||
|
ftdi_usb_open_fake.return_val = 0;
|
||
|
ftdi_read_data_fake.return_val = 0;
|
||
|
ftdi_set_bitmode_fake.return_val = 0;
|
||
|
ftdi_write_data_fake.return_val = 0;
|
||
|
ASSERT_EQ(gpio_open(&gpio_1), EXIT_SUCCESS);
|
||
|
}
|