| 12 | #include "controllers/controller_manager.h" |
| 13 | |
| 14 | TEST(ControllerManagerTest, LifeCycle) |
| 15 | { |
| 16 | const int ID1 = 4; |
| 17 | const int ID2 = 5; |
| 18 | const int LUN1 = 0; |
| 19 | const int LUN2 = 3; |
| 20 | |
| 21 | auto bus = make_shared<MockBus>(); |
| 22 | ControllerManager controller_manager; |
| 23 | DeviceFactory device_factory; |
| 24 | |
| 25 | auto device = device_factory.CreateDevice(SCHS, -1, ""); |
| 26 | EXPECT_FALSE(controller_manager.AttachToController(*bus, ID1, device)); |
| 27 | |
| 28 | device = device_factory.CreateDevice(SCHS, LUN1, ""); |
| 29 | EXPECT_TRUE(controller_manager.AttachToController(*bus, ID1, device)); |
| 30 | EXPECT_TRUE(controller_manager.HasController(ID1)); |
| 31 | auto controller = controller_manager.FindController(ID1); |
| 32 | EXPECT_NE(nullptr, controller); |
| 33 | EXPECT_EQ(1, controller->GetLunCount()); |
| 34 | EXPECT_FALSE(controller_manager.HasController(0)); |
| 35 | EXPECT_EQ(nullptr, controller_manager.FindController(0)); |
| 36 | EXPECT_TRUE(controller_manager.HasDeviceForIdAndLun(ID1, LUN1)); |
| 37 | EXPECT_NE(nullptr, controller_manager.GetDeviceForIdAndLun(ID1, LUN1)); |
| 38 | EXPECT_FALSE(controller_manager.HasDeviceForIdAndLun(0, 0)); |
| 39 | EXPECT_EQ(nullptr, controller_manager.GetDeviceForIdAndLun(0, 0)); |
| 40 | |
| 41 | device = device_factory.CreateDevice(SCHS, LUN2, ""); |
| 42 | EXPECT_TRUE(controller_manager.AttachToController(*bus, ID1, device)); |
| 43 | EXPECT_TRUE(controller_manager.HasController(ID1)); |
| 44 | controller = controller_manager.FindController(ID1); |
| 45 | EXPECT_NE(nullptr, controller_manager.FindController(ID1)); |
| 46 | EXPECT_TRUE(controller_manager.DeleteController(*controller)); |
| 47 | EXPECT_EQ(nullptr, controller_manager.FindController(ID1)); |
| 48 | |
| 49 | auto disk = make_shared<MockDisk>(); |
| 50 | EXPECT_TRUE(controller_manager.AttachToController(*bus, ID2, disk)); |
| 51 | EXPECT_CALL(*disk, FlushCache); |
| 52 | controller_manager.DeleteAllControllers(); |
| 53 | EXPECT_FALSE(controller_manager.HasController(ID1)); |
| 54 | EXPECT_EQ(nullptr, controller_manager.FindController(ID1)); |
| 55 | EXPECT_EQ(nullptr, controller_manager.GetDeviceForIdAndLun(ID1, LUN1)); |
| 56 | EXPECT_FALSE(controller_manager.HasDeviceForIdAndLun(ID1, LUN1)); |
| 57 | EXPECT_FALSE(controller_manager.HasController(ID2)); |
| 58 | EXPECT_EQ(nullptr, controller_manager.FindController(ID2)); |
| 59 | EXPECT_EQ(nullptr, controller_manager.GetDeviceForIdAndLun(ID2, LUN1)); |
| 60 | EXPECT_FALSE(controller_manager.HasDeviceForIdAndLun(ID2, LUN1)); |
| 61 | } |
| 62 | |
| 63 | TEST(ControllerManagerTest, AttachToController) |
| 64 | { |
nothing calls this directly
no test coverage detected