예제 #1
0
        public void GetFrameFromGroupWithShapesAfterRemovingShapeFromGroupWithOneShape()
        {
            var rectangleFrame           = new Rect(0, 200, 0, 150);
            var ellipseFrame             = new Rect(250, 100, -100, 100);
            var triangleFrame            = new Rect(-100, 100, 50, 100);
            var resultFrame              = new Rect(-100, 450, -100, 250);
            var resultFrameAfterRemoving = new Rect(0, 350, -100, 250);

            var rectangle = new Rectangle(rectangleFrame, null, null);
            var ellipse   = new Elipse(ellipseFrame, null, null);
            var triangle  = new Triangle(triangleFrame);

            var group         = new GroupShape();
            var triangleGroup = new GroupShape();

            group.InsertShape(rectangle, 0);
            group.InsertShape(ellipse, 0);
            group.InsertShape(triangleGroup, 0);
            triangleGroup.InsertShape(triangle, 0);

            Assert.IsTrue(IsEqualFrame(resultFrame, group.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(triangleFrame, triangle.GetFrame().Value));

            triangleGroup.RemoveShapeAtIndex(0);

            Assert.IsTrue(IsEqualFrame(resultFrameAfterRemoving, group.GetFrame().Value));
            Assert.IsNull(triangleGroup.GetFrame());
        }
예제 #2
0
        public void SetFrameToGroupWithoutShapes()
        {
            var group = new GroupShape();
            var frame = new Rect(-100, 450, -100, 250);

            group.SetFrame(frame);

            Assert.AreEqual(null, group.GetFrame());
        }
예제 #3
0
        public void GetFrameFromGroupWithOneShape()
        {
            var rectangleFrame = new Rect(200, 200, 200, 150);
            var rectangle      = new Rectangle(rectangleFrame, null, null);
            var group          = new GroupShape();

            group.InsertShape(rectangle, 0);

            Assert.IsTrue(IsEqualFrame(rectangleFrame, group.GetFrame().Value));
        }
예제 #4
0
        public void GetFrameFromGroupWithEmptyGroups()
        {
            var group         = new GroupShape();
            var emptyGroupOne = new GroupShape();
            var emptyGroupTwo = new GroupShape();

            group.InsertShape(emptyGroupOne, 0);
            group.InsertShape(emptyGroupTwo, 0);

            Assert.IsNull(group.GetFrame());
        }
예제 #5
0
        public void GetFrame_EmptyGroupShape_ReturnNull()
        {
            // Arrange
            var groupShape = new GroupShape();

            // Act
            Rect?result = groupShape.GetFrame();

            // Assert
            Assert.Null(result);
        }
예제 #6
0
        public void SetFrameToGroupWithEmptyGroups()
        {
            var group         = new GroupShape();
            var emptyGroupOne = new GroupShape();
            var emptyGroupTwo = new GroupShape();

            group.InsertShape(emptyGroupOne, 0);
            group.InsertShape(emptyGroupTwo, 0);
            group.SetFrame(new Rect(10, 10, 10, 10));

            Assert.IsNull(group.GetFrame());
        }
예제 #7
0
        public void SetFrameToGroupWithShapesAndEmptyGroup()
        {
            var rectangleFrame = new Rect(0, 200, 0, 150);
            var ellipseFrame   = new Rect(250, 100, -100, 100);
            var resultFrame    = new Rect(0, 350, -100, 250);

            var rectangle = new Rectangle(rectangleFrame, null, null);
            var ellipse   = new Elipse(ellipseFrame, null, null);

            var group      = new GroupShape();
            var emptyGroup = new GroupShape();

            group.InsertShape(rectangle, 0);
            group.InsertShape(ellipse, 0);
            group.InsertShape(emptyGroup, 0);

            Assert.IsTrue(IsEqualFrame(resultFrame, group.GetFrame().Value));

            group.SetFrame(new Rect(0, 700, 0, 125));

            Assert.IsTrue(IsEqualFrame(new Rect(0, 700, 0, 125), group.GetFrame().Value));
        }
예제 #8
0
        public void GetFrameFromGroupWithShapesAfterAddingEmptyGroup()
        {
            var rectangleFrame = new Rect(0, 200, 0, 150);
            var ellipseFrame   = new Rect(250, 100, -100, 100);
            var resultFrame    = new Rect(0, 350, -100, 250);

            var rectangle = new Rectangle(rectangleFrame, null, null);
            var ellipse   = new Elipse(ellipseFrame, null, null);

            var group      = new GroupShape();
            var emptyGroup = new GroupShape();

            group.InsertShape(rectangle, 0);
            group.InsertShape(ellipse, 0);

            Assert.IsTrue(IsEqualFrame(resultFrame, group.GetFrame().Value));

            group.InsertShape(emptyGroup, 0);

            Assert.IsTrue(IsEqualFrame(resultFrame, group.GetFrame().Value));
            Assert.IsNull(emptyGroup.GetFrame());
        }
예제 #9
0
        static void Main(string [] args)
        {
            var canvas = new Canvas.SkiaCanvas(1000, 1000);

            var slide = new Slide(1000, 1000);

            var sunFillStyle            = new Style.Style(Color.Yellow, true);
            var sunOutLineStyle         = new OutLineStyle(Color.Orange, true, 5);
            var firstFloorFillStyle     = new Style.Style(Color.Brown, true);
            var firstFloorOutLineStyle  = new OutLineStyle(Color.Red, true, 5);
            var secondFloorFillStyle    = new Style.Style(Color.Green, true);
            var secondFloorOutLineStyle = new OutLineStyle(Color.GreenYellow, true, 5);

            var roofFrame = new Rect(200, 200, 95, 100);
            var roof      = new Triangle(roofFrame, secondFloorFillStyle, secondFloorOutLineStyle);

            var porchFrame        = new Rect(100, 100, 250, 100);
            var porch             = new Rectangle(porchFrame, firstFloorFillStyle, firstFloorOutLineStyle);
            var rectangleFrameTwo = new Rect(200, 200, 200, 150);
            var rectangleTwo      = new Rectangle(rectangleFrameTwo, firstFloorFillStyle, firstFloorOutLineStyle);

            var ellipseFrame = new Rect(450, 100, 100, 100);
            var ellipse      = new Elipse(ellipseFrame, sunFillStyle, sunOutLineStyle);

            var home    = new GroupShape();
            var sky     = new GroupShape();
            var picture = new GroupShape();

            slide.SetBackgroundColor(Color.Black.ToArgb());
            home.InsertShape(porch, 0);
            home.InsertShape(rectangleTwo, 0);
            home.InsertShape(roof, 0);
            sky.InsertShape(ellipse, 0);
            picture.InsertShape(home, 0);
            picture.InsertShape(sky, 0);
            slide.GetShapes().InsertShape(picture, 0);
            slide.Draw(canvas);
            PrintFrame(picture.GetFrame().Value);
            canvas.Save("E:\\учёба\\test1.png");

            var newGroupFrame = new Rect(0, 900, 0, 510);

            picture.SetFrame(newGroupFrame);
            var pictureStyle = picture.GetFillStyle();

            pictureStyle.SetColor(Color.Azure);
            slide.Draw(canvas);
            PrintFrame(ellipse.GetFrame().Value);
            canvas.Save("E:\\учёба\\test2.png");
        }
예제 #10
0
        public void GetFrame_GroupShapeHasOnePhigure_ReturnThisPhigureFrame()
        {
            // Arrange
            var groupShape = new GroupShape();
            var shape      = new Rectangle(new Rect(1, 1, 1, 1));

            groupShape.InsertShape(shape, 0);

            // Act
            Rect?result = groupShape.GetFrame();

            // Assert
            Assert.Equal(shape.GetFrame(), result);
        }
예제 #11
0
        public void SetNewFrameWithDoubleBiggerWidthAndHeightToGroupWithShapes()
        {
            var rectangleFrame = new Rect(200, 200, 200, 150);
            var ellipseFrame   = new Rect(450, 100, 100, 100);
            var triangleFrame  = new Rect(100, 100, 250, 100);
            var groupFrame     = new Rect(100, 450, 100, 250);

            var newRectangleFrame = new Rect(300, 400, 300, 300);
            var newEllipseFrame   = new Rect(800, 200, 100, 200);
            var newTriangleFrame  = new Rect(100, 200, 400, 200);
            var newGroupFrame     = new Rect(100, 900, 100, 500);

            var rectangle = new Rectangle(rectangleFrame, null, null);
            var ellipse   = new Elipse(ellipseFrame, null, null);
            var triangle  = new Triangle(triangleFrame, null, null);

            var group         = new GroupShape();
            var triangleGroup = new GroupShape();

            triangleGroup.InsertShape(triangle, 0);
            group.InsertShape(rectangle, 0);
            group.InsertShape(ellipse, 0);
            group.InsertShape(triangleGroup, 0);

            Assert.IsTrue(IsEqualFrame(rectangleFrame, rectangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(triangleFrame, triangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(ellipseFrame, ellipse.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(groupFrame, group.GetFrame().Value));

            group.SetFrame(newGroupFrame);

            Assert.IsTrue(IsEqualFrame(newRectangleFrame, rectangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(newTriangleFrame, triangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(newEllipseFrame, ellipse.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(newGroupFrame, group.GetFrame().Value));
        }
예제 #12
0
        public void SetFrameWithDoubleSmallerWidthAndHeightAndNegativeLeftTopToGroupWithShapes()
        {
            var rectangleFrame = new Rect(200, 200, 200, 150);
            var ellipseFrame   = new Rect(450, 100, 100, 100);
            var triangleFrame  = new Rect(100, 100, 250, 100);
            var groupFrame     = new Rect(100, 450, 100, 250);

            var newRectangleFrame = new Rect(-50, 100, -50, 75);
            var newEllipseFrame   = new Rect(75, 50, -100, 50);
            var newTriangleFrame  = new Rect(-100, 50, -25, 50);
            var newGroupFrame     = new Rect(-100, 225, -100, 125);

            var rectangle = new Rectangle(rectangleFrame, null, null);
            var ellipse   = new Elipse(ellipseFrame, null, null);
            var triangle  = new Triangle(triangleFrame, null, null);

            var group         = new GroupShape();
            var triangleGroup = new GroupShape();

            triangleGroup.InsertShape(triangle, 0);
            group.InsertShape(rectangle, 0);
            group.InsertShape(ellipse, 0);
            group.InsertShape(triangleGroup, 0);

            Assert.IsTrue(IsEqualFrame(rectangleFrame, rectangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(triangleFrame, triangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(ellipseFrame, ellipse.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(groupFrame, group.GetFrame().Value));

            group.SetFrame(newGroupFrame);

            Assert.IsTrue(IsEqualFrame(newRectangleFrame, rectangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(newTriangleFrame, triangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(newEllipseFrame, ellipse.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(newGroupFrame, group.GetFrame().Value));
        }
예제 #13
0
        public void SetFrame_SetToSimpleShape_GetSettedFrame()
        {
            // Arrange
            var groupShape = new GroupShape();
            var rectangle  = new Rectangle(new Rect(left: 0, top: 1, width: 2, height: 1));

            groupShape.InsertShape(rectangle, 0);
            var expectedFrame = new Rect(3, 3, 3, 3);

            // Act
            groupShape.SetFrame(expectedFrame);
            Rect?result = groupShape.GetFrame();

            // Assert
            Assert.True(result.HasValue);
            Assert.Equal(expectedFrame, result);
        }
예제 #14
0
        public void GetFrame_GroupShapeHasTwoPhigure_ReturnCombinedFrame()
        {
            // Arrange
            var groupShape = new GroupShape();
            var rectangle  = new Rectangle(new Rect(left: 0, top: 1, width: 2, height: 1));
            var ellipse    = new Rectangle(new Rect(left: 1, top: 2, width: 1.5f, height: 1));

            groupShape.InsertShape(rectangle, 0);
            groupShape.InsertShape(ellipse, 1);
            var expectedFrame = new Rect(0, 2, 2.5f, 2);

            // Act
            Rect?result = groupShape.GetFrame();

            // Assert
            Assert.Equal(expectedFrame, result);
        }
예제 #15
0
        public void GetFrameFromGroupWithShapesWithNegativeLeftTop()
        {
            var rectangleFrame = new Rect(0, 200, 0, 150);
            var ellipseFrame   = new Rect(250, 100, -100, 100);
            var triangleFrame  = new Rect(-100, 100, 50, 100);
            var resultFrame    = new Rect(-100, 450, -100, 250);

            var rectangle = new Rectangle(rectangleFrame, null, null);
            var ellipse   = new Elipse(ellipseFrame, null, null);
            var triangle  = new Triangle(triangleFrame, null, null);

            var group         = new GroupShape();
            var triangleGroup = new GroupShape();

            triangleGroup.InsertShape(triangle, 0);
            group.InsertShape(rectangle, 0);
            group.InsertShape(ellipse, 0);
            group.InsertShape(triangleGroup, 0);

            Assert.IsTrue(IsEqualFrame(resultFrame, group.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(triangleFrame, triangleGroup.GetFrame().Value));
        }
예제 #16
0
        public void GetFrame_GroupShapeHasAnotherGroupShape_ReturnCombinedFrame()
        {
            // Arrange
            var groupShapeOne = new GroupShape();
            var rectangle     = new Rectangle(new Rect(left: 0, top: 1, width: 2, height: 1));
            var ellipse       = new Rectangle(new Rect(left: 1, top: 2, width: 1.5f, height: 1));

            groupShapeOne.InsertShape(rectangle, 0);
            groupShapeOne.InsertShape(ellipse, 1);
            var groupShapeTwo = new GroupShape();

            groupShapeTwo.InsertShape(groupShapeOne, 0);
            groupShapeTwo.InsertShape(rectangle, 1);

            var expectedFrame = new Rect(0, 2, 2.5f, 2);

            // Act
            Rect?result = groupShapeTwo.GetFrame();

            // Assert
            Assert.True(result.HasValue);
            Assert.Equal(expectedFrame, result);
        }
예제 #17
0
        public void GetFrameFromGroupWithoutShapes()
        {
            var group = new GroupShape();

            Assert.AreEqual(null, group.GetFrame());
        }