#include #include #include #include #include #include #include #include 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; ASSERT_EQ(gpio_open(&gpio_1), EXIT_SUCCESS); } UTEST(gpio_open, invalid_gpio_obj) { ASSERT_EQ(gpio_open(NULL), EXIT_FAILURE); } 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); }