예제 #1
0
		/* Тестирование жизненного цикла датчиков и пожарной зоны в режиме Сработка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
		}
예제 #2
0
파일: MPTsTest.cs 프로젝트: xbadcode/Rubezh
		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;
		}
예제 #3
0
		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);
			}
		}
예제 #4
0
		//[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*/
		}
예제 #5
0
		GKDevice AddDevice(GKDevice device, GKDriverType driverType)
		{
			return GKManager.AddDevice(device.Children[1], GKManager.Drivers.FirstOrDefault(x => x.DriverType == driverType), 0);
		}
예제 #6
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();

			};
		}
예제 #7
0
		//[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);
		}
예제 #8
0
		/// <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);
		}
예제 #9
0
		/// <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);
		}
예제 #10
0
		/// <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);
		}
예제 #11
0
		public DeviceExecutableCommand(GKDriverType driverType, GKStateBit command)
		{
			_command = command;
			_driverType = driverType;
		}
예제 #12
0
		void Test(GKBase gkBase, GKDriverType mirrorType)
		{
			TestOneMirror(gkBase, mirrorType);
			TestTwoMirrors(gkBase, mirrorType);
			TestTwoReflections(gkBase, mirrorType);
		}