1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/message_loop/message_loop.h" 6 #include "base/strings/utf_string_conversions.h" 7 #include "device/test/usb_test_gadget.h" 8 #include "device/usb/usb_device.h" 9 #include "device/usb/usb_device_handle.h" 10 #include "testing/gtest/include/gtest/gtest.h" 11 12 namespace device { 13 14 namespace { 15 16 class UsbServiceTest : public ::testing::Test { 17 public: 18 virtual void SetUp() { 19 message_loop_.reset(new base::MessageLoopForIO); 20 } 21 22 private: 23 scoped_ptr<base::MessageLoop> message_loop_; 24 }; 25 26 TEST_F(UsbServiceTest, ClaimGadget) { 27 if (!UsbTestGadget::IsTestEnabled()) return; 28 29 scoped_ptr<UsbTestGadget> gadget = UsbTestGadget::Claim(); 30 ASSERT_TRUE(gadget.get()); 31 32 scoped_refptr<UsbDevice> device = gadget->GetDevice(); 33 base::string16 utf16; 34 ASSERT_TRUE(device->GetManufacturer(&utf16)); 35 ASSERT_EQ("Google Inc.", base::UTF16ToUTF8(utf16)); 36 37 ASSERT_TRUE(device->GetProduct(&utf16)); 38 ASSERT_EQ("Test Gadget (default state)", base::UTF16ToUTF8(utf16)); 39 40 ASSERT_TRUE(device->GetSerialNumber(&utf16)); 41 ASSERT_EQ(gadget->GetSerialNumber(), base::UTF16ToUTF8(utf16)); 42 } 43 44 TEST_F(UsbServiceTest, DisconnectAndReconnect) { 45 if (!UsbTestGadget::IsTestEnabled()) return; 46 47 scoped_ptr<UsbTestGadget> gadget = UsbTestGadget::Claim(); 48 ASSERT_TRUE(gadget.get()); 49 ASSERT_TRUE(gadget->Disconnect()); 50 ASSERT_TRUE(gadget->Reconnect()); 51 } 52 53 } // namespace 54 55 } // namespace device 56