Exemplo n.º 1
0
		public void WorkingCounterTest()
		{ 
			// arrange
			float tarif1 = 10, tarif2 = 12, tarif3 = 14, tarif4 = 15;
			var device = new Mercury203Virtual();
			
			device.Parameters[ParameterNamesMercury203Virtual.CounterTarif1].Value = tarif1;
			device.Parameters[ParameterNamesMercury203Virtual.CounterTarif2].Value = tarif2;
			device.Parameters[ParameterNamesMercury203Virtual.CounterTarif3].Value = tarif3;
			device.Parameters[ParameterNamesMercury203Virtual.CounterTarif4].Value = tarif4;
 
			var controller = new IncotexNetworkControllerVirtual();
			controller.Devices.Add(device);

			// act
			device.Start();
			controller.Start();
			Thread.Sleep(5000);

			// assert
			Assert.IsTrue(tarif1 < (float)device.Parameters[ParameterNamesMercury203Virtual.CounterTarif1].Value, 
				"Значение счётчика должно было измениться в большую сторону");
			Assert.IsTrue(tarif2 < (float)device.Parameters[ParameterNamesMercury203Virtual.CounterTarif2].Value,
				"Значение счётчика должно было измениться в большую сторону");
			Assert.IsTrue(tarif3 < (float)device.Parameters[ParameterNamesMercury203Virtual.CounterTarif3].Value,
				"Значение счётчика должно было измениться в большую сторону");
			Assert.IsTrue(tarif4 < (float)device.Parameters[ParameterNamesMercury203Virtual.CounterTarif4].Value,
				"Значение счётчика должно было измениться в большую сторону");
			
			controller.Dispose();
		}
Exemplo n.º 2
0
		public MainWindowViewModel()
		{
			var controller = new IncotexNetworkControllerVirtual();
			NetworksManager.Instance.Networks.Add(controller);

			var device = new Mercury203Virtual();
			controller.Devices.Add(device);
		}
		public void SyncDateTimeTest()
		{
			using (ShimsContext.Create())
			{
				// Arrange
				var dt = DateTime.Now;
				var device = new Mercury203Virtual();
				var controller = new IncotexNetworkControllerVirtual();
				controller.Devices.Add(device);
				ShimDateTime.NowGet = () => dt;

				// Action
				controller.SyncDateTime();

				// Assert
				Assert.AreEqual(dt.ToString(), device.Rtc.ToString());
			}
		}
Exemplo n.º 4
0
		public void WriteCounterTarifTest()
		{
			// arrange
			var device = new Mercury203Virtual();
			
			// act
			float tarif1 = 10, tarif2 = 12, tarif3 = 14, tarif4 = 15;

			device.Parameters[ParameterNamesMercury203Virtual.CounterTarif1].Value = tarif1;
			device.Parameters[ParameterNamesMercury203Virtual.CounterTarif2].Value = tarif2;
			device.Parameters[ParameterNamesMercury203Virtual.CounterTarif3].Value = tarif3;
			device.Parameters[ParameterNamesMercury203Virtual.CounterTarif4].Value = tarif4; 

			// assert
			Assert.AreEqual(tarif1, device.Parameters[ParameterNamesMercury203Virtual.CounterTarif1].Value);
			Assert.AreEqual(tarif2, device.Parameters[ParameterNamesMercury203Virtual.CounterTarif2].Value);
			Assert.AreEqual(tarif3, device.Parameters[ParameterNamesMercury203Virtual.CounterTarif3].Value);
			Assert.AreEqual(tarif4, device.Parameters[ParameterNamesMercury203Virtual.CounterTarif4].Value);
		}
Exemplo n.º 5
0
        /// <summary>
        /// Создаёт устройтсво на основе типа и добавляет в коллекцию
        /// </summary>
        public void AddDevice(ResursAPI.Device device)
        {
            switch (device.DeviceType)
            {
                case ResursAPI.DeviceType.Network:
                    {
                        throw new InvalidCastException(
                            "Попытка приветсти к контроллер сети к устройтсву");
                    }
                case ResursAPI.DeviceType.Counter:
                    {
                        switch (device.DriverType)
                        {
                            case ResursAPI.DriverType.Mercury203Counter:
                                {
                                    var mercury203 = new Mercury203
                                    {
                                        Id = (Guid)device.GetParameter(ParameterNamesMercury203.Id),
                                        Address = (UInt32)device.GetParameter(ParameterNamesMercury203.Address),
                                        Status = device.IsActive ? Status.Running : Status.Stopped
                                    };

                                    mercury203.Parameters[ParameterNamesMercury203.GADDR].Value =
                                        device.GetParameter(ParameterNamesMercury203.GADDR);
                                    mercury203.Parameters[ParameterNamesMercury203.PowerLimit].Value =
                                        device.GetParameter(ParameterNamesMercury203.PowerLimit);
                                    mercury203.Parameters[ParameterNamesMercury203.PowerLimitPerMonth].Value =
                                        device.GetParameter(ParameterNamesMercury203.PowerLimitPerMonth);
                                    //TODO: Сделать таблицу параметров доконца

                                    var owner = device.Parent;
                                    
                                    if ((owner == null) || 
                                        (owner.DriverType != DriverType.IncotextNetwork))
                                    {
                                        throw new InvalidOperationException(
                                            "Невозможно добавить устройтсво. Владельцем устройства не является IncotextNetwork");
                                    }

                                    _NetworkControllers[(Guid)owner.GetParameter(ParameterNamesBase.Id)]
                                        .Devices.Add(mercury203);
                                    break;
                                }
							case DriverType.VirtualMercury203Counter:
								{
									var mercury203 = new Mercury203Virtual
									{
										Id = (Guid)device.GetParameter(ParameterNamesMercury203.Id),
										Address = (UInt32)device.GetParameter(ParameterNamesMercury203.Address),
										Status = device.IsActive ? Status.Running : Status.Stopped
									};

									mercury203.Parameters[ParameterNamesMercury203.GADDR].Value =
										device.GetParameter(ParameterNamesMercury203.GADDR);
									mercury203.Parameters[ParameterNamesMercury203.PowerLimit].Value =
										device.GetParameter(ParameterNamesMercury203.PowerLimit);
									//mercury203.Parameters[ParameterNamesMercury203.PowerLimitPerMonth].Value =
									//	device.GetParameter(ParameterNamesMercury203.PowerLimitPerMonth);
									//TODO: Сделать таблицу параметров доконца

									var owner = device.Parent;

									if ((owner == null) ||
										(owner.DriverType != DriverType.VirtualIncotextNetwork))
									{
										throw new InvalidOperationException(
											"Невозможно добавить устройтсво. Владельцем устройства не является VirtualIncotextNetwork");
									}

									_NetworkControllers[(Guid)owner.GetParameter(ParameterNamesBase.Id)]
										.Devices.Add(mercury203);
									break;
								}
                            default:
                                {
                                    throw new NotSupportedException(String.Format(
                                        "Устройтсво с DriverType={0} не поддерживается",
                                        device.DriverType.ToString()));
                                }
                        }
                        break;
                    }
                default:
                    {
                        throw new InvalidCastException(String.Format(
                          "Неудалось привести типы. Устройтсво с DeviceType={0} не поддерживается",
                          device.DeviceType.ToString()));
                    }
            }
        }
Exemplo n.º 6
0
		public void RaiseEventParameterChangedByIncotexNetworkControllerVirtualTest()
		{
			// Arrange
			var testCntr = new TestContener();
			testCntr.Manager = NetworksManager.Instance;
			var controller = new IncotexNetworkControllerVirtual();
			var device = new Mercury203Virtual();

			controller.Devices.Add(device);
			testCntr.Manager.Networks.Add(controller);
			device.Start();
			controller.Start();

			// Act
			// ждём
			Thread.Sleep(1000);
			//while (!testCntr.IsEventRaised) { Thread.Sleep(1000); }
			controller.Stop();

			// Assert
			Assert.IsTrue(testCntr.IsEventRaisedParamChanged);
		}
Exemplo n.º 7
0
		public void RaiseEventDeviceHasErrorTest()
		{
			// Arrange
			var testCntr = new TestContener();
			testCntr.Manager = NetworksManager.Instance;
			var controller = new IncotexNetworkControllerVirtual();
			var device = new Mercury203Virtual();

			controller.Devices.Add(device);
			testCntr.Manager.Networks.Add(controller);
			device.Start();
			controller.Start();

			// Act
			testCntr.Manager.SendCommand(device.Id, CommandNamesMercury203Virtual.SetCommunicationError);

			// Assert
			Assert.IsTrue(testCntr.IsEventRaisedErrorOccured);
			Assert.AreEqual(true, device.CommunicationError);

			// Act
			testCntr.ResetEventsFlags();
			testCntr.Manager.SendCommand(device.Id, CommandNamesMercury203Virtual.ResetCommunicationError);

			// Assert
			Assert.IsTrue(testCntr.IsEventRaisedErrorOccured);
			Assert.AreEqual(false, device.CommunicationError);

			// Act
			testCntr.ResetEventsFlags();
			testCntr.Manager.SendCommand(device.Id, CommandNamesMercury203Virtual.SetConfigurationError);

			// Assert
			Assert.IsTrue(testCntr.IsEventRaisedErrorOccured);
			Assert.AreEqual(true, device.ConfigurationError);

			// Act
			testCntr.ResetEventsFlags();
			testCntr.Manager.SendCommand(device.Id, CommandNamesMercury203Virtual.ResetConfigurationError);

			// Assert
			Assert.IsTrue(testCntr.IsEventRaisedErrorOccured);
			Assert.AreEqual(false, device.ConfigurationError);

			// Act
			testCntr.ResetEventsFlags();
			testCntr.Manager.SendCommand(device.Id, CommandNamesMercury203Virtual.SetRtcError);

			// Assert
			Assert.IsTrue(testCntr.IsEventRaisedErrorOccured);
			Assert.AreEqual(true, device.RtcError);

			// Act
			testCntr.ResetEventsFlags();
			testCntr.Manager.SendCommand(device.Id, CommandNamesMercury203Virtual.ResetRtcError);

			// Assert
			Assert.IsTrue(testCntr.IsEventRaisedErrorOccured);
			Assert.AreEqual(false, device.RtcError);
		}
Exemplo n.º 8
0
		public void RaiseEventStatusChangedTest()
		{
			// Arrange
			var testCntr = new TestContener();
			testCntr.Manager = NetworksManager.Instance;
			var controller = new IncotexNetworkControllerVirtual();
			var device = new Mercury203Virtual();

			controller.Devices.Add(device);
			testCntr.Manager.Networks.Add(controller);

			// Act
			testCntr.Manager.SetSatus(controller.Id, true);

			// Assert
			Assert.IsTrue(testCntr.IsEventRaisedStatusChanged);
			Assert.AreEqual(Status.Running, controller.Status);
			Assert.AreEqual(controller.Id, testCntr.StatusChangedArgs.Id);
			Assert.AreEqual(controller.Status, testCntr.StatusChangedArgs.Status);

			// Act
			testCntr.ResetEventsFlags();
			testCntr.Manager.SetSatus(controller.Id, false);

			// Assert
			Assert.IsTrue(testCntr.IsEventRaisedStatusChanged);
			Assert.AreEqual(Status.Stopped, controller.Status);
			Assert.AreEqual(controller.Id, testCntr.StatusChangedArgs.Id);
			Assert.AreEqual(controller.Status, testCntr.StatusChangedArgs.Status);

			testCntr.Manager.SetSatus(controller.Id, true);
			Thread.Sleep(1000);
			testCntr.Manager.SetSatus(controller.Id, false);
			Thread.Sleep(1000);
			testCntr.Manager.SetSatus(controller.Id, true);
			Thread.Sleep(1000);
			testCntr.Manager.SetSatus(controller.Id, false);
			Thread.Sleep(1000);

			// Act
			testCntr.ResetEventsFlags();
			testCntr.Manager.SetSatus(device.Id, true);

			// Assert
			Assert.IsTrue(testCntr.IsEventRaisedStatusChanged);
			Assert.AreEqual(Status.Running, device.Status);
			Assert.AreEqual(device.Id, testCntr.StatusChangedArgs.Id);
			Assert.AreEqual(device.Status, testCntr.StatusChangedArgs.Status);

			// Act
			testCntr.ResetEventsFlags();
			testCntr.Manager.SetSatus(device.Id, false);

			// Assert
			Assert.IsTrue(testCntr.IsEventRaisedStatusChanged);
			Assert.AreEqual(Status.Stopped, device.Status);
			Assert.AreEqual(device.Id, testCntr.StatusChangedArgs.Id);
			Assert.AreEqual(device.Status, testCntr.StatusChangedArgs.Status);

			// Arrange
			device = new Mercury203Virtual
			{
				Address = 2
			};
			controller.Devices.Add(device);

			// Act
			testCntr.ResetEventsFlags();
			testCntr.Manager.SetSatus(device.Id, true);

			// Assert
			Assert.IsTrue(testCntr.IsEventRaisedStatusChanged);
			Assert.AreEqual(Status.Running, device.Status);
			Assert.AreEqual(device.Id, testCntr.StatusChangedArgs.Id);
			Assert.AreEqual(device.Status, testCntr.StatusChangedArgs.Status);

			// Act
			testCntr.Manager.RemoveDevice(device.Id);

		}
Exemplo n.º 9
0
		public void SetStatusTest()
		{
			// arrange
			var manager = NetworksManager.Instance;
			var controller = new IncotexNetworkControllerVirtual();
			var device = new Mercury203Virtual();

			controller.Devices.Add(device);
			manager.Networks.Add(controller);

			// Проверяем установку статуса сонтроллера сети
			// Act
			manager.SetSatus(controller.Id, true);

			// Assert
			Assert.AreEqual(Status.Running, controller.Status);

			// Act
			manager.SetSatus(controller.Id, false);
			Thread.Sleep(2000); // Ждём завершения

			// Assert
			Assert.AreEqual(Status.Stopped, controller.Status);

			// Проверяем установку статуса устройтсва
			// Act
			manager.SetSatus(device.Id, true);

			// Assert
			Assert.AreEqual(Status.Running, device.Status);

			// Act
			manager.SetSatus(device.Id, false);

			// Assert
			Assert.AreEqual(Status.Stopped, device.Status);
		}