// Copyright 2018 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 #include #include namespace brillo { TEST(LoopDeviceTest, GeneralTest) { base::FilePath loop_backing_file; base::CreateTemporaryFile(&loop_backing_file); fake::FakeLoopDeviceManager loop_manager; // Create a new device std::unique_ptr device = loop_manager.AttachDeviceToFile(loop_backing_file); std::unique_ptr device1 = loop_manager.AttachDeviceToFile(loop_backing_file); std::unique_ptr device2 = loop_manager.AttachDeviceToFile(loop_backing_file); EXPECT_TRUE(device->IsValid()); EXPECT_TRUE(device1->IsValid()); EXPECT_TRUE(device2->IsValid()); std::vector> attached_devices = loop_manager.GetAttachedDevices(); // Expect 3 devices EXPECT_EQ(attached_devices.size(), 3); device2->SetName("Loopy"); std::unique_ptr device1_copy = loop_manager.GetAttachedDeviceByNumber(1); EXPECT_TRUE(device1_copy->IsValid()); EXPECT_EQ(device1->GetDevicePath(), device1_copy->GetDevicePath()); EXPECT_EQ(device1->GetBackingFilePath(), device1_copy->GetBackingFilePath()); std::unique_ptr device2_copy = loop_manager.GetAttachedDeviceByName("Loopy"); EXPECT_TRUE(device2_copy->IsValid()); EXPECT_EQ(device2->GetDevicePath(), device2_copy->GetDevicePath()); EXPECT_EQ(device2->GetBackingFilePath(), device2_copy->GetBackingFilePath()); // Check double detach EXPECT_TRUE(device->Detach()); EXPECT_TRUE(device1->Detach()); EXPECT_FALSE(device1_copy->Detach()); EXPECT_TRUE(device2->Detach()); EXPECT_FALSE(device2_copy->Detach()); } } // namespace brillo