from typing import List
class MockDLIPowerSwitchOutlet:
def __init__(self, index: int, name: str, state: bool):
self._index = index
self._name = name
self._state = state
@property
def name(self) -> str:
return self._name
@property
def state(self) -> bool:
return self._state
def on(self):
self._state = True
def off(self):
self._state = False
def cycle(self):
self.off()
self.on()
def set_name(self, new_name: str):
self._name = new_name
class MockOutletManager:
def __init__(self, outlets: List["MockDLIPowerSwitchOutlet"]):
self._outlets = outlets
def __getitem__(self, index: int) -> "MockDLIPowerSwitchOutlet":
return self._outlets[index]
def __iter__(self):
return iter(self._outlets)
def __len__(self) -> int:
return len(self._outlets)
def count(self) -> int:
return len(self._outlets)
def get_all_states(self) -> List[bool]:
return [outlet.state for outlet in self._outlets]
class MockDLIPowerSwitch:
def __init__(self, ip: str, username: str, password: str, timeout: float = 2.0):
self.ip = ip
self.username = username
self.password = password
self.timeout = timeout
self.controller_name = "Mock DLI Switch"
_outlets_list = [
MockDLIPowerSwitchOutlet(i, f"Mock Outlet {i}", (i % 2 != 0)) for i in range(1, 9)
]
self.outlets = MockOutletManager(_outlets_list)
@property
def name(self) -> str:
return self.controller_name