コード例 #1
0
        public void StepByStepExecutionOfNonDeterministicAutomatonTest()
        {
            var executorViewModel = new ExecutorViewModel()
            {
                Executor = executor
            };

            graph.Edges.FirstOrDefault(edge => edge.Source.ID == 1 && edge.Target.ID == 2).TransitionTokensString = "01";
            executorViewModel.InputString = "110";

            executorViewModel.StartDebugCommand.Execute(null);
            Assert.True(executorViewModel.InSimulation);
            Assert.True(CheckStep(executorViewModel, new List <int>()
            {
                1
            }, ResultEnum.NotRunned, "", "1", "10"));

            executorViewModel.StepInCommand.Execute(null);
            Assert.True(CheckStep(executorViewModel, new List <int>()
            {
                1, 2
            }, ResultEnum.NotRunned, "1", "1", "0"));

            executorViewModel.StepInCommand.Execute(null);
            Assert.True(CheckStep(executorViewModel, new List <int>()
            {
                1, 2
            }, ResultEnum.NotRunned, "11", "0", ""));

            executorViewModel.StepInCommand.Execute(null);
            Assert.True(CheckStep(executorViewModel, new List <int>()
            {
                2
            }, ResultEnum.Passed, "110", "", ""));
        }
コード例 #2
0
        public async Task <IActionResult> Post(ExecutorViewModel model)
        {
            if (ModelState.IsValid)
            {
                await _database.Database.ExecuteSqlCommandAsync("dbo.INSERT_EXECUTOR @firstName, " +
                                                                "@lastName, " +
                                                                "@patronymic, " +
                                                                "@description, " +
                                                                "@executorType, " +
                                                                "@userId, " +
                                                                "@phoneNumber, " +
                                                                "@payerAccountNumber, " +
                                                                "@fullJuridicalName, " +
                                                                "@shortJuridicalName, " +
                                                                "@servicesId",
                                                                new SqlParameter("@firstName", model.FirstName),
                                                                new SqlParameter("@lastName", model.LastName),
                                                                new SqlParameter("@patronymic", model.Patronymic),
                                                                new SqlParameter("@description", model.Description),
                                                                new SqlParameter("@executorType", model.ExecutorType),
                                                                new SqlParameter("@userId", model.UserId),
                                                                new SqlParameter("@phoneNumber", model.Number),
                                                                new SqlParameter("@payerAccountNumber", model.PayerAccountNumber),
                                                                new SqlParameter("@fullJuridicalName", model.FullJuridicalName),
                                                                new SqlParameter("@shortJuridicalName", model.ShortJuridicalName),
                                                                new SqlParameter("@servicesId", model.ServicesId));

                return(Ok(model));
            }

            return(BadRequest());
        }
コード例 #3
0
        public void UpdateExecutor(ExecutorViewModel model)
        {
            var services = database.ServiceClassifers.GetList()
                           .Where(s => model.ServiceClassifersIds
                                  .Contains(s.Id.ToString()))
                           .ToList();

            var executor = database.Executors.GetList().FirstOrDefault(e => e.Id == model.Id);

            executor.FirstName   = model.FirstName;
            executor.LastName    = model.LastName;
            executor.Patronymic  = model.Patronymic;
            executor.Description = model.Description;
            executor.PhoneNumber = model.PhoneNumber;

            executor.ServiceClassifers.Clear();
            executor.ServiceClassifers = services;

            if (string.Equals(model.Type, "NP"))
            {
                database.Executors.Update(executor);
                database.Save();
            }
            else if (string.Equals(model.Type, "ST"))
            {
                database.Executors.Update(executor);
                database.Save();

                var trader = database.SoleTraderExecutors.Get(model.Id);
                trader.PayerAccountNumber = model.PayerAccountNumber;

                database.SoleTraderExecutors.Update(trader);
                database.Save();
            }
            else if (string.Equals(model.Type, "JP"))
            {
                database.Executors.Update(executor);
                database.Save();

                var juridical = database.JuridicalExecutors.Get(model.Id);
                juridical.PayerAccountNumber = model.PayerAccountNumber;
                juridical.FullJuredicalName  = model.FullJuredicalName;
                juridical.ShortJuredicalName = model.ShortJuredicalName;

                database.JuridicalExecutors.Update(juridical);
                database.Save();
            }
        }
コード例 #4
0
        public void FastExecutionTest()
        {
            var executorViewModel = new ExecutorViewModel()
            {
                Executor = executor
            };

            Assert.AreEqual(ResultEnum.NotRunned, executorViewModel.Result);
            executorViewModel.InputString = "111010";
            executorViewModel.RunCommand.Execute(null);
            Assert.AreEqual(ResultEnum.Passed, executorViewModel.Result);
            executorViewModel.InputString = "1101";
            Assert.AreEqual(ResultEnum.NotRunned, executorViewModel.Result);
            executorViewModel.RunCommand.Execute(null);
            Assert.AreEqual(ResultEnum.Failed, executorViewModel.Result);
        }
コード例 #5
0
        public void DropDebugTest()
        {
            var executorViewModel = new ExecutorViewModel {
                Executor = executor
            };

            executorViewModel.InputString = "11010";

            executorViewModel.StartDebugCommand.Execute(null);

            executorViewModel.StepInCommand.Execute(null);

            executorViewModel.DropDebugCommand.Execute(null);
            Assert.False(executorViewModel.InSimulation);

            Assert.True(CheckStep(executorViewModel, new List <int>(), ResultEnum.NotRunned, "", "", ""));
        }
コード例 #6
0
 private void AddExecutorForm_Load(object sender, EventArgs e)
 {
     if (id.HasValue)
     {
         try
         {
             ExecutorViewModel view = service.GetElement(id.Value);
             if (view != null)
             {
                 FIOTextBox.Text = view.ExecutorFIO;
             }
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
     }
 }
コード例 #7
0
 public void Put([FromBody]ExecutorViewModel model)
 {
     ExecutorManager.UpdateExecutor(model);
 }
コード例 #8
0
        public void StepByStepExecutionTest()
        {
            var executorViewModel = new ExecutorViewModel()
            {
                Executor = executor
            };

            Assert.AreEqual(ResultEnum.NotRunned, executorViewModel.Result);
            var notified = false;

            void CheckNotified(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == nameof(ExecutorViewModel.InSimulation))
                {
                    notified = true;
                }
            }

            executorViewModel.PropertyChanged += CheckNotified;
            executorViewModel.InputString      = "11010";

            executorViewModel.StartDebugCommand.Execute(null);
            Assert.True(executorViewModel.InSimulation);
            Assert.True(notified);
            notified = false;
            Assert.True(CheckStep(executorViewModel, new List <int>()
            {
                1
            }, ResultEnum.NotRunned, "", "1", "1010"));

            executorViewModel.StepInCommand.Execute(null);
            Assert.True(CheckStep(executorViewModel, new List <int>()
            {
                1
            }, ResultEnum.NotRunned, "1", "1", "010"));

            executorViewModel.StepInCommand.Execute(null);
            Assert.True(CheckStep(executorViewModel, new List <int>()
            {
                1
            }, ResultEnum.NotRunned, "11", "0", "10"));

            executorViewModel.StepInCommand.Execute(null);
            Assert.True(CheckStep(executorViewModel, new List <int>()
            {
                2
            }, ResultEnum.NotRunned, "110", "1", "0"));

            executorViewModel.StepInCommand.Execute(null);
            Assert.True(CheckStep(executorViewModel, new List <int>()
            {
                1
            }, ResultEnum.NotRunned, "1101", "0", ""));

            executorViewModel.StepInCommand.Execute(null);
            Assert.True(CheckStep(executorViewModel, new List <int>()
            {
                2
            }, ResultEnum.Passed, "11010", "", ""));

            Assert.False(executorViewModel.StepInCommand.CanExecute(null));

            executorViewModel.DropDebugCommand.Execute(null);

            Assert.False(executorViewModel.InSimulation);
            Assert.True(notified);
        }
コード例 #9
0
 private bool CheckStep(ExecutorViewModel executorViewModel, List <int> actualStates, ResultEnum result,
                        string passedString, string currentToken, string notPassedString)
 => new HashSet <int>(executorViewModel.ActualStates).SetEquals(new HashSet <int>(actualStates)) && executorViewModel.Result == result &&
 executorViewModel.PassedString == passedString && executorViewModel.CurrentToken == currentToken && executorViewModel.NotPassedString == notPassedString;
コード例 #10
0
        public void SceneEditingDisablingDuringSimulationTest()
        {
            var newWindowThread = new Thread(new ThreadStart(() =>
            {
                var scene = new Scene();

                var help            = new ErrorReporterViewModel();
                scene.ErrorReporter = help;

                var graph = help.Graph;

                var state1 = new NodeViewModel {
                    ID = 1, IsInitial = true
                };
                var state2 = new NodeViewModel {
                    ID = 2, IsFinal = true
                };
                graph.AddVertex(state1);
                graph.AddVertex(state2);
                graph.AddEdge(new EdgeViewModel(state1, state1)
                {
                    TransitionTokensString = "1"
                });
                graph.AddEdge(new EdgeViewModel(state1, state2)
                {
                    TransitionTokensString = "0"
                });
                graph.AddEdge(new EdgeViewModel(state2, state1)
                {
                    TransitionTokensString = "1"
                });
                var executor = new FAExecutor(graph);

                var executorViewModel = new ExecutorViewModel()
                {
                    Executor = executor
                };

                executorViewModel.StartDebugCommand.Execute(null);

                foreach (var vertex in graph.Vertices)
                {
                    Assert.False(vertex.EditionAvailable);
                }

                foreach (var edge in graph.Edges)
                {
                    Assert.False(edge.EditionAvailable);
                }

                executorViewModel.DropDebugCommand.Execute(null);

                foreach (var vertex in graph.Vertices)
                {
                    Assert.True(vertex.EditionAvailable);
                }

                foreach (var edge in graph.Edges)
                {
                    Assert.True(edge.EditionAvailable);
                }

                // start the Dispatcher processing
                System.Windows.Threading.Dispatcher.Run();
            }));

            // set the apartment state
            newWindowThread.SetApartmentState(ApartmentState.STA);

            // make the thread a background thread
            newWindowThread.IsBackground = true;

            // start the thread
            newWindowThread.Start();
        }