public void ChangeFont_WhenAlways_ShouldChangeFont(RectangleClass box, Font font, Font expected) { box.ChangeFont(font); Font actual = box.GetFont(); Assert.AreEqual(expected, actual); }
public static void AccessToStructs() { // Using a Struct var rectangleStruct = new RectangleStruct(11, 33, "RectangleStruct") { Width = 1, Height = 3, }; var rectangleStruct2 = new RectangleStruct { Width = 1, Height = 3, }; Console.WriteLine("rectangleStruct: {0}:{1}", rectangleStruct.Width, rectangleStruct.Height); // Calling a struct Method var rectangleStruct3 = rectangleStruct.Add(rectangleStruct2); Console.WriteLine("rectangleStruct: {0}:{1}", rectangleStruct3.Width, rectangleStruct3.Height); var rectangleClass = new RectangleClass("RectangleClass") { Width = 1, Height = 3, }; Console.WriteLine("rectangleClass: {0}:{1}", rectangleClass.Width, rectangleClass.Height); }
public void checkIntegerArea() { RectangleClass rcObj = new RectangleClass(2, 2); int result = rcObj.GetArea(); Assert.AreEqual(4, result); }
public void checkIntegerParameter() { RectangleClass rcObj = new RectangleClass(2, 2); int result = rcObj.GetPerimeter(); Assert.AreEqual(8, result); }
public void checkIntegerSetWidth() { RectangleClass rcObj = new RectangleClass(); int result = rcObj.SetLength(5); Assert.AreEqual(5, result); }
public void checkIntegerWidth() { RectangleClass rcObj = new RectangleClass(4, 4); int result = rcObj.GetWidth(); Assert.AreEqual(4, result); }
public void checkIntegerLength() { RectangleClass rcObj = new RectangleClass(10, 10); int result = rcObj.GetLength(); Assert.AreEqual(10, result); }
public void DrawFrontView() { LayerManager.SetLayerCurrent("SidePanel"); RectangleClass rect = new RectangleClass("Knee Brace", BottomLeftPoint, BottomRightPoint, TopRightPoint, TopLeftPoint); geometry.DrawRectangle(rect, BottomLeftPoint); }
public void ConnectionPoints_WhenAlways_ShouldCreateConnectionPoints(RectangleClass box, Point startPoint, Point crntPoint, Point oppositePoint, ConnectionPoint expected) { box.AddPoints(startPoint); box.crntZone = new BoxZones(); box.crntZone = BoxZones.Top; ConnectionPoint actual = box.GetConnectionPoint(crntPoint, oppositePoint); Assert.AreEqual(expected, actual); }
public void ZoomAndCenterMap(double scaleFactor, Point centerPoint, ref AxMapObjects2.AxMap mapControl) { Rectangle oExtent = new RectangleClass(); oExtent.Left = mapControl.FullExtent.Left; oExtent.Right = mapControl.FullExtent.Right; oExtent.Top = mapControl.FullExtent.Top; oExtent.Bottom = mapControl.FullExtent.Bottom; oExtent.ScaleRectangle(scaleFactor); oExtent.Offset(centerPoint.X - oExtent.Center.X, centerPoint.Y - oExtent.Center.Y); mapControl.Extent = oExtent; }
public void Rectangle_AreaCalculateTest() { // arrange double width = 10; double height = 20; double expected = 200; // act RectangleClass Rectangle = new RectangleClass(); double actual = Rectangle.AreaCalculate(width, height); // assert Assert.AreEqual(expected, actual); }
private static void FinishSlope(Stack <PointStruct <int> > stack, int curHeight, int line, int i, ref int bestArea, RectangleClass <int> best) { while (stack.Count > 0 && stack.Peek().Y > curHeight) { var endedRectLu = stack.Pop(); var endedArea = (i - endedRectLu.X) * endedRectLu.Y; if (endedArea > bestArea) { best.LeftUp = new PointStruct <int>(endedRectLu.X, line - endedRectLu.Y + 1); best.RightDown = new PointStruct <int>(i - 1, line); bestArea = endedArea; Console.WriteLine(new { bestArea }); } } }
public void Rectangle_ParceParametersTest() { // arrange string[] parameters = new string[] { "\"type\":rectangle", "\"width\":10", "\"height\":20", }; double expectedPerimeter = 60; // act RectangleClass Rectangle = new RectangleClass(); Rectangle.ParceParameters(parameters); double actual = Rectangle.PerimeterGet(); // assert Assert.AreEqual(expectedPerimeter, actual); }
//********************************************************************************************** // РАЗБОР ДОКУМЕНТА //********************************************************************************************** /// <summary> /// Получение данных из документа. /// </summary> /// <param name="document"></param> void DataParcer(FlowDocument document) { List <FigureClass> Shapes = new List <FigureClass> { }; //Список фигур в документе. List <string> blocks = new List <string> { }; //Промежуточный список для хранения блоков с параметрами для каждой фигуры. List <DeltaShapesValueClass> deltaShapes = new List <DeltaShapesValueClass>(); //Список для расчета средних значений периметра и площади для каждого типа фигур. //0. Преобразуем документ в строку String input = new TextRange(document.ContentStart, document.ContentEnd).Text; input = Regex.Replace(input, @"[ \r\n\t]", ""); //Избавляемся от пробелов, переносов. input = input.ToLower(); //Переводим в нижний регистр //Патерн для разбиения строки на блоки. String pattern = @"\{([^\{\}]+)\}"; //где, \{ Совпадение с открывающей скобкой. // ([^\{\}]+) Совпадение с любым символом, который не является открывающей или закрывающей круглой скобкой один или несколько раз. // \} Совпадение с закрывающей скобкой //1. Извлечение блоков из строки на основе шаблона foreach (Match match in Regex.Matches(input, pattern)) { blocks.Add(match.Groups[1].Value); } //Количество элементов больше 0? if (blocks.Count == 0) { ClearAnswer(); return;//Пусто. Выход } //2. Извлечение данных из блоков foreach (var item in blocks) { string type = ""; //2.1. Существует ли параметр типа фигуры в строке if (item.IndexOf("type") == -1) //не существует { //Удаляем элемент из списка. blocks.Remove(item); continue; } //2.2. Разбиение блока на массив строк с параметрами. string[] parameters = item.Split(';', StringSplitOptions.RemoveEmptyEntries); //2.3. Определение типа фигуры foreach (var array_element in parameters) { //Ищем параметр type if (array_element.IndexOf("type") == -1) //не тот параметр { continue; //Далее } else//Нашли { type = GetType(array_element); //Проверяем, определен ли данный тип фигуры break; } } if (type == "")//Тип фигуры не определен { //Удаляем элемент из списка. blocks.Remove(item); continue; } //3. Получаем остальные параметры. Для каждого типа фигуры свой набор параметров. switch (type) { case FIGURE_CIRCLE: СircleClass circle = new СircleClass(); circle.ParceParameters(parameters); //Разбор параметров и рассчет значений площади и периметра. Shapes.Add(circle); //Добавляем элемент в список фигур DeltaShapes_AddTypeIfDoesnotExist(FIGURE_CIRCLE, deltaShapes); //Добавить тип фигуры в список используемых фигур. break; case FIGURE_RECTANGLE: RectangleClass rectangle = new RectangleClass(); rectangle.ParceParameters(parameters); Shapes.Add(rectangle); DeltaShapes_AddTypeIfDoesnotExist(FIGURE_RECTANGLE, deltaShapes); break; case FIGURE_SQUARE: SquareClass square = new SquareClass(); square.ParceParameters(parameters); Shapes.Add(square); DeltaShapes_AddTypeIfDoesnotExist(FIGURE_SQUARE, deltaShapes); break; case FIGURE_TRAPEZOID: TrapezoidClass trapezoid = new TrapezoidClass(); trapezoid.ParceParameters(parameters); Shapes.Add(trapezoid); DeltaShapes_AddTypeIfDoesnotExist(FIGURE_TRAPEZOID, deltaShapes); break; case FIGURE_TRIANGLE: TriangleClass triangle = new TriangleClass(); triangle.ParceParameters(parameters); Shapes.Add(triangle); DeltaShapes_AddTypeIfDoesnotExist(FIGURE_TRIANGLE, deltaShapes); break; } } //По заданию, неоходимо найти: //1. Средний периметр и площадь всех фигур //2. Фигура наибольшей площади //3. Тип фигуры с наибольшим значением среднего периметра среди всех других типов фигур. double deltaPerimeter = 0; //Средний периметр double deltaArea = 0; //Средняя площадь double maxArea = 0; //Значение площади string maxAreaTypeFigure = "Пусто"; //Тип фигуры double maxDeltaPerimeter = 0; //Наибольший средний периметр string maxDeltaPerimeterTypeFigure = "Пусто"; //Тип фигуры с наибольшим средним периметром //Находим. foreach (var figure in Shapes) { //Получаем значения периметра и площади для каждой фигуры deltaPerimeter += figure.PerimeterGet(); deltaArea += figure.AreaGet(); //Ищем фигуру наибольшей площади if (maxArea < figure.AreaGet()) { maxArea = figure.AreaGet(); maxAreaTypeFigure = figure.TypeGet(); } //Увеличить среднее значение площади и периметра для конкретного типа фигур DeltaShapes_AddTypeItem(figure.TypeGet(), figure.PerimeterGet(), figure.AreaGet(), deltaShapes); } //Расчет среднего значения периметра и площади всех фигур deltaPerimeter /= Shapes.Count; deltaArea /= Shapes.Count; //Расчет среднего значения периметра и площади для каждого типа фигур DeltaShapes_CalculateDelta(deltaShapes); //Ищем тип фигуры с наибольшим значением среднего периметра среди всех других типов фигур foreach (var item in deltaShapes) { if (maxDeltaPerimeter < item.Perimeter) { maxDeltaPerimeter = item.Perimeter; maxDeltaPerimeterTypeFigure = item.Type; } } //Отображаем ответ deltaPerimeterTextBlock.Text = String.Format("Cредний периметр: {0:f2}(м)", deltaPerimeter); deltaAreaTextBlock.Text = String.Format("Cредняя площадь: {0:f2} (кв.м)", deltaArea); maxAreaTypeFigureTextBlock.Text = String.Format("Фигура наибольшей площади: {0} ({1:f2}кв.м)", maxAreaTypeFigure, maxArea); maxDeltaPerimeterTypeFigureTextBlock.Text = String.Format("Тип фигуры с наибольшим средним периметром: {0} ({1:f2}м)", maxDeltaPerimeterTypeFigure, maxDeltaPerimeter); }
private void pictureBox_MouseUp(object sender, MouseEventArgs e) { if (isDrag == true) { isChanged = true; g = pictureBox1.CreateGraphics(); // 현재 위치 받아옴 currentPoint = new Point(e.X, e.Y); // 그리기 모양 지정 if (setShape.Equals("circle")) { width = System.Math.Abs(currentPoint.X - previousPoint.X); height = System.Math.Abs(currentPoint.Y - previousPoint.Y); // 드래그하는 위치에 따라 도형의 시작 위치를 바꿔줌. if (previousPoint.X > currentPoint.X && previousPoint.Y > currentPoint.Y) { previousPoint = currentPoint; } else if (previousPoint.Y > currentPoint.Y) { previousPoint.Y = currentPoint.Y; } else if (previousPoint.X > currentPoint.X) { previousPoint.X = currentPoint.X; } // 원형 객체 생성 RectangleClass myCircle = new RectangleClass(previousPoint, currentPoint, width, height); myCircle.setPen(currentPen); shapes_cir.AddLast(myCircle); draw_circle(g, currentPen, previousPoint, currentPoint); } if (setShape.Equals("rectangle")) { width = System.Math.Abs(currentPoint.X - previousPoint.X); height = System.Math.Abs(currentPoint.Y - previousPoint.Y); // 드래그하는 위치에 따라 도형의 시작 위치를 바꿔줌. if (previousPoint.X > currentPoint.X && previousPoint.Y > currentPoint.Y) { previousPoint = currentPoint; } else if (previousPoint.Y > currentPoint.Y) { previousPoint.Y = currentPoint.Y; } else if (previousPoint.X > currentPoint.X) { previousPoint.X = currentPoint.X; } // 사각형 객체 생성 RectangleClass myRectangle = new RectangleClass(previousPoint, currentPoint, height, width); myRectangle.setPen(currentPen); shapes_rec.AddLast(myRectangle); draw_rectangle(g, currentPen, previousPoint, currentPoint); } if (setShape.Equals("line")) { // 선 객체 생성 LineClass myLine = new LineClass(previousPoint, currentPoint); myLine.setPen(currentPen); shapes_line.AddLast(myLine); draw_line(g, currentPen, previousPoint, currentPoint); } } isDrag = false; }
private static void FindAboveLine(char[,] rect, int[] heights, int line, char target, RectangleClass <int> best) { var stack = new Stack <PointStruct <int> >(); var bestArea = (best.RightDown.X - best.LeftUp.X + 1) * (best.RightDown.Y - best.LeftUp.Y + 1); Console.WriteLine(new { line, target, bestArea }); for (var i = 0; i < rect.GetLength(1); i++) { var curHeight = rect[line, i] == target ? heights[i] : 0; if (stack.Count == 0) { if (curHeight > 0) { stack.Push(new PointStruct <int>(i, curHeight)); } } else { FinishSlope(stack, curHeight, line, i, ref bestArea, best); if (stack.Count == 0 || curHeight > stack.Peek().Y) { stack.Push(new PointStruct <int>(i, curHeight)); } } } FinishSlope(stack, 0, line, rect.GetLength(1), ref bestArea, best); }