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(); }
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()); } }
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); }
/// <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())); } } }
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); }
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); }
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); }
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); }