static OuterBorderTest()
        {
            ConstructorArgumentValidationTestScenarios
            .RemoveAllScenarios()
            .AddScenario(() =>
                         new ConstructorArgumentValidationTestScenario <OuterBorder>
            {
                Name             = "constructor should throw ArgumentOutOfRangeException when parameter 'weight' is BorderWeight.Unknown",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <OuterBorder>();

                    var result = new OuterBorder(BorderWeight.Unknown, referenceObject.Style, referenceObject.Color, referenceObject.Sides);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentOutOfRangeException),
                ExpectedExceptionMessageContains = new[] { "weight", "Unknown", },
            })
            .AddScenario(() =>
                         new ConstructorArgumentValidationTestScenario <OuterBorder>
            {
                Name             = "constructor should throw ArgumentOutOfRangeException when parameter 'style' is BorderStyle.Unknown",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <OuterBorder>();

                    var result = new OuterBorder(referenceObject.Weight, BorderStyle.Unknown, referenceObject.Color, referenceObject.Sides);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentOutOfRangeException),
                ExpectedExceptionMessageContains = new[] { "style", "Unknown", },
            })
            .AddScenario(() =>
                         new ConstructorArgumentValidationTestScenario <OuterBorder>
            {
                Name             = "constructor should throw ArgumentOutOfRangeException when parameter 'sides' is OuterBorderSides.None",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <OuterBorder>();

                    var result = new OuterBorder(referenceObject.Weight, referenceObject.Style, referenceObject.Color, OuterBorderSides.None);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentOutOfRangeException),
                ExpectedExceptionMessageContains = new[] { "sides", "None", },
            });
        }
        private void SetItemsPos()
        {
            double sz;
            double x;
            double y;
            double isz;
            double ix;
            double iy;

            CalcCoos(out x, out y, out sz, out ix, out iy, out isz);

            OuterBorder.SetValue(Canvas.LeftProperty, x);
            OuterBorder.SetValue(Canvas.TopProperty, y);
            OuterBorder.Width  = sz;
            OuterBorder.Height = sz;

            InnerBorder.SetValue(Canvas.LeftProperty, ix);
            InnerBorder.SetValue(Canvas.TopProperty, iy);
            InnerBorder.Width  = isz;
            InnerBorder.Height = isz;

            if (Brush != null)
            {
                StartPoint.SetValue(Canvas.LeftProperty, ix + Brush.StartPoint.X * isz - StartPoint.Width / 2.0);
                StartPoint.SetValue(Canvas.TopProperty, iy + Brush.StartPoint.Y * isz - StartPoint.Height / 2.0);

                EndPoint.SetValue(Canvas.LeftProperty, ix + Brush.EndPoint.X * isz - EndPoint.Width / 2.0);
                EndPoint.SetValue(Canvas.TopProperty, iy + Brush.EndPoint.Y * isz - EndPoint.Height / 2.0);

                StartEndLine.X1 = ix + Brush.StartPoint.X * isz;
                StartEndLine.Y1 = iy + Brush.StartPoint.Y * isz;
                StartEndLine.X2 = ix + Brush.EndPoint.X * isz;
                StartEndLine.Y2 = iy + Brush.EndPoint.Y * isz;

                StartPoint.Visibility   = Visibility.Visible;
                EndPoint.Visibility     = Visibility.Visible;
                StartEndLine.Visibility = Visibility.Visible;
            }
            else
            {
                StartPoint.Visibility   = Visibility.Collapsed;
                EndPoint.Visibility     = Visibility.Collapsed;
                StartEndLine.Visibility = Visibility.Collapsed;
            }
        }
        private void SetItemsPos()
        {
            double sz;
            double x;
            double y;
            double isz;
            double ix;
            double iy;

            CalcCoos(out x, out y, out sz, out ix, out iy, out isz);

            OuterBorder.SetValue(Canvas.LeftProperty, x);
            OuterBorder.SetValue(Canvas.TopProperty, y);
            OuterBorder.Width  = sz;
            OuterBorder.Height = sz;

            InnerBorder.SetValue(Canvas.LeftProperty, ix);
            InnerBorder.SetValue(Canvas.TopProperty, iy);
            InnerBorder.Width  = isz;
            InnerBorder.Height = isz;

            if (Brush != null)
            {
                CenterPoint.SetValue(Canvas.LeftProperty, ix + Brush.Center.X * isz - CenterPoint.Width / 2.0);
                CenterPoint.SetValue(Canvas.TopProperty, iy + Brush.Center.Y * isz - CenterPoint.Height / 2.0);

                RadiusXPoint.SetValue(Canvas.LeftProperty, ix + (Brush.Center.X + Brush.RadiusX) * isz - RadiusXPoint.Width / 2.0);
                RadiusXPoint.SetValue(Canvas.TopProperty, iy + Brush.Center.Y * isz - RadiusXPoint.Height / 2.0);

                RadiusYPoint.SetValue(Canvas.LeftProperty, ix + Brush.Center.X * isz - RadiusYPoint.Width / 2.0);
                RadiusYPoint.SetValue(Canvas.TopProperty, iy + (Brush.Center.Y + Brush.RadiusY) * isz - RadiusYPoint.Height / 2.0);

                OriginXLine.SetValue(Canvas.LeftProperty, ix + Brush.GradientOrigin.X * isz - OriginXLine.Width / 2.0);
                OriginYLine.SetValue(Canvas.TopProperty, iy + Brush.GradientOrigin.Y * isz - OriginYLine.Height / 2.0);

                OriginXY.SetValue(Canvas.LeftProperty, ix + Brush.GradientOrigin.X * isz - OriginXY.Width / 2.0);
                OriginXY.SetValue(Canvas.TopProperty, iy + Brush.GradientOrigin.Y * isz - OriginXY.Height / 2.0);

                RadialEllipse.SetValue(Canvas.LeftProperty, ix + (Brush.Center.X - Brush.RadiusX) * isz);
                RadialEllipse.SetValue(Canvas.TopProperty, iy + (Brush.Center.Y - Brush.RadiusY) * isz);
                RadialEllipse.Width  = 2.0 * Brush.RadiusX * isz;
                RadialEllipse.Height = 2.0 * Brush.RadiusY * isz;

                CenterPoint.Visibility   = Visibility.Visible;
                RadiusXPoint.Visibility  = Visibility.Visible;
                RadiusYPoint.Visibility  = Visibility.Visible;
                OriginXLine.Visibility   = Visibility.Visible;
                OriginYLine.Visibility   = Visibility.Visible;
                OriginXY.Visibility      = Visibility.Visible;
                RadialEllipse.Visibility = Visibility.Visible;
            }
            else
            {
                CenterPoint.Visibility   = Visibility.Collapsed;
                RadiusXPoint.Visibility  = Visibility.Collapsed;
                RadiusYPoint.Visibility  = Visibility.Collapsed;
                OriginXLine.Visibility   = Visibility.Collapsed;
                OriginYLine.Visibility   = Visibility.Collapsed;
                OriginXY.Visibility      = Visibility.Collapsed;
                RadialEllipse.Visibility = Visibility.Collapsed;
            }
        }