Unit Test Sample

using Geometry.Entities;
using System.Collections.Generic;
using Xunit;

namespace Geometry.Tests
{
    public class Point2DTest
    {
        [Fact]
        public void Ctor_Empty()
        {
            var actualPoint = new Point2D();
            var expectedPoint = new Point2D(0, 0);
            Assert.Equal(expectedPoint, actualPoint);
        }

        [Theory]
        [MemberData(nameof(TestDataPoint2D.Move), MemberType = typeof(TestDataPoint2D))]
        public void Move(double radius, double angle, Point2D expectedPoint)
        {
            var point = new Point2D();
            point.Move(radius, new Unit.Angle(angle, Unit.AngleType.Degrees));
            Assert.Equal(expectedPoint, point);
        }

        [Theory]
        [MemberData(nameof(TestDataPoint2D.Distance), MemberType = typeof(TestDataPoint2D))]
        public void Distance(Point2D point1, Point2D point2, double expected)
        {
            var actual = point1.DistanceFrom(point2);
            Assert.Equal(expected, actual, 4);
        }
    }

    public static class TestDataPoint2D
    {
        public static IEnumerable<object[]> Move()
        {
            yield return new object[] { 10, 0, new Point2D(10, 0) };
            yield return new object[] { 5, 90, new Point2D(0, 5) };
            yield return new object[] { 1, -90, new Point2D(0, -1) };
            yield return new object[] { 0, 90, new Point2D(0, 0) };
        }

        public static IEnumerable<object[]> Distance()
        {
            yield return new object[] { new Point2D(0, 0), new Point2D(10, 0), 10 };
            yield return new object[] { new Point2D(0, 0), new Point2D(10, 10), 14.1421 };
            yield return new object[] { new Point2D(1, 2), new Point2D(3, 4), 2.8284 };
        }
    }
}