| // Copyright (c) 2013 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "mist/usb_endpoint_descriptor.h" |
| |
| #include <libusb.h> |
| |
| #include <gtest/gtest.h> |
| |
| namespace mist { |
| |
| TEST(UsbEndpointDescriptorTest, TrivialGetters) { |
| libusb_endpoint_descriptor descriptor; |
| descriptor.bLength = 7; |
| descriptor.bDescriptorType = LIBUSB_DT_ENDPOINT; |
| descriptor.bEndpointAddress = 0x81; |
| descriptor.bmAttributes = 0x3; |
| descriptor.wMaxPacketSize = 64; |
| descriptor.bInterval = 32; |
| |
| UsbEndpointDescriptor endpoint_descriptor(&descriptor); |
| EXPECT_EQ(7, endpoint_descriptor.GetLength()); |
| EXPECT_EQ(LIBUSB_DT_ENDPOINT, endpoint_descriptor.GetDescriptorType()); |
| EXPECT_EQ(0x81, endpoint_descriptor.GetEndpointAddress()); |
| EXPECT_EQ(1, endpoint_descriptor.GetEndpointNumber()); |
| EXPECT_EQ(0x3, endpoint_descriptor.GetAttributes()); |
| EXPECT_EQ(64, endpoint_descriptor.GetMaxPacketSize()); |
| EXPECT_EQ(32, endpoint_descriptor.GetInterval()); |
| } |
| |
| TEST(UsbEndpointDescriptorTest, GetDirection) { |
| { |
| libusb_endpoint_descriptor descriptor; |
| descriptor.bEndpointAddress = LIBUSB_ENDPOINT_IN | 0x1; |
| |
| UsbEndpointDescriptor endpoint_descriptor(&descriptor); |
| EXPECT_EQ(kUsbDirectionIn, endpoint_descriptor.GetDirection()); |
| } |
| { |
| libusb_endpoint_descriptor descriptor; |
| descriptor.bEndpointAddress = LIBUSB_ENDPOINT_OUT | 0x1; |
| |
| UsbEndpointDescriptor endpoint_descriptor(&descriptor); |
| EXPECT_EQ(kUsbDirectionOut, endpoint_descriptor.GetDirection()); |
| } |
| } |
| |
| TEST(UsbEndpointDescriptorTest, GetTransferType) { |
| { |
| libusb_endpoint_descriptor descriptor; |
| descriptor.bmAttributes = LIBUSB_TRANSFER_TYPE_CONTROL; |
| |
| UsbEndpointDescriptor endpoint_descriptor(&descriptor); |
| EXPECT_EQ(kUsbTransferTypeControl, endpoint_descriptor.GetTransferType()); |
| } |
| { |
| libusb_endpoint_descriptor descriptor; |
| descriptor.bmAttributes = LIBUSB_TRANSFER_TYPE_ISOCHRONOUS; |
| |
| UsbEndpointDescriptor endpoint_descriptor(&descriptor); |
| EXPECT_EQ(kUsbTransferTypeIsochronous, |
| endpoint_descriptor.GetTransferType()); |
| } |
| { |
| libusb_endpoint_descriptor descriptor; |
| descriptor.bmAttributes = LIBUSB_TRANSFER_TYPE_BULK; |
| |
| UsbEndpointDescriptor endpoint_descriptor(&descriptor); |
| EXPECT_EQ(kUsbTransferTypeBulk, endpoint_descriptor.GetTransferType()); |
| } |
| { |
| libusb_endpoint_descriptor descriptor; |
| descriptor.bmAttributes = LIBUSB_TRANSFER_TYPE_INTERRUPT; |
| |
| UsbEndpointDescriptor endpoint_descriptor(&descriptor); |
| EXPECT_EQ(kUsbTransferTypeInterrupt, endpoint_descriptor.GetTransferType()); |
| } |
| } |
| |
| } // namespace mist |