Files
shape_library/Shapes/Validator.cs
2019-10-20 21:42:51 -06:00

44 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Globalization;
namespace Shapes
{
public class Validator
{
public static void ValidateDouble(double value, string errorMessage)
{
if (double.IsInfinity(value) || double.IsNaN(value))
throw new ShapeException(errorMessage);
}
public static void ValidatePositiveDouble(double value, String errorMessage)
{
ValidateDouble(value, errorMessage);
if (value < 0)
throw new ShapeException(errorMessage);
}
public static void ValidateRectangle(Point point1, Point point2, Point point3, Point point4, String errorMessage)
{
var TOLERANCE = Double.Epsilon + Double.Epsilon;
var plumLine1 = new Line(point1, point3);
var plumLine2 = new Line(point2, point4);
var heightLine1 = new Line(point1, point4);
var heightLine2 = new Line( point2, point3);
var lengthLine1 = new Line(point1, point2);
var lengthLine2 = new Line(point4, point3);
if (Math.Abs(plumLine1.ComputeLength() - plumLine2.ComputeLength()) > TOLERANCE
|| Math.Abs(heightLine1.ComputeLength() - heightLine2.ComputeLength()) > TOLERANCE
|| Math.Abs(lengthLine1.ComputeLength() - lengthLine2.ComputeLength()) > TOLERANCE )
{
throw new ShapeException(errorMessage);
}
}
}
}