// 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_interface_descriptor.h"

#include <libusb.h>

#include <gtest/gtest.h>

#include "mist/usb_device.h"

namespace mist {

TEST(UsbInterfaceDescriptorTest, TrivialGetters) {
  libusb_interface_descriptor descriptor;
  descriptor.bLength = 9;
  descriptor.bDescriptorType = LIBUSB_DT_INTERFACE;
  descriptor.bInterfaceNumber = 1;
  descriptor.bNumEndpoints = 5;
  descriptor.bInterfaceClass = 0x02;
  descriptor.bInterfaceSubClass = 0x03;
  descriptor.bInterfaceProtocol = 0x04;

  base::WeakPtr<UsbDevice> device;
  UsbInterfaceDescriptor interface_descriptor(device, &descriptor);
  EXPECT_EQ(9, interface_descriptor.GetLength());
  EXPECT_EQ(LIBUSB_DT_INTERFACE, interface_descriptor.GetDescriptorType());
  EXPECT_EQ(1, interface_descriptor.GetInterfaceNumber());
  EXPECT_EQ(5, interface_descriptor.GetNumEndpoints());
  EXPECT_EQ(0x02, interface_descriptor.GetInterfaceClass());
  EXPECT_EQ(0x03, interface_descriptor.GetInterfaceSubclass());
  EXPECT_EQ(0x04, interface_descriptor.GetInterfaceProtocol());
}

}  // namespace mist
