示例#1
0
        public async Task OfflineConnectionMeasuringButtonsAvailbility()
        {
            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, new OfflineConnection());

            int isChanagedTriggered1 = 0;


            var loadCommand = _measuringMonitorViewModel.FragmentOptionsViewModel.FragmentOptionGroupViewModels
                              .First(model => model.NameKey == "Loading").FragmentOptionCommandViewModels
                              .First(model => model.TitleKey == "Load")
                              .OptionCommand as RelayCommand;
            var loadCycleCommand = _measuringMonitorViewModel.FragmentOptionsViewModel.FragmentOptionGroupViewModels
                                   .First(model => model.NameKey == "Loading").FragmentOptionCommandViewModels
                                   .First(model => model.TitleKey == "CycleLoading") as FragmentOptionToggleCommandViewModel;

            Assert.False(loadCycleCommand.IsEnabled);
            Assert.False(loadCommand.CanExecute(null));


            loadCommand.CanExecuteChanged += (sender, args) => { isChanagedTriggered1++; };

            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, new MockConnection());

            Assert.True(await TestsUtils.WaitUntil(
                            () =>
            {
                return(loadCycleCommand.IsEnabled && loadCommand.CanExecute(null) &&
                       isChanagedTriggered1 > 0);
            }, 30000));
        }
示例#2
0
        public async Task ChangeConnectionToOfflineConnectionStateCheck()
        {
            _configurationFragmentViewModel.DeviceContext.DeviceMemory.DeviceMemoryValues.Clear();
            await _configurationFragmentViewModel.SetFragmentOpened(false);

            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, new MockConnection());

            Assert.True(await TestsUtils.WaitUntil(
                            () => _deviceViewModel.ConnectionStateViewModel.IsDeviceConnected, 30000));


            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, new OfflineConnection());

            Assert.True(await TestsUtils.WaitUntil(
                            () => !_deviceViewModel.ConnectionStateViewModel.IsDeviceConnected, 30000));

            await _configurationFragmentViewModel.SetFragmentOpened(true);

            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, new MockConnection());

            Assert.True(await TestsUtils.WaitUntil(
                            () => _deviceViewModel.ConnectionStateViewModel.IsDeviceConnected, 30000));


            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, new OfflineConnection());

            Assert.True(await TestsUtils.WaitUntil(
                            () => !_deviceViewModel.ConnectionStateViewModel.IsDeviceConnected, 30000));
        }
示例#3
0
        public async Task ConnectionLostOnWrite()
        {
            var prevConnection = new MockConnection();

            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, prevConnection);

            var applicationGlobalCommandsMock = ApplicationGlobalCommandsMock.Create().WithAskUserGlobalResult(true);

            _typesContainer.RegisterInstance <IApplicationGlobalCommands>(applicationGlobalCommandsMock);

            _configurationFragmentViewModel.DeviceContext.DeviceMemory.DeviceMemoryValues.Clear();
            var connection = new MockConnection();

            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, connection);

            Assert.True(await TestsUtils.WaitUntil(() => _readCommand.CanExecute(null), 30000));

            Assert.True(await TestsUtils.WaitUntil(() => _readCommand.CanExecute(null), 30000));
            _readCommand.Execute(null);
            Assert.True(await TestsUtils.WaitUntil(() => _readCommand.CanExecute(null), 30000));
            (_device.DataProvider.Item.TransactionCompleteSubscription as TransactionCompleteSubscription).ResetOnConnectionRetryCounter(true);

            _device.DataProvider.Item.TransactionCompleteSubscription.Execute();

            var defaultPropertyWithBoolFormatting = _configurationFragmentViewModel.RootConfigurationItemViewModels
                                                    .Cast <IConfigurationItemViewModel>().ToList()
                                                    .FindItemViewModelByName(model => model.Header == "boolTestDefaultProperty")
                                                    .Item as IRuntimePropertyViewModel;

            (defaultPropertyWithBoolFormatting.LocalValue as EditableBoolValueViewModel).BoolValueProperty = true;


            var writeCommand = _configurationFragmentViewModel.FragmentOptionsViewModel.FragmentOptionGroupViewModels
                               .First(model => model.NameKey == "Device").FragmentOptionCommandViewModels
                               .First(model => model.TitleKey == ConfigurationKeys.WRITE_LOCAL_VALUES_TO_DEVICE_STRING_KEY)
                               .OptionCommand as RelayCommand;

            MockConnection.IsConnectionLost = true;


            while (!applicationGlobalCommandsMock.IsAskUserGlobalTriggered)
            {
                writeCommand.Execute(null);
                await TestsUtils.WaitUntil(() => writeCommand.CanExecute(null), 2000);
            }

            Assert.True(await TestsUtils.WaitUntil(
                            () => !_deviceViewModel.ConnectionStateViewModel.IsDeviceConnected, 30000));

            Assert.True((prevConnection as MockConnection).IsDisposed);
            Assert.True((connection as MockConnection).IsDisposed);

            Assert.True(applicationGlobalCommandsMock.IsAskUserGlobalTriggered);
            MockConnection.IsConnectionLost = false;
            (defaultPropertyWithBoolFormatting.LocalValue as EditableBoolValueViewModel).BoolValueProperty = false;

            Assert.True(await TestsUtils.WaitUntil(() => !_readCommand.CanExecute(null), 30000));
        }
示例#4
0
        public async Task ConnectionLostUserSayGoOffline()
        {
            var prevConnection = new MockConnection();

            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, prevConnection);

            var applicationGlobalCommandsMock = ApplicationGlobalCommandsMock.Create().WithAskUserGlobalResult(true);

            _typesContainer.RegisterInstance <IApplicationGlobalCommands>(applicationGlobalCommandsMock);

            _configurationFragmentViewModel.DeviceContext.DeviceMemory.DeviceMemoryValues.Clear();
            var connection = new MockConnection();

            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, connection);

            Assert.True(await TestsUtils.WaitUntil(() => _readCommand.CanExecute(null), 30000));



            MockConnection.IsConnectionLost = true;

            Assert.True(await TestsUtils.WaitUntil(() => _readCommand.CanExecute(null), 30000));
            _readCommand.Execute(null);

            Assert.True(await TestsUtils.WaitUntil(
                            () => !_deviceViewModel.ConnectionStateViewModel.IsDeviceConnected, 30000));

            Assert.True((prevConnection as MockConnection).IsDisposed);

            MockConnection.IsConnectionLost = false;
            Assert.True(await TestsUtils.WaitUntil(() => !_readCommand.CanExecute(null), 30000));
        }
示例#5
0
        private async Task AutoLoadConfigurationTab(bool setting)
        {
            var setup    = Program.RefreshProject();
            var settings = StaticContainer.Container.Resolve <IApplicationSettingsService>();
            var boolTestDefaultProperty = setup.configuration.RootConfigurationItemList
                                          .FindItemByName(item => item.Name == "boolTestDefaultProperty")
                                          .Item as IProperty;


            settings.IsFragmentAutoLoadEnabled = setting;
            var offlineConnection = new OfflineConnection();
            await StaticContainer.Container.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(setup.device, offlineConnection);

            Assert.True(await TestsUtils.WaitUntil(
                            () => !setup.deviceViewModel.ConnectionStateViewModel.IsDeviceConnected, 30000));
            await setup.configurationViewModel.SetFragmentOpened(true);

            await setup.configurationViewModel.SetFragmentOpened(false);

            await setup.configurationViewModel.SetFragmentOpened(true);

            var connection = new MockConnection();
            await StaticContainer.Container.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(setup.device, connection);

            Assert.True(await TestsUtils.WaitUntil(
                            () => setup.deviceViewModel.ConnectionStateViewModel.IsDeviceConnected, 30000));
            await Task.Delay(5000);

            Assert.True(await TestsUtils.WaitUntil(
                            () => setting ==
                            setup.device.DeviceMemory.DeviceMemoryValues.ContainsKey(boolTestDefaultProperty.Address)));
        }
示例#6
0
        public async Task OpenProjectTryReconnectConnectionLost()
        {
            var app = Program.GetApp();

            var shell          = app.Container.Resolve <ShellViewModel>();
            var typesContainer = app.Container.Resolve <ITypesContainer>();

            var applicationGlobalCommandsMock = ApplicationGlobalCommandsMock.Create().WithAskUserGlobalResult(true);

            typesContainer.RegisterInstance <IApplicationGlobalCommands>(applicationGlobalCommandsMock);
            Program.RefreshProject();

            MockConnection.IsConnectionLost = true;

            var projectService = app.Container.Resolve <IUniconProjectService>();
            await projectService.LoadProject("FileAssets/testProject.uniproj");

            var deviceViewModel = shell.ProjectBrowserViewModel.DeviceViewModels[0];

            Assert.True(await TestsUtils.WaitUntil(() => !deviceViewModel.ConnectionStateViewModel.IsDeviceConnected));
            Assert.False(applicationGlobalCommandsMock.IsAskUserGlobalTriggered);

            var deviceContainerService = app.Container.Resolve <IDevicesContainerService>();
            var device = deviceContainerService.ConnectableItems[0] as DefaultDevice;

            Assert.True(device.DeviceConnection is OfflineConnection);
            MockConnection.IsConnectionLost = false;

            projectService.CreateNewProject();
            Program.RefreshProject();
        }
        public async Task Always_returns_NotFound_When_try_to_get_non_existing_PaymentDetails()
        {
            var client = new HttpClient {
                BaseAddress = new Uri("https://localhost:5001")
            };

            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            var clients = Enumerable.Repeat(client, 1);

            var posts = clients.Select(c =>
            {
                var paymentRequest          = TestsUtils.BuildPaymentRequest(Guid.NewGuid(), MerchantsRepository.Amazon);
                var content                 = new StringContent(JsonConvert.SerializeObject(paymentRequest));
                content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                return(c.GetAsync("api/PaymentsDetails/f31499cc-ece3-4974-8785-1620d8c506f6"));
            });

            foreach (var response in await Task.WhenAll(posts))
            {
                Check.That(response.StatusCode).IsEqualTo(HttpStatusCode.NotFound);
            }
        }
示例#8
0
        private async Task CycleLoadingMeasuringTab(bool setting)
        {
            var setup = Program.RefreshProject();

            var settings = StaticContainer.Container.Resolve <IApplicationSettingsService>();

            settings.IsFragmentAutoLoadEnabled = setting;

            await StaticContainer
            .Container.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(setup.device, new MockConnection());

            Assert.True(await TestsUtils.WaitUntil(
                            () => setup.deviceViewModel.ConnectionStateViewModel.IsDeviceConnected, 30000));
            await setup.measuringMonitorViewModel.SetFragmentOpened(true);

            Assert.True(await TestsUtils.WaitUntil(
                            () =>
                            setting == ((FragmentOptionToggleCommandViewModel)setup.measuringMonitorViewModel
                                        .FragmentOptionsViewModel.GetCommand("Loading", "CycleLoading")).IsChecked, 30000));
            await Task.Delay(5000);

            await setup.measuringMonitorViewModel.SetFragmentOpened(false);

            Assert.True(await TestsUtils.WaitUntil(
                            () =>
                            !((FragmentOptionToggleCommandViewModel)setup.measuringMonitorViewModel.FragmentOptionsViewModel
                              .GetCommand("Loading", "CycleLoading")).IsChecked, 30000));
        }
        public static async Task RequestPayments(int concurrentClientsCount)
        {
            const string baseUri = "https://localhost:5001";
            var          clients = BuildHttpClients(concurrentClientsCount, baseUri);

            IEnumerable <Task <PaymentDto> > posts = clients.Select(async(c, index) =>
            {
                Console.WriteLine($"client {index}");

                var paymentRequest          = TestsUtils.BuildPaymentRequest(Guid.NewGuid(), MerchantsRepository.Amazon);
                var content                 = new StringContent(JsonConvert.SerializeObject(paymentRequest));
                content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                var response = await c.PostAsync("/api/Payments", content);

                //Check.That(response.StatusCode).IsEqualTo(HttpStatusCode.Accepted);
                //Check.That(response.Headers.Location.ToString()).StartsWith($"{baseUri}/api/Payments/");

                var payment = JsonConvert.DeserializeObject <PaymentDto>(await response.Content.ReadAsStringAsync());
                //Check.That(payment.Status).IsEqualTo(Domain.PaymentStatus.Pending);
                //Check.That(payment.AcquiringBankPaymentId).IsNull();

                return(payment);
            });

            await Task.WhenAll(posts);
        }
示例#10
0
        public async Task LoadAllFromDeviceJournal()
        {
            Program.CleanProject();

            var serializerService = Program.GetApp().Container.Resolve <ISerializerService>();

            var device = serializerService.DeserializeFromFile <IDevice>("FileAssets/МР301_JA.json") as DefaultDevice;

            StaticContainer.Container.Resolve <IDevicesContainerService>()
            .AddConnectableItem(device);


            var shell = StaticContainer.Container.Resolve <ShellViewModel>();

            var queryDefinitions = await QueryUtils.ReadQueryMockDefinitionFromFile("FileAssets/logFileForMR301JS.txt");

            await StaticContainer.Container.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(device, new MockConnectionWithSetup(queryDefinitions));

            var journalViewModel = shell.ProjectBrowserViewModel.DeviceViewModels[0].FragmentViewModels
                                   .First(model => model.NameForUiKey == "UniconJournal(Журнал системы)") as
                                   UniconJournalViewModel;
            IDeviceViewModel deviceViewModel = shell.ProjectBrowserViewModel.DeviceViewModels[0];



            var serializerServiceMock = new SerializerServiceMock();

            var loadAllViewModel =
                new LoadAllFromDeviceWindowViewModelFactory(StaticContainer.Container.Resolve <ILoadAllService>(),
                                                            serializerServiceMock)
                .CreateLoadAllFromDeviceWindowViewModel(
                    device,
                    deviceViewModel);

            Assert.True(loadAllViewModel.LoadFragmentViewModels.Count == 3);


            loadAllViewModel.PathToFolderToSave = Directory.GetCurrentDirectory();

            loadAllViewModel.SaveToFolderCommand.Execute(null);
            await TestsUtils.WaitUntil(() => loadAllViewModel.SaveToFolderCommand.CanExecute(null));

            Assert.True(serializerServiceMock.SerializedObjects.Count == 0);

            loadAllViewModel.LoadFragmentViewModels.First(model => model.FragmentName == "UniconJournal(Журнал системы)").IsSelectedForLoading = true;

            loadAllViewModel.SaveToFolderCommand.Execute(null);
            await TestsUtils.WaitUntil(() => loadAllViewModel.SaveToFolderCommand.CanExecute(null));

            Assert.True(serializerServiceMock.SerializedObjects.Count == 1);

            Assert.True(((UniconJournal)serializerServiceMock.SerializedObjects[0]).JournalRecords.Count == 511);
        }
        public async Task OfflineConnectionMeasuringButtonsAvailbilityWhenCycleExecuting()
        {
            Program.GetApp().Container.Resolve <IDevicesContainerService>().Refresh();

            var serializerService = Program.GetApp().Container.Resolve <ISerializerService>();

            var device = serializerService.DeserializeFromFile <IDevice>("FileAssets/МР301_JA.json") as DefaultDevice;

            StaticContainer.Container.Resolve <IDevicesContainerService>()
            .AddConnectableItem(device);

            await StaticContainer.Container.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(device, new MockConnection());


            var measuringMonitorViewModel = StaticContainer.Container.Resolve <ShellViewModel>().ProjectBrowserViewModel.DeviceViewModels[0].FragmentViewModels
                                            .First(model => model.NameForUiKey == "MeasuringMonitor") as
                                            MeasuringMonitorViewModel;
            var loadCommand = measuringMonitorViewModel.FragmentOptionsViewModel.FragmentOptionGroupViewModels
                              .First(model => model.NameKey == "Loading").FragmentOptionCommandViewModels
                              .First(model => model.TitleKey == "Load")
                              .OptionCommand as RelayCommand;
            var loadCycleCommand = measuringMonitorViewModel.FragmentOptionsViewModel.FragmentOptionGroupViewModels
                                   .First(model => model.NameKey == "Loading").FragmentOptionCommandViewModels
                                   .First(model => model.TitleKey == "CycleLoading") as FragmentOptionToggleCommandViewModel;

            Assert.True(await TestsUtils.WaitUntil(
                            () => loadCommand.CanExecute(null)));
            Assert.True(loadCycleCommand.IsEnabled);

            loadCycleCommand.IsChecked = true;


            await StaticContainer.Container.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(device, new OfflineConnection());

            Assert.True(await TestsUtils.WaitUntil(
                            () => !loadCycleCommand.IsChecked));

            Assert.False(loadCycleCommand.IsEnabled);
            Assert.False(loadCommand.CanExecute(null));


            await StaticContainer.Container.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(device, new MockConnection());


            Assert.True(loadCycleCommand.IsEnabled);
            Assert.True(loadCommand.CanExecute(null));
            Program.RefreshProject();
        }
示例#12
0
        public async Task ConnectionFromOfflineToOnline()
        {
            var offlineConnection = new OfflineConnection();
            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, offlineConnection);

            Assert.True(await TestsUtils.WaitUntil(
                            () => !_deviceViewModel.ConnectionStateViewModel.IsDeviceConnected, 30000));

            var connection = new MockConnection();
            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, connection);

            Assert.True(await TestsUtils.WaitUntil(
                            () => _deviceViewModel.ConnectionStateViewModel.IsDeviceConnected, 30000));
        }
示例#13
0
        public async Task ChangeConnectionToOfflineIfFragmentClosedConfiguration()
        {
            _configurationFragmentViewModel.DeviceContext.DeviceMemory.DeviceMemoryValues.Clear();
            _configurationFragmentViewModel.DeviceContext.DeviceMemory.LocalMemoryValues.Clear();

            var boolTestDefaultProperty =
                _configuration.RootConfigurationItemList.FindItemByName(item => item.Name == "boolTestDefaultProperty")
                .Item as IProperty;

            var defaultPropertyWithBoolFormatting = _configurationFragmentViewModel.RootConfigurationItemViewModels
                                                    .Cast <IConfigurationItemViewModel>().ToList()
                                                    .FindItemViewModelByName(model => model.Header == "boolTestDefaultProperty")
                                                    .Item as IRuntimePropertyViewModel;

            await _configurationFragmentViewModel.SetFragmentOpened(true);

            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, new MockConnection());

            var commandRead = _configurationFragmentViewModel.FragmentOptionsViewModel.FragmentOptionGroupViewModels
                              .First(model => model.NameKey == "Device").FragmentOptionCommandViewModels
                              .First(model => model.TitleKey == ApplicationGlobalNames.UiCommandStrings.READ_STRING_KEY)
                              .OptionCommand as RelayCommand;

            Assert.False(commandRead.CanExecute(null));

            Assert.True(await TestsUtils.WaitUntil(
                            () => commandRead.CanExecute(null), 30000));
            await _configurationFragmentViewModel.SetFragmentOpened(false);

            _configurationFragmentViewModel.DeviceContext.DeviceMemory.LocalMemoryValues[
                boolTestDefaultProperty.Address] = 1;

            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, new OfflineConnection());

            Assert.False(commandRead.CanExecute(null));

            Assert.False((defaultPropertyWithBoolFormatting.LocalValue as EditableBoolValueViewModel)
                         .BoolValueProperty);
            await _configurationFragmentViewModel.SetFragmentOpened(true);

            Assert.True((defaultPropertyWithBoolFormatting.LocalValue as EditableBoolValueViewModel).BoolValueProperty);

            _configurationFragmentViewModel.DeviceContext.DeviceMemory.LocalMemoryValues[
                boolTestDefaultProperty.Address] = 0;
        }
示例#14
0
        public async Task OfflineConnectionConfigurationButtonsAvailbility()
        {
            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, new OfflineConnection());

            int isChanagedTriggered  = 0;
            int isChanagedTriggered1 = 0;
            int isChanagedTriggered2 = 0;

            var optionCommands = new List <RelayCommand>()
            {
                _configurationFragmentViewModel.FragmentOptionsViewModel.FragmentOptionGroupViewModels
                .First(model => model.NameKey == "Device").FragmentOptionCommandViewModels
                .First(model => model.TitleKey == ApplicationGlobalNames.UiCommandStrings.READ_STRING_KEY)
                .OptionCommand as RelayCommand,
                _configurationFragmentViewModel.FragmentOptionsViewModel.FragmentOptionGroupViewModels
                .First(model => model.NameKey == "Device").FragmentOptionCommandViewModels
                .First(model => model.TitleKey == ConfigurationKeys.WRITE_LOCAL_VALUES_TO_DEVICE_STRING_KEY)
                .OptionCommand as RelayCommand,
                _configurationFragmentViewModel.FragmentOptionsViewModel.FragmentOptionGroupViewModels
                .First(model => model.NameKey == "Device").FragmentOptionCommandViewModels
                .First(model => model.TitleKey == ConfigurationKeys.TRANSFER_FROM_DEVICE_TO_LOCAL_STRING_KEY)
                .OptionCommand as RelayCommand,
            };

            Assert.False(optionCommands.Any(command => command.CanExecute(null)));

            optionCommands[0].CanExecuteChanged += (sender, args) => { isChanagedTriggered++; };
            optionCommands[1].CanExecuteChanged += (sender, args) => { isChanagedTriggered1++; };
            optionCommands[2].CanExecuteChanged += (sender, args) => { isChanagedTriggered2++; };

            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, new MockConnection());

            await _configurationFragmentViewModel.SetFragmentOpened(true);

            Assert.True(await TestsUtils.WaitUntil(
                            () => optionCommands.All(command => command.CanExecute(null)), 30000));
            Assert.True(isChanagedTriggered > 0);
            Assert.True(isChanagedTriggered1 > 0);
            Assert.True(isChanagedTriggered2 > 0);
            //open again and it must not start reading
            await _configurationFragmentViewModel.SetFragmentOpened(true);

            Assert.True(optionCommands.All(command => command.CanExecute(null)));
        }
示例#15
0
        public async Task MeasuringMonitorLoad()
        {
            _device.DeviceMemory.DeviceMemoryValues.Clear();

            var loadCommand = _measuringMonitorViewModel.FragmentOptionsViewModel.FragmentOptionGroupViewModels
                              .First(model => model.NameKey == "Loading").FragmentOptionCommandViewModels
                              .First(model => model.TitleKey == "Load")
                              .OptionCommand as RelayCommand;

            loadCommand.Execute(null);

            var analogSignal =
                _measuringMonitorViewModel.MeasuringElementViewModels.First(model => model.Header == "analogSignal");

            Assert.True(await TestsUtils.WaitUntil(() => analogSignal.FormattedValueViewModel != null));

            Assert.True((analogSignal.FormattedValueViewModel as NumericValueViewModel).NumValue == "0");
        }
示例#16
0
        public async Task OfflineConnectionValuesInit()
        {
            _configurationFragmentViewModel.DeviceContext.DeviceMemory.DeviceMemoryValues.Clear();
            _configurationFragmentViewModel.DeviceContext.DeviceMemory.LocalMemoryValues.Clear();

            var boolTestDefaultProperty =
                _configuration.RootConfigurationItemList.FindItemByName(item => item.Name == "boolTestDefaultProperty")
                .Item as IProperty;

            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, new OfflineConnection());

            await _configurationFragmentViewModel.SetFragmentOpened(true);

            Assert.True(await TestsUtils.WaitUntil(
                            () => _configurationFragmentViewModel.DeviceContext.DeviceMemory.LocalMemoryValues[
                                boolTestDefaultProperty.Address] == 0, 30000));


            Assert.False(
                _configurationFragmentViewModel.DeviceContext.DeviceMemory.DeviceMemoryValues.ContainsKey(
                    boolTestDefaultProperty.Address));


            _configurationFragmentViewModel.DeviceContext.DeviceMemory.LocalMemoryValues[
                boolTestDefaultProperty.Address] = 1;

            await _configurationFragmentViewModel.SetFragmentOpened(true);

            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, new MockConnection());

            Assert.True(
                _configurationFragmentViewModel.DeviceContext.DeviceMemory.LocalMemoryValues[
                    boolTestDefaultProperty.Address] == 1);

            _configurationFragmentViewModel.DeviceContext.DeviceMemory.LocalMemoryValues[
                boolTestDefaultProperty.Address] = 0;

            Assert.True(await TestsUtils.WaitUntil(
                            () => _configurationFragmentViewModel.DeviceContext.DeviceMemory.DeviceMemoryValues.ContainsKey(
                                boolTestDefaultProperty.Address), 30000));
        }
示例#17
0
        private async Task AutoLoadJournalTab(bool setting)
        {
            Program.CleanProject();

            var settings = StaticContainer.Container.Resolve <IApplicationSettingsService>();

            settings.IsFragmentAutoLoadEnabled = setting;

            var serializerService = Program.GetApp().Container.Resolve <ISerializerService>();

            var device = serializerService.DeserializeFromFile <IDevice>("FileAssets/МР301_JA.json") as DefaultDevice;

            StaticContainer.Container.Resolve <IDevicesContainerService>()
            .AddConnectableItem(device);


            var shell = StaticContainer.Container.Resolve <ShellViewModel>();

            var queryDefinitions = await QueryUtils.ReadQueryMockDefinitionFromFile("FileAssets/logFileForMR301JS.txt");

            await StaticContainer.Container.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(device, new MockConnectionWithSetup(queryDefinitions));

            var journalViewModel = shell.ProjectBrowserViewModel.DeviceViewModels[0].FragmentViewModels
                                   .First(model => model.NameForUiKey == "UniconJournal(Журнал системы)") as
                                   UniconJournalViewModel;

            var deviceViewModel = shell.ProjectBrowserViewModel.DeviceViewModels[0];



            Assert.True(await TestsUtils.WaitUntil(
                            () => !deviceViewModel.ConnectionStateViewModel.IsDeviceConnected, 30000));
            await journalViewModel.SetFragmentOpened(true);

            Assert.True(await TestsUtils.WaitUntil(
                            () => journalViewModel.FragmentOptionsViewModel.GetCommand("Device", "Load").OptionCommand
                            .CanExecute(null), 30000));
            await Task.Delay(5000);

            Assert.True(await TestsUtils.WaitUntil(
                            () => setting == journalViewModel.UniconJournal.JournalRecords.Any(), 30000));
        }
示例#18
0
        public async Task OpenProjectTryReconnect()
        {
            var app = Program.GetApp();

            Program.GetDevice();
            var shell = app.Container.Resolve <ShellViewModel>();

            var projectService = app.Container.Resolve <IUniconProjectService>();
            await projectService.LoadProject("FileAssets/testProject.uniproj");

            var deviceViewModel        = shell.ProjectBrowserViewModel.DeviceViewModels[0];
            var deviceContainerService = app.Container.Resolve <IDevicesContainerService>();
            var device = deviceContainerService.ConnectableItems[0] as DefaultDevice;

            Assert.True(await TestsUtils.WaitUntil(() => deviceViewModel.ConnectionStateViewModel.IsDeviceConnected));
            Assert.True(device.DeviceConnection is MockConnection);

            projectService.CreateNewProject();

            Program.RefreshProject();
        }
示例#19
0
        public async Task LoadMr301SystemJournalTest()
        {
            Program.CleanProject();

            var serializerService = Program.GetApp().Container.Resolve <ISerializerService>();

            var device = serializerService.DeserializeFromFile <IDevice>("FileAssets/МР301_JA.json") as DefaultDevice;

            StaticContainer.Container.Resolve <IDevicesContainerService>()
            .AddConnectableItem(device);


            var shell = StaticContainer.Container.Resolve <ShellViewModel>();

            var queryDefinitions = await QueryUtils.ReadQueryMockDefinitionFromFile("FileAssets/logFileForMR301JS.txt");

            await StaticContainer.Container.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(device, new MockConnectionWithSetup(queryDefinitions));

            var journalViewModel = shell.ProjectBrowserViewModel.DeviceViewModels[0].FragmentViewModels
                                   .First(model => model.NameForUiKey == "UniconJournal(Журнал системы)") as
                                   UniconJournalViewModel;

            var commandViewModel = journalViewModel.FragmentOptionsViewModel.GetCommand("Device", "Load");

            commandViewModel.OptionCommand.Execute(null);
            await TestsUtils.WaitUntil(() => commandViewModel.OptionCommand.CanExecute(null));


            var str = StaticContainer.Container.Resolve <ISerializerService>().SerializeInString(
                journalViewModel.UniconJournal
                );


            var str1 = StaticContainer.Container.Resolve <ISerializerService>()
                       .DeserializeFromFile <UniconJournal>("FileAssets/Журнал(Журнал системы) МР301_JA.ujr");

            Program.RefreshProject();
        }
示例#20
0
        public async Task ConnectionLostUserSayGoOfflineWhenMeasuringInLoadingCycle()
        {
            var prevConnection = new MockConnection();

            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, prevConnection);

            var applicationGlobalCommandsMock = ApplicationGlobalCommandsMock.Create().WithAskUserGlobalResult(true);

            _typesContainer.RegisterInstance <IApplicationGlobalCommands>(applicationGlobalCommandsMock);

            _configurationFragmentViewModel.DeviceContext.DeviceMemory.DeviceMemoryValues.Clear();
            var connection = new MockConnection();

            await _typesContainer.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(_device, connection);

            Assert.True(await TestsUtils.WaitUntil(() => _readCommand.CanExecute(null), 30000));

            var loadCycleCommand = _measuringMonitorViewModel.FragmentOptionsViewModel.FragmentOptionGroupViewModels
                                   .First(model => model.NameKey == "Loading").FragmentOptionCommandViewModels
                                   .First(model => model.TitleKey == "CycleLoading") as FragmentOptionToggleCommandViewModel;

            loadCycleCommand.IsChecked = true;

            MockConnection.IsConnectionLost = true;

            Assert.True(await TestsUtils.WaitUntil(() => _readCommand.CanExecute(null), 30000));
            _readCommand.Execute(null);

            Assert.True(await TestsUtils.WaitUntil(
                            () => !_deviceViewModel.ConnectionStateViewModel.IsDeviceConnected, 30000));
            await Task.Delay(3000);

            Assert.False(_measuringMonitorViewModel.HasErrors);
            Assert.True(await TestsUtils.WaitUntil(
                            () => !loadCycleCommand.IsChecked));
            MockConnection.IsConnectionLost = false;
        }
示例#21
0
        public async Task LoadJournalStructureMustBeChecked()
        {
            Program.CleanProject();
            var globalCommandsMock = ApplicationGlobalCommandsMock
                                     .Create()
                                     .WithSelectFileToOpenResult("FileAssets/Журнал(Журнал системы) МР301_JA.ujr")
                                     .WithAskUserGlobalResult(false);

            StaticContainer.Container.RegisterInstance <IApplicationGlobalCommands>(globalCommandsMock);

            var serializerService = Program.GetApp().Container.Resolve <ISerializerService>();

            var device = serializerService.DeserializeFromFile <IDevice>("FileAssets/МР301_JA.json") as DefaultDevice;

            StaticContainer.Container.Resolve <IDevicesContainerService>()
            .AddConnectableItem(device);

            var shell = StaticContainer.Container.Resolve <ShellViewModel>();

            await StaticContainer.Container.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(device, new OfflineConnection());

            var journalViewModel = shell.ProjectBrowserViewModel.DeviceViewModels[0].FragmentViewModels
                                   .First(model => model.NameForUiKey == "UniconJournal(Аварий)") as
                                   UniconJournalViewModel;

            var commandViewModel = journalViewModel.FragmentOptionsViewModel.GetCommand("Device", "Open");

            commandViewModel.OptionCommand.Execute(null);
            await TestsUtils.WaitUntil(() => commandViewModel.OptionCommand.CanExecute(null));

            Assert.True(globalCommandsMock.IsAskUserGlobalTriggered);

            Assert.False(journalViewModel.Table.Values.Any());

            Program.RefreshProject();
        }
示例#22
0
        public async Task LoadAllFromDevice()
        {
            var setup = Program.RefreshProject();

            var boolTestDefaultProperty =
                setup.configuration.RootConfigurationItemList
                .FindItemByName(item => item.Name == "boolTestDefaultProperty")
                .Item as IProperty;


            var connection = new MockConnection();
            await StaticContainer.Container.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(setup.device, connection);

            connection.MemorySlotDictionary.Add(boolTestDefaultProperty.Address, 1);

            var serializerService = new SerializerServiceMock();

            var loadAllViewModel =
                new LoadAllFromDeviceWindowViewModelFactory(StaticContainer.Container.Resolve <ILoadAllService>(),
                                                            serializerService)
                .CreateLoadAllFromDeviceWindowViewModel(
                    setup.device,
                    setup.deviceViewModel);

            Assert.True(loadAllViewModel.LoadFragmentViewModels.Count == 1);


            loadAllViewModel.PathToFolderToSave = Directory.GetCurrentDirectory();

            loadAllViewModel.SaveToFolderCommand.Execute(null);
            await TestsUtils.WaitUntil(() => loadAllViewModel.SaveToFolderCommand.CanExecute(null));

            Assert.True(serializerService.SerializedObjects.Count == 0);

            loadAllViewModel.LoadFragmentViewModels[0].IsSelectedForLoading = true;



            loadAllViewModel.SaveToFolderCommand.Execute(null);
            await TestsUtils.WaitUntil(() => loadAllViewModel.SaveToFolderCommand.CanExecute(null));

            Assert.True(serializerService.SerializedObjects.Count == 1);

            var memorySaved = serializerService.SerializedObjects[0] as Dictionary <ushort, ushort>;

            Assert.True(memorySaved[boolTestDefaultProperty.Address] == 1);

            Assert.True(serializerService.SerializedObjects[0] is Dictionary <ushort, ushort>);



            connection.MemorySlotDictionary[boolTestDefaultProperty.Address] = 0;

            loadAllViewModel.SaveToFolderCommand.Execute(null);
            await TestsUtils.WaitUntil(() => loadAllViewModel.SaveToFolderCommand.CanExecute(null));

            Assert.True(serializerService.SerializedObjects.Count == 2);

            var memorySaved1 = serializerService.SerializedObjects[1] as Dictionary <ushort, ushort>;

            Assert.True(memorySaved1[boolTestDefaultProperty.Address] == 0);



            await StaticContainer.Container.Resolve <IDevicesContainerService>()
            .ConnectDeviceAsync(setup.device, new OfflineConnection());

            loadAllViewModel.SaveToFolderCommand.Execute(null);
            await TestsUtils.WaitUntil(() => loadAllViewModel.SaveToFolderCommand.CanExecute(null));

            Assert.True(serializerService.SerializedObjects.Count == 2);
        }
 protected override void Load(ContainerBuilder builder)
 {
     builder.RegisterInstance <IAssetsReadModelRepository>(new MockedAssetsRepository(TestsUtils.GetAssetsRepository()));
     builder.RegisterInstance <IAssetPairsReadModelRepository>(new MockedAssetPairsRepository(TestsUtils.GetAssetPairsRepository()));
 }