public void TestFireZoneFire1() { var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_SmokeDetector); var device2 = AddDevice(kauDevice11, GKDriverType.RSR2_SmokeDetector); var device3 = AddDevice(kauDevice11, GKDriverType.RSR2_CombinedDetector); 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"); ConrtolGKBase(device2, GKStateBit.Fire1, "Сработка датчика2"); WaitWhileState(zone, XStateClass.Fire1, 3000, "Ждем пожар1 в зоне"); Assert.IsTrue(zone.State.StateClass == XStateClass.Fire1, "Проверка того, что зона перешла в пожар1"); ConrtolGKBase(device1, GKStateBit.Reset, "Сброс датчика1"); ConrtolGKBase(device2, GKStateBit.Reset, "Сброс датчика2"); CheckTime(() => Thread.Sleep(1000), "Ждем 1 секунду"); Assert.IsTrue(zone.State.StateClass == XStateClass.Fire1, "Проверка того, что зона еще в состоянии пожар1"); ConrtolGKBase(zone, GKStateBit.Reset, "Сброс зоны"); WaitWhileState(zone, XStateClass.Norm, 3000, "Ждем норму в зоне"); Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона перешла в норму"); }
public ZoneDetailsViewModel(GKZone zone = null) { if (zone == null) { Title = "Создание новой зоны"; Zone = new GKZone() { Name = "Новая зона", No = 1, Fire1Count = LastFire1Count, Fire2Count = LastFire2Count }; if (GKManager.Zones.Count != 0) Zone.No = (GKManager.Zones.Select(x => x.No).Max() + 1); } else { Title = string.Format("Свойства зоны: {0}", zone.PresentationName); Zone = zone; } CopyProperties(); var availableNames = new HashSet<string>(); var availableDescription = new HashSet<string>(); foreach (var existingZone in GKManager.Zones) { availableNames.Add(existingZone.Name); availableDescription.Add(existingZone.Description); } AvailableNames = new ObservableCollection<string>(availableNames); AvailableDescription = new ObservableCollection<string>(availableDescription); }
public GKState(GKZone zone) : this() { Zone = zone; UID = zone.UID; BaseObjectType = GKBaseObjectType.Zone; }
/// <summary> /// Валидация того, что настройка количество датчиков для перехода в Пожар-1 больше, чем для перехода в Пожар-2 /// </summary> /// <param name="zone"></param> void ValidateZoneFire1Fire2Count(GKZone zone) { if (zone.Fire1Count >= zone.Fire2Count) { AddError(zone, "Количество датчиков для сработки Пожар 1 должно быть меньше количества датчиков для сработки Пожар 2", ValidationErrorLevel.CannotWrite); } }
/* Тестирование жизненного цикла датчиков и пожарной зоны в режиме Сработка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 }
public void Initialize(GKZone zone) { Zone = zone; var devices = new HashSet<GKDevice>(); foreach (var device in GKManager.Devices) { if (device.Driver.HasZone) { if (device.ZoneUIDs.Contains(Zone.UID) && device.ZoneUIDs.Count != 0) { devices.Add(device); } } } Devices = new ObservableCollection<ZoneDeviceViewModel>(); foreach (var device in devices) { var deviceViewModel = new ZoneDeviceViewModel(device) { IsBold = device.ZoneUIDs.Contains(Zone.UID) }; Devices.Add(deviceViewModel); } OnPropertyChanged(() => Devices); SelectedDevice = Devices.FirstOrDefault(); }
public ZoneSelectionViewModel(GKZone zone) { Title = "Выбор зоны"; Zones = new ObservableCollection<ZoneViewModel>(); GKManager.Zones.ForEach(x => Zones.Add(new ZoneViewModel(x))); if (zone != null) SelectedZone = Zones.FirstOrDefault(x => x.Zone.UID == zone.UID); if (SelectedZone == null) SelectedZone = Zones.FirstOrDefault(); }
public void AddDeviceToZoneTest() { var device = AddDevice(kauDevice11, GKDriverType.RSR2_SmokeDetector); var zone = new GKZone(); GKManager.AddZone(zone); GKManager.AddDeviceToZone(device, zone); Assert.IsTrue(device.ZoneUIDs.Contains(zone.UID)); Assert.IsTrue(device.Zones.Contains(zone)); Assert.IsTrue(zone.Devices.Contains(device)); }
public ObjectViewModel(GKZone zone) { Zone = zone; Name = zone.PresentationName; ImageSource = "/Controls;component/Images/Zone.png"; Address = ""; PresentationZoneOrLogic = ""; ObjectType = ObjectType.Zone; SortingName = "b " + zone.No; }
public ZoneDetailsViewModel(GKZone zone) { Title = "Добавление зоны"; if (zone == null) zone = new GKZone(); Zone = zone; Name = Zone.Name; Description = Zone.Description; Fire1Count = Zone.Fire1Count; Fire2Count = Zone.Fire2Count; }
public void TestFireZoneInMultiGk() { var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_HandDetector); var device2 = AddDevice(kauDevice21, GKDriverType.RSR2_HandDetector); var zone = new GKZone(); GKManager.Zones.Add(zone); device1.ZoneUIDs.Add(zone.UID); device2.ZoneUIDs.Add(zone.UID); var validator = new Validator(); var errors = validator.Validate(); Assert.IsTrue(errors.Any(x => x.ErrorLevel == ValidationErrorLevel.CannotWrite && x.Error == "Содержится в нескольких ГК")); }
public ZoneViewModel(GKZone zone) { Zone = zone; ZoneState = zone.State; _stateClass = zone.State.StateClass; State.StateChanged += new Action(OnStateChanged); No = zone.No; Name = zone.Name; SetIgnoreCommand = new RelayCommand(OnSetIgnore, CanSetIgnore); ResetIgnoreCommand = new RelayCommand(OnResetIgnore, CanResetIgnore); ResetFireCommand = new RelayCommand(OnResetFire, CanResetFire); }
public static void RemoveDeviceFromZone(GKDevice device, GKZone zone) { if (zone != null) { device.Zones.Remove(zone); device.ZoneUIDs.Remove(zone.UID); zone.Devices.Remove(device); zone.OutputDependentElements.Remove(device); device.InputDependentElements.Remove(zone); zone.OnChanged(); device.OnChanged(); } }
public ZoneDetailsViewModel(GKZone zone) { ShowCommand = new RelayCommand(OnShow); ShowJournalCommand = new RelayCommand(OnShowJournal); ResetFireCommand = new RelayCommand(OnResetFire, CanResetFire); SetIgnoreCommand = new RelayCommand(OnSetIgnore, CanSetIgnore); ResetIgnoreCommand = new RelayCommand(OnResetIgnore, CanResetIgnore); Zone = zone; Title = Zone.PresentationName; State.StateChanged += new Action(OnStateChanged); PlanLinks = new PlanLinksViewModel(Zone); }
/// <summary> /// Валидация того, что количество подключенных к зоне датчиков для перехода в соответствующее состояние меньше заданного в настройке зоны /// </summary> /// <param name="zone"></param> void ValidateZoneDetectorCount(GKZone zone) { var fire1Count = zone.Devices.Count(x => x.Driver.AvailableStateBits.Contains(GKStateBit.Fire1)); var fire2Count = zone.Devices.Count(x => x.Driver.AvailableStateBits.Contains(GKStateBit.Fire2)); if (fire2Count == 0 && fire1Count < zone.Fire1Count) { AddError(zone, "Количество подключенных к зоне датчиков меньше количества датчиков для сработки Пожар 1", ValidationErrorLevel.CannotWrite); return; } if (fire2Count == 0 && fire1Count < zone.Fire2Count) { AddError(zone, "Количество подключенных к зоне датчиков меньше количества датчиков для сработки Пожар 2", ValidationErrorLevel.Warning); } }
/* RG-1004 (Включение НС по условию - пожар1 в зоне)*/ public void TestPumpStaitionStartLogicWithFirezone() { var pumpStaition = new GKPumpStation {Name = "Насосная станция", No = 1}; var zone = new GKZone {Name = "Пожарная зона", No = 1}; var clause = new GKClause { ClauseOperationType = ClauseOperationType.AllZones, StateType = GKStateBit.Fire1, ZoneUIDs = {zone.UID} }; var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector); var device2 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector); var device3 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector); var pump = AddDevice(kauDevice11, GKDriverType.RSR2_Bush_Fire); var gkpim = AddPim(gkDevice1); var kaupim = AddPim(kauDevice11); pumpStaition.StartLogic.OnClausesGroup.Clauses.Add(clause); pumpStaition.NSDeviceUIDs.Add(pump.UID); pumpStaition.NSDevices.Add(pump); pumpStaition.Delay = 3; GKManager.AddZone(zone); GKManager.AddPumpStation(pumpStaition); 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, "Проверка того, что зона в Норме"); TurnOnPim(gkpim); TurnOnPim(kaupim); ConrtolGKBase(device1, GKStateBit.Fire1, "Сработка1 у датчика1"); WaitWhileState(zone, XStateClass.Attention, 4000, "Ждем пока зона не перейдёт во Внимание"); Assert.IsTrue(zone.State.StateClass == XStateClass.Attention, "Проверка того, что зона во Внимание"); Assert.IsTrue(pumpStaition.State.StateClass == XStateClass.Off, "Проверка того, что НС Выключен"); CheckJournal(3, JournalItem(device1, JournalEventNameType.Сработка_1), JournalItem(zone, JournalEventNameType.Внимание), JournalItem(Led("Устройство Внимание "), JournalEventNameType.Включено)); ConrtolGKBase(device2, GKStateBit.Fire1, "Сработка1 у датчика2"); WaitWhileState(zone, XStateClass.Fire1, 3000, "Ждем пока зона не перейдёт в Пожар"); Assert.IsTrue(zone.State.StateClass == XStateClass.Fire1, "Проверка того, что зона перешла в Пожар"); Assert.IsTrue(pumpStaition.State.StateClass == XStateClass.TurningOn, "Проверка того, что НС Включается"); WaitWhileState(zone, XStateClass.On, 4000, "Ждем пока НС не Включится"); Assert.IsTrue(pumpStaition.State.StateClass == XStateClass.On, "Проверка того, что НС Включен"); Assert.IsTrue(pump.State.StateClass == XStateClass.On, "Проверка того, что насос Включен"); CheckJournal(8, JournalItem(device2, JournalEventNameType.Сработка_1), JournalItem(Led("Устройство Внимание "), JournalEventNameType.Выключено), JournalItem(zone, JournalEventNameType.Пожар_1), JournalItem(pumpStaition, JournalEventNameType.Включается), JournalItem(Led("Устройство Включение ПУСК "), JournalEventNameType.Включено), JournalItem(Led("Устройство Пожар 1 "), JournalEventNameType.Включено), JournalItem(pumpStaition, JournalEventNameType.Включено), JournalItem(pump, JournalEventNameType.Включено)); }
public static void AddDeviceToZone(GKDevice device, GKZone zone) { if (!device.Zones.Contains(zone)) { device.Zones.Add(zone); } if (!device.ZoneUIDs.Contains(zone.UID)) device.ZoneUIDs.Add(zone.UID); if (!device.InputDependentElements.Contains(zone)) device.InputDependentElements.Add(zone); if (!zone.OutputDependentElements.Contains(device)) zone.OutputDependentElements.Add(device); zone.Devices.Add(device); zone.OnChanged(); device.OnChanged(); }
public ZoneViewModel(GKZone zone) { ResetFireCommand = new RelayCommand(OnResetFire, CanResetFire); SetIgnoreCommand = new RelayCommand(OnSetIgnore, CanSetIgnore); ResetIgnoreCommand = new RelayCommand(OnResetIgnore, CanResetIgnore); SetIgnoreAllCommand = new RelayCommand(OnSetIgnoreAll, CanSetIgnoreAll); ResetIgnoreAllCommand = new RelayCommand(OnResetIgnoreAll, CanResetIgnoreAll); ShowOnPlanCommand = new RelayCommand(OnShowOnPlan, CanShowOnPlan); ShowJournalCommand = new RelayCommand(OnShowJournal); ShowPropertiesCommand = new RelayCommand(OnShowProperties); ShowOnPlanOrPropertiesCommand = new RelayCommand(OnShowOnPlanOrProperties); Zone = zone; State.StateChanged += new System.Action(OnStateChanged); OnStateChanged(); }
/* RG-1015 (Если у НС задан Режим после удержания "Включено", то после окончания отсчета удержания он не должен переходить в режим "Включается")*/ public void TestPumpStationDelayRegime(DelayRegime regime, XStateClass state, JournalEventNameType eventname) { var pumpStaition = new GKPumpStation { Name = "Насосная станция", No = 1 }; var zone = new GKZone { Name = "Пожарная зона", No = 1 }; var clause = new GKClause { ClauseOperationType = ClauseOperationType.AllZones, StateType = GKStateBit.Fire1, ZoneUIDs = { zone.UID } }; var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector); var device2 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector); var device3 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector); var pump = AddDevice(kauDevice11, GKDriverType.RSR2_Bush_Fire); var gkpim = AddPim(gkDevice1); var kaupim = AddPim(kauDevice11); pumpStaition.StartLogic.OnClausesGroup.Clauses.Add(clause); pumpStaition.NSDeviceUIDs.Add(pump.UID); pumpStaition.NSDevices.Add(pump); pumpStaition.Delay = 3; pumpStaition.Hold = 3; pumpStaition.DelayRegime = regime; GKManager.AddZone(zone); GKManager.AddPumpStation(pumpStaition); 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, "Проверка того, что зона в Норме"); TurnOnPim(gkpim); TurnOnPim(kaupim); ConrtolGKBase(device1, GKStateBit.Fire1, "Сработка1 у датчика1"); ConrtolGKBase(device2, GKStateBit.Fire1, "Сработка1 у датчика2"); WaitWhileState(pumpStaition, XStateClass.On, 5000, "Ждем пока НС не Включится"); Assert.IsTrue(pumpStaition.State.StateClass == XStateClass.On, "Проверка того, что НС Включен"); WaitWhileState(pumpStaition, XStateClass.TurningOn, 6000, "Ждем 6 секунд, НС не должен перейти в режим Включается"); Assert.IsFalse(pumpStaition.State.StateClass == XStateClass.TurningOn, "Проверка того, что НС не перешёл в режим Включается"); Assert.IsTrue(pumpStaition.State.StateClass == state, "Проверка того, что НС Включен/Выключен"); Assert.IsTrue(pump.State.StateClass == state, "Проверка того, что насос Включен/Выключен"); WaitWhileState(Led("Устройство Включение ПУСК "), state, 2000,"Ждём пока индикатор не будет Включен/Выключен"); // RG-1340 CheckJournal(3, JournalItem(pumpStaition, eventname), JournalItem(pump, eventname), JournalItem(Led("Устройство Включение ПУСК "), eventname)); }
//[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*/ }
public FireZone(GKZone gkZone) : base(gkZone) { StateIcon = Convert.ToString(gkZone.State.StateClass); Name = gkZone.Name; Fire1Count = gkZone.Fire1Count; Fire2Count = gkZone.Fire2Count; ImageSource = gkZone.ImageSource.Replace("/Controls;component/", ""); No = gkZone.No; StateColor = "'#" + new XStateClassToColorConverter2().Convert(gkZone.State.StateClass, null, null, null) .ToString() .Substring(3) + "'"; StateMessage = gkZone.State.StateClass.ToDescription(); CanSetIgnore = !gkZone.State.StateClasses.Contains(XStateClass.Ignore); CanResetIgnore = gkZone.State.StateClasses.Contains(XStateClass.Ignore); CanResetFire = gkZone.State.StateClasses.Contains(XStateClass.Fire2) || gkZone.State.StateClasses.Contains(XStateClass.Fire1) || gkZone.State.StateClasses.Contains(XStateClass.Attention); GKDescriptorNo = gkZone.GKDescriptorNo; }
public void TestFireZoneAttention() { var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_SmokeDetector); var device2 = AddDevice(kauDevice11, GKDriverType.RSR2_HandDetector); var device3 = AddDevice(kauDevice11, GKDriverType.RSR2_CombinedDetector); 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, "Сработка датчика"); WaitWhileState(zone, XStateClass.Attention, 3000, "Ждем внимание в зоне"); CheckJournal(JournalItem(device1, JournalEventNameType.Сработка_1), JournalItem(zone, JournalEventNameType.Внимание)); Assert.IsTrue(zone.State.StateClass == XStateClass.Attention, "Проверка того, что зона перешла во внимание"); ConrtolGKBase(device1, GKStateBit.Reset, "Сброс датчика"); WaitWhileState(zone, XStateClass.Norm, 3000, "Ждем норму в зоне"); Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона перешла в норму"); }
/// <summary> /// Удаление зоны /// </summary> /// <param name="zone"></param> public static void RemoveZone(GKZone zone) { Zones.Remove(zone); zone.OutputDependentElements.ForEach(x => { x.InputDependentElements.Remove(zone); if (x is GKDevice) { x.Invalidate(DeviceConfiguration); x.OnChanged(); } x.UpdateLogic(DeviceConfiguration); x.OnChanged(); }); foreach (var device in zone.Devices) { device.Zones.Remove(zone); device.ZoneUIDs.Remove(zone.UID); device.OnChanged(); } zone.OnChanged(); }
public void TestZone() { var device = AddDevice(kauDevice, GKDriverType.RSR2_HandDetector); var zone = new GKZone(); GKManager.Zones.Add(zone); device.ZoneUIDs.Add(zone.UID); Test(zone, GKDriverType.FireZonesMirror); }
public void TestFirefightingZone() { var device = AddDevice(kauDevice, GKDriverType.RSR2_HandDetector); var zone = new GKZone(); GKManager.Zones.Add(zone); device.ZoneUIDs.Add(zone.UID); var direction = new GKDirection(); GKManager.AddDirection(direction); TestFirefightingZone(zone, direction); }
public void RemoveGroupDeviceTest() { var device = AddDevice(kauDevice11, GKDriverType.RSR2_OPSZ); GKManager.UpdateConfiguration(); var zone = new GKZone(); GKManager.AddZone(zone); GKManager.AddDeviceToZone(device.Children[1], zone); Assert.IsTrue(device.Children[1].Zones.Contains(zone)); Assert.IsTrue(zone.Devices.Contains(device.Children[1])); GKManager.RemoveDevice(device); Assert.IsFalse(zone.Devices.Any()); }
public void AddDeviceToZone() { var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_SmokeDetector); var device2 = AddDevice(kauDevice11, GKDriverType.RSR2_SmokeDetector); var device3 = AddDevice(kauDevice11, GKDriverType.RSR2_SmokeDetector); var zone = new GKZone(); GKManager.AddZone(zone); GKManager.UpdateConfiguration(); var zonesViewModel = new ZonesViewModel(); zonesViewModel.Initialize(); zonesViewModel.OnShow(); Assert.IsTrue(zonesViewModel.ZoneDevices.Devices.Count == 0); Assert.IsTrue(zonesViewModel.ZoneDevices.AvailableDevices.Count == 3); zonesViewModel.ZoneDevices.AddCommand.Execute(zonesViewModel.ZoneDevices.AvailableDevices.Where(x => x.Device.UID == device1.UID).ToList()); Assert.IsTrue(zonesViewModel.ZoneDevices.Devices.Count == 1); Assert.IsTrue(zonesViewModel.ZoneDevices.AvailableDevices.Count == 2); Assert.IsTrue(zone.Devices.Count == 1); Assert.IsTrue(device1.Zones.Count == 1); }
public ZoneDescriptor(GKZone zone) : base(zone) { DescriptorType = DescriptorType.Zone; Zone = zone; }
/* RG-1015 (Если у задержки задан Режим после удержания "Включено", то после окончания отсчета удержания она не должена переходить в режим "Включается")*/ public void TestDelayRegimeDelay(DelayRegime regime, XStateClass state) { var delay = new GKDelay { Name = "Задержка", No = 1 }; var zone = new GKZone { Name = "Пожарная зона", No = 1 }; var clause = new GKClause { ClauseOperationType = ClauseOperationType.AllZones, StateType = GKStateBit.Fire1, ZoneUIDs = { zone.UID } }; var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector); var device2 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector); var device3 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector); delay.Logic.OnClausesGroup.Clauses.Add(clause); delay.DelayTime = 3; delay.Hold = 3; delay.DelayRegime = regime; GKManager.AddZone(zone); GKManager.AddDelay(delay); 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 у датчика1"); ConrtolGKBase(device2, GKStateBit.Fire1, "Сработка1 у датчика2"); WaitWhileState(delay, XStateClass.On, 5000, "Ждем пока задрежка не Включится"); Assert.IsTrue(delay.State.StateClass == XStateClass.On, "Проверка того, что задержка Включена"); WaitWhileState(delay, XStateClass.TurningOn, 6000, "Ждем 6 секунд, задрежка не должена перейти в режим Включается"); Assert.IsFalse(delay.State.StateClass == XStateClass.TurningOn, "Проверка того, что задрежка не перешла в режим Включается"); Assert.IsTrue(delay.State.StateClass == state, "Проверка того, что задрежка Включена/Выключена"); if (delay.DelayRegime == DelayRegime.On) CheckJournal(3, JournalItem(delay, JournalEventNameType.Включается), JournalItem(Led("Устройство Пожар 1 "), JournalEventNameType.Включено), JournalItem(delay, JournalEventNameType.Включено)); else CheckJournal(4, JournalItem(delay, JournalEventNameType.Включается), JournalItem(Led("Устройство Пожар 1 "), JournalEventNameType.Включено), JournalItem(delay, JournalEventNameType.Включено), JournalItem(delay, JournalEventNameType.Выключено)); }
/// <summary> /// Редактирование зоны /// </summary> /// <param name="zone"></param> public static void EditZone(GKZone zone) { zone.OnChanged(); zone.OutputDependentElements.ForEach(x => x.OnChanged()); }