/* Тестирование жизненного цикла датчиков и пожарной зоны в режиме Сработка2 */ public void TestDeviceFire2(GKDriverType driver) { var device1 = AddDevice(kauDevice11, driver); var device2 = AddDevice(kauDevice11, driver); var device3 = AddDevice(kauDevice11, driver); var zone = new GKZone {Name = "Пожарная зона", No = 1}; GKManager.AddZone(zone); GKManager.AddDeviceToZone(device1, zone); GKManager.AddDeviceToZone(device2, zone); GKManager.AddDeviceToZone(device3, zone); SetConfigAndRestartImitator(); WaitWhileState(zone, XStateClass.Norm, 10000, "Ждём Норму в зоне"); Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона находится в Норме"); ConrtolGKBase(device1, GKStateBit.Fire2, "Сработка2 в device"); WaitWhileState(device1, XStateClass.Fire2, 3000, "Ожидаем пока device1 перейдёт в Сработка2"); Assert.IsTrue(device1.State.StateClass == XStateClass.Fire2, "Проверка того, что device1 находится в Сработка2"); Assert.IsTrue(zone.State.StateClass == XStateClass.Fire2, "Проверка того, что пожараная зона перешла в Пожар2"); CheckJournal(3, JournalItem(device1, JournalEventNameType.Сработка_2), JournalItem(zone, JournalEventNameType.Пожар_2), JournalItem(Led("Устройство Пожар 2 "), JournalEventNameType.Включено)); ConrtolGKBase(zone, GKStateBit.Reset, "Сброс зоны"); Assert.IsTrue(zone.State.StateClass == XStateClass.Fire2, "Проверка того, что зона всё ещё в режиме Сработка2"); ConrtolGKBase(device1, GKStateBit.Reset, "Сброс устройства1"); WaitWhileState(device1, XStateClass.Norm, 3000, "Ожидаем пока device1 перейдёт в Норму"); Assert.IsTrue(zone.State.StateClass == XStateClass.Fire2, "Проверка того, что зона всё ещё в режиме Сработка2"); CheckJournal(2, JournalItem(device1, JournalEventNameType.Норма)); ConrtolGKBase(zone, GKStateBit.Reset, "Сброс зоны"); WaitWhileState(zone, XStateClass.Norm, 3000, "Ожидаем пока зона перейдёт в Норму"); Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона перешла в Норму"); //CheckJournal(2, JournalItem(zone, JournalEventNameType.Норма), JournalItem(Led("Устройство Пожар 2"), JournalEventNameType.Выключено)); RG-1340 & RG-1341 }
GKDevice CreateDevice(GKDriverType deviceDriverType) { var deviceDriver = GKManager.Drivers.FirstOrDefault(x => x.DriverType == deviceDriverType); var device = new GKDevice { DriverUID = deviceDriver.UID }; AlsDevice.Children.Add(device); return device; }
void TestOneMirror(GKBase gkBase, GKDriverType mirrorType) { var mirrorDevice = AddDevice(reflectionDevice1, mirrorType); GKManager.AddToMirror(gkBase, mirrorDevice); Compile(); Assert.IsTrue(gkBase.OutputDescriptors.Contains(mirrorDevice)); if (mirrorType != GKDriverType.DetectorDevicesMirror) { Assert.IsTrue(gkBase.InputDescriptors.Contains(mirrorDevice)); var rmDevice = AddDevice(kauDevice, GKDriverType.RSR2_RM_1); rmDevice.Logic.OnClausesGroup.Clauses.Add(GetClause(gkBase)); Compile(); CheckDeviceLogicOnGK(rmDevice); } }
//[TestCase(GKDriverType.RSR2_Button)] устройство не поддерживается /* Тестирование жизненного цикла датчиков и пожарной зоны в режиме Сработка1 */ public void TestDeviceFire1(GKDriverType driver) { var device1 = AddDevice(kauDevice11, driver); var device2 = AddDevice(kauDevice11, driver); var device3 = AddDevice(kauDevice11, driver); var zone = new GKZone {Name = "Пожарная зона", No = 1}; GKManager.AddZone(zone); GKManager.AddDeviceToZone(device1, zone); GKManager.AddDeviceToZone(device2, zone); GKManager.AddDeviceToZone(device3, zone); SetConfigAndRestartImitator(); WaitWhileState(zone, XStateClass.Norm, 10000, "Ждём Норму в зоне"); Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона находится в Норме"); ConrtolGKBase(device1, GKStateBit.Fire1, "Сработка1 в device"); WaitWhileState(device1, XStateClass.Fire1, 3000, "Ожидаем пока device1 перейдёт в Сработка1"); Assert.IsTrue(device1.State.StateClass == XStateClass.Fire1, "Проверка того, что device1 находится в Сработка1"); Assert.IsTrue(zone.State.StateClass == XStateClass.Attention, "Проверка того, что пожараная зона перешла во Внимание"); CheckJournal(3, JournalItem(device1, JournalEventNameType.Сработка_1), JournalItem(zone, JournalEventNameType.Внимание), JournalItem(Led("Устройство Внимание "), JournalEventNameType.Включено)); ConrtolGKBase(device2, GKStateBit.Fire1, "Сработка1 в device2"); WaitWhileState(device2, XStateClass.Fire1, 3000, "Ожидаем пока device2 перейдёт в Сработка1"); Assert.IsTrue(device2.State.StateClass == XStateClass.Fire1, "Проверка того, что device2 находится в Сработка1"); Assert.IsTrue(zone.State.StateClass == XStateClass.Fire1, "Проверка того, что пожараная зона перешла в Пожар1"); CheckJournal(4, JournalItem(device2, JournalEventNameType.Сработка_1), JournalItem(Led("Устройство Внимание "), JournalEventNameType.Выключено), JournalItem(zone, JournalEventNameType.Пожар_1), JournalItem(Led("Устройство Пожар 1 "), JournalEventNameType.Включено)); ConrtolGKBase(device1, GKStateBit.Reset, "Сброс device1"); ConrtolGKBase(zone, GKStateBit.Reset, "Сброс зоны"); WaitWhileState(device1, XStateClass.Norm, 3000, "Ожидаем пока device1 перейдёт в Норму"); Assert.IsTrue(device1.State.StateClass == XStateClass.Norm, "Проверка того, что device1 перешёл в Норму"); Assert.IsTrue(zone.State.StateClasses.Contains(XStateClass.Attention), "Проверка того, что зона перешла во Внимание"); /*CheckJournal(5, JournalItem(device1, JournalEventNameType.Норма), JournalItem(zone, JournalEventNameType.Норма), JournalItem(Led("Устройство Пожар 1 "), JournalEventNameType.Выключено), JournalItem(zone, JournalEventNameType.Внимание), JournalItem(Led("Устройство Внимание "), JournalEventNameType.Включено)); RG-1340*/ ConrtolGKBase(device2, GKStateBit.Reset, "Сброс device2"); WaitWhileState(device2, XStateClass.Norm, 3000, "Ожидаем пока device2 перейдёт в Норму"); Assert.IsTrue(device2.State.StateClass == XStateClass.Norm, "Проверка того, что device2 перешёл в Норму"); Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона перешла в Норму"); /*CheckJournal(3, JournalItem(device2, JournalEventNameType.Норма), JournalItem(zone, JournalEventNameType.Норма), JournalItem(Led("Устройство Внимание "), JournalEventNameType.Выключено)); RG-1340*/ }
GKDevice AddDevice(GKDevice device, GKDriverType driverType) { return GKManager.AddDevice(device.Children[1], GKManager.Drivers.FirstOrDefault(x => x.DriverType == driverType), 0); }
void SetMokForNewDeviceViewModel(GKDriverType drivertype, int count = 1, bool addInStartList = false) { MockDialogService.OnShowModal += x => { var newDeviceViewModel = x as NewDeviceViewModel; newDeviceViewModel.SelectedDriver.Driver = GKManager.Drivers.FirstOrDefault(y => y.DriverType == drivertype); newDeviceViewModel.Count = count; newDeviceViewModel.AddInStartlList = addInStartList; newDeviceViewModel.SaveCommand.Execute(); }; }
//[TestCase(GKDriverType.RSR2_AM_4)] public void AddDevicePositiveValueForRSR(GKDriverType driverType) { SetMokForNewDeviceViewModel(driverType, 255); var devicesViewModel = GroupControllerModule.DevicesViewModel; var selectedDevice = devicesViewModel.SelectedDevice = devicesViewModel.AllDevices.FirstOrDefault(x => x.Driver.DriverType == GKDriverType.RSR2_KAU_Shleif); devicesViewModel.SelectedDevice.AddCommand.Execute(); Assert.IsTrue(selectedDevice.Children.Count() == 255); }
/// <summary> /// Если в охранной зоне учавствует контроллер Wiegand или кодонаборник и у них настроен уровень доступа, то такая зона должна попасть на ГК /// и логика всех устройств, учавствующих в зоне, должна также попасть на ГК /// </summary> /// <param name="driverType1"></param> /// <param name="driverType2"></param> void TestGuardZoneOnGKAndDeviceLogicOnGK(GKDriverType driverType1, GKDriverType driverType2) { var device1 = AddDevice(kauDevice1, driverType1); var device2 = AddDevice(kauDevice1, driverType2); var device3 = AddDevice(kauDevice1, GKDriverType.RSR2_GuardDetector); var device4 = AddDevice(kauDevice1, GKDriverType.RSR2_GuardDetectorSound); var guardZone = new GKGuardZone(); guardZone.GuardZoneDevices.Add(new GKGuardZoneDevice() { DeviceUID = device1.UID, CodeReaderSettings = new GKCodeReaderSettings() { SetGuardSettings = new GKCodeReaderSettingsPart() { CodeReaderEnterType = GKCodeReaderEnterType.CodeOnly, AccessLevel = 1 } } }); guardZone.GuardZoneDevices.Add(new GKGuardZoneDevice() { DeviceUID = device2.UID, CodeReaderSettings = new GKCodeReaderSettings() { SetGuardSettings = new GKCodeReaderSettingsPart() { CodeReaderEnterType = GKCodeReaderEnterType.CodeOnly, AccessLevel = 1 } } }); guardZone.GuardZoneDevices.Add(new GKGuardZoneDevice() { DeviceUID = device3.UID, ActionType = GKGuardZoneDeviceActionType.SetAlarm }); guardZone.GuardZoneDevices.Add(new GKGuardZoneDevice() { DeviceUID = device4.UID, ActionType = GKGuardZoneDeviceActionType.SetAlarm }); GKManager.GuardZones.Add(guardZone); Compile(); CheckObjectLogicOnGK(guardZone); CheckDeviceLogicOnGK(device3); CheckDeviceLogicOnGK(device4); }
/// <summary> /// Если в охранной зоне учавствует контроллер Wiegand или кодонаборник и у них настроены и код и уровень доступа, то такая зона должна попасть на ГК /// и логика всех устройств, учавствующих в зоне, должна также попасть на ГК /// </summary> /// <param name="driverType"></param> void TestGuardZoneWithCodesAndLevelsOnGK(GKDriverType driverType) { var device1 = AddDevice(kauDevice1, driverType); var code = new GKCode(); GKManager.DeviceConfiguration.Codes.Add(code); var guardZone = new GKGuardZone(); guardZone.GuardZoneDevices.Add(new GKGuardZoneDevice() { DeviceUID = device1.UID, CodeReaderSettings = new GKCodeReaderSettings() { SetGuardSettings = new GKCodeReaderSettingsPart() { CodeReaderEnterType = GKCodeReaderEnterType.CodeAndOne, CodeUIDs = { code.UID }, AccessLevel = 1 } } }); GKManager.GuardZones.Add(guardZone); Compile(); CheckObjectLogicOnGK(guardZone); }
/// <summary> /// Если в охранноую зону входит контроллер Wiegand или кодонаборник, а у кодонаборника указан только код и не указан уровень, то такая зона и само устройство /// должны попасть на КАУ /// </summary> void TestGuardZoneWithCodesOnKau(GKDriverType driverType) { var device1 = AddDevice(kauDevice1, GKDriverType.RSR2_CodeReader); var code = new GKCode(); GKManager.DeviceConfiguration.Codes.Add(code); var guardZone = new GKGuardZone(); var guardZoneDevice = new GKGuardZoneDevice { DeviceUID = device1.UID, CodeReaderSettings = new GKCodeReaderSettings { SetGuardSettings = new GKCodeReaderSettingsPart {CodeReaderEnterType = GKCodeReaderEnterType.CodeAndOne, CodeUIDs = {code.UID}} } }; GKManager.AddDeviceToGuardZone(guardZone, guardZoneDevice); GKManager.GuardZones.Add(guardZone); Compile(); CheckObjectLogicOnKau(guardZone); }
public DeviceExecutableCommand(GKDriverType driverType, GKStateBit command) { _command = command; _driverType = driverType; }
void Test(GKBase gkBase, GKDriverType mirrorType) { TestOneMirror(gkBase, mirrorType); TestTwoMirrors(gkBase, mirrorType); TestTwoReflections(gkBase, mirrorType); }