public override void Execute(DiscreteLogarithm entity)
        {
            Logger.SetExecutionId(entity.Id);
            var job = new DiscreteLogarithmJob(Logger, _discreteLogarithmDataService);

            entity        = _discreteLogarithmDataService.Get(entity.Id);
            entity.Status = Status.InProgress;
            _discreteLogarithmDataService.Update(entity);
            _discreteLogarithmDataService.SaveChanges();

            var result = job.Run(entity.Generator, entity.Result, entity.Modulus);

            if (result.IsSuccess)
            {
                entity.Exponent = result.DiscreteLogarithm;
                entity.Status   = result.HadWarnings ? Status.FinishedWithWarnings : Status.Finished;
            }
            else
            {
                if (entity.Status != Status.Canceled && !entity.Messages.Last().Message.Contains("canceled"))
                {
                    entity.Status = Status.FinishedWithErrors;
                }
            }

            if (entity.FinishTime == null)
            {
                entity.FinishTime = DateTime.Now;
            }

            //_discreteLogarithmDataService.Update(entity);
            _discreteLogarithmDataService.SaveChanges();
        }
Example #2
0
        public void RunTest_1()
        {
            var dataService = new Mock <IDataService <DiscreteLogarithm> >();
            var logger      = new Mock <IExecutionLogger>();
            var job         = new DiscreteLogarithmJob(logger.Object, dataService.Object);

            Assert.Throws <InvalidOperationException>(() => job.Run(3, 6, 7));
        }
Example #3
0
        public void RunTest_4()
        {
            var dataService = new Mock <IDataService <DiscreteLogarithm> >();
            var logger      = new Mock <IExecutionLogger>();
            var job         = new DiscreteLogarithmJob(logger.Object, dataService.Object);

            var result = job.Run(3, 6, 9);

            Assert.AreEqual(0, result.DiscreteLogarithm);
            Assert.AreEqual(false, result.HadWarnings);
            Assert.AreEqual(false, result.IsSuccess);
        }