public void AddTest()
        {
            Mock <ICtx>      mockCtx          = new Mock <ICtx>();
            RectangleHandler rectangleHandler = new RectangleHandler(mockCtx.Object);

            rectangleHandler.Add("NoName", 8, 5);
            rectangleHandler.Add("NoName", 4, 7);
        }
        public void GetTest()
        {
            Mock <ICtx>      mockCtx          = new Mock <ICtx>();
            RectangleHandler rectangleHandler = new RectangleHandler(mockCtx.Object);

            rectangleHandler.Add("NoName", 8, 5);
            IRectangle rectangle = rectangleHandler.Get("NoName");

            Assert.NotNull(rectangle);
            Assert.True(rectangle.SideA == 8 && rectangle.SideB == 5);
            Assert.Null(rectangleHandler.Get("aaa"));
        }
        public void GetPerimeterTest()
        {
            Mock <ICtx>           mockCtx       = new Mock <ICtx>();
            Mock <IPerimeterCalc> mockPerimeter = new Mock <IPerimeterCalc>();

            mockCtx.SetupGet(a => a.GetPerimeterCalc).Returns(mockPerimeter.Object);
            mockPerimeter.Setup(f => f.Calc(It.IsAny <IRectangle>())).Returns <IRectangle>(
                g =>
            {
                return((g.SideA + g.SideB) * 2);
            });
            RectangleHandler rectangleHandler = new RectangleHandler(mockCtx.Object);

            rectangleHandler.Add("NoName", 8, 5);
            Assert.True(rectangleHandler.GetPerimeter("NoName") == 26);
            Assert.True(rectangleHandler.GetPerimeter("aaa") == 0);
        }
        public void GetAreaTest()
        {
            Mock <ICtx>      mockCtx  = new Mock <ICtx>();
            Mock <IAreaCalc> mockArea = new Mock <IAreaCalc>();

            mockCtx.SetupGet(a => a.GetAreaCalc).Returns(mockArea.Object);
            mockArea.Setup(f => f.Calc(It.IsAny <IRectangle>())).Returns <IRectangle>(
                g =>
            {
                return(g.SideA * g.SideB);
            });
            RectangleHandler rectangleHandler = new RectangleHandler(mockCtx.Object);

            rectangleHandler.Add("NoName", 8, 5);
            Assert.True(rectangleHandler.GetArea("NoName") == 40);
            Assert.True(rectangleHandler.GetArea("aaa") == 0);
        }
Beispiel #5
0
        void SetupSolutionParams()
        {
            SolutionPanel.SolveButtonHandler = solution;
            void solution(bool isGraphic)
            {
                GraphicSettings settings = null;

                SolutionPanel.button1.Enabled = false;
                if (isMethodParams && isFuncParams)
                {
                    if (isGraphic)
                    {
                        this.graphicFirstDimension  = (int)SolutionPanel.firstVar.Value;
                        this.graphicSecondDimension = ((int)SolutionPanel.secondVar.Value != graphicFirstDimension) ? (int)SolutionPanel.secondVar.Value : ((int)SolutionPanel.secondVar.Value != (int)SolutionPanel.secondVar.Maximum) ? Math.Min(this.graphicFirstDimension + 1, (int)SolutionPanel.secondVar.Maximum): this.graphicFirstDimension - 1;
                        graphic = new GraphicWindow(graphicWindowHeight, graphicWindowWidth, graphicWindowFPS, graphicWindowVsync, graphicWindowAnit);
                        graphic.SetRectangleLimit(rectangleLimit);
                        RectangleHandler handler = new RectangleHandler(graphic.GetRectangleFromMethod);
                        settings = new GraphicSettings(handler, graphicFirstDimension, graphicSecondDimension);
                        graphic?.Window.SetActive(false);
                    }
                    if (isDihtomiaCurrentMethod)
                    {
                        var           method       = currentMethodSettings as DihtomiaParams;
                        double        funcMin      = 0;
                        int           counter      = 0;
                        int           optimal      = 0;
                        List <double> optimalPoint = null;
                        FormTimer.Start();
                        watch.Restart();
                        Task.Run(() =>
                        {
                            this.isCalculating = true;
                            var solve          = MNPD.Solve(method.Function, method.Lipzits, method.Precision, method.LipzitsParametr, method.LowerPoint, method.UpperPoint, method.Rule, settings);
                            funcMin            = solve.FunctionMinimum;
                            counter            = solve.counter;
                            optimal            = solve.optimal;
                            optimalPoint       = solve.optimalPoint;
                            this.Invoke(new Action(() =>
                            {
                                watch.Stop();
                                Logs($"Мин. значение функции={funcMin}\nЧисло итерации={counter}\nИтерация оптимального значения={optimal}");
                                Logs(string.Join("\r\n", optimalPoint.Select((point, index) => $"x{index} = {String.Format("{0:F8}", point)}")));
                                graphic?.ShowWindow();
                                SolutionPanel.button1.Enabled = false;
                            }
                                                   ));
                        }).ContinueWith((taskRes) =>
                        {
                            this.isCalculating = false;
                            this.Invoke(new Action(() =>
                            {
                                SolutionPanel.button1.Enabled = true;
                                FormTimer.Stop();
                            }));
                            //TODO: NORMAL RESET
                        });
                    }
                    else
                    {
                        var           method       = currentMethodSettings as ModificatedParams;
                        double        funcMin      = 0;
                        int           counter      = 0;
                        int           optimal      = 0;
                        List <double> optimalPoint = null;
                        FormTimer.Start();
                        watch.Restart();
                        Task.Run(() =>
                        {
                            this.isCalculating = true;
                            var solve          = MNPANK.Solve(method.Function, method.Lipzits, method.Precision, method.LipzitsParametr, method.LowerPoint, method.UpperPoint, method.SubRule, method.MainRule, settings);
                            funcMin            = solve.FunctionMinimum;
                            counter            = solve.counter;
                            optimal            = solve.optimal;
                            optimalPoint       = solve.optimalPoint;
                            this.Invoke(new Action(() =>
                            {
                                watch.Stop();
                                Logs($"\r\nМин. значение функции={funcMin}\r\nЧисло итерации={counter}\r\nИтерация оптимального значения={optimal}\r\n");
                                Logs("Точка оптимума:");
                                Logs(string.Join("\r\n", optimalPoint.Select((point, index) => $"x{index} = {String.Format("{0:F8}", point)}")));
                                graphic?.ShowWindow();
                                SolutionPanel.button1.Enabled = false;
                            }
                                                   ));
                            //graphic?.Window.SetActive(true);
                        }).ContinueWith((taskRes) =>
                        {
                            this.isCalculating = false;
                            this.Invoke(new Action(() =>
                            {
                                SolutionPanel.button1.Enabled = true;

                                FormTimer.Stop();
                            }));
                        });
                    }
                }
                GC.Collect();
            }
        }
 public Ctx()
 {
     GetRectangleHandler = new RectangleHandler(this);
 }
 public GraphicSettings(RectangleHandler handler, int firstDimension, int secondDimension)
 {
     this.handler         = handler;
     this.firstDimension  = firstDimension;
     this.secondDimension = secondDimension;
 }