Пример #1
0
        public static TriangleTypes GetTriangleType(double aSideSize,
                                                    double bSideSize,
                                                    double cSideSize)
        {
            TriangleTypes determinedTriangleType = TriangleTypes.Invalid;

            // Is valid sides for any type of triangle
            if (((aSideSize + bSideSize) <= cSideSize) ||
                ((cSideSize + bSideSize) <= aSideSize) ||
                ((aSideSize + cSideSize) <= bSideSize))
            {
                determinedTriangleType = TriangleTypes.Invalid;
            }
            else if ((aSideSize == bSideSize) &&
                     (bSideSize == cSideSize))                 // Test for equilateral triangle type: all sides are equal
            {
                determinedTriangleType = TriangleTypes.Equilateral;
            }
            else if ((aSideSize == bSideSize) || (bSideSize == cSideSize) ||
                     (aSideSize == cSideSize))                 // Any 2 sides should be equal
            {
                determinedTriangleType = TriangleTypes.Isosceles;
            }
            else                 // All 3 sides are different
            {
                determinedTriangleType = TriangleTypes.Scalene;
            }

            return(determinedTriangleType);
        }
Пример #2
0
        public void TestCalculate()
        {
            var service = new TriangleTypes();

            Assert.Equal("Equilateral", service.Calculate(3, 3, 3));
            Assert.Equal("Isosceles", service.Calculate(3, 4, 4));
            Assert.Equal("Scalene", service.Calculate(3, 4, 5));
        }
Пример #3
0
        public void TestCalculate_Negative()
        {
            var service = new TriangleTypes();

            Assert.Equal("Error", service.Calculate(-3, 3, 3));
            Assert.Equal("Error", service.Calculate(3, -4, 4));
            Assert.Equal("Error", service.Calculate(3, 4, -5));
        }
Пример #4
0
        private void InitTriangleData(double a, double b, double c)
        {
            A = a;
            B = b;
            C = c;

            TriangleType = (SortSides(ref _a, ref _b, ref _c)) ? GetTriangleTypes(A, B, C) : TriangleTypes.NonValid;
        }
Пример #5
0
        /// <summary>
        /// Method to get a display-friendly name for <see cref="TriangleTypes"/>
        /// </summary>
        public static string ToFriendlyString(this TriangleTypes type)
        {
            switch (type)
            {
            case TriangleTypes.NotTriangle:
                return(TriangleNames.NotTriangle);

            default:
                return(type.ToString());
            }
        }
Пример #6
0
        public void TestNotEqualTriangleType(long a, long b, long c, TriangleTypes expectedTrinagleTypes)
        {
            //Arrange
            var trinagleType = new TrinagleType();

            //Act
            var asctualTrinagleTypes = trinagleType.GetTriangleType(a, b, c);

            //Assert
            Assert.Equal(expectedTrinagleTypes, asctualTrinagleTypes);
        }
Пример #7
0
        public void ValidTestCase()
        {
            TriangleTypes triangleType = TrianglesManager.GetTriangleType(1.5, 2.0, 1.4);

            Assert.AreEqual(TriangleTypes.Scalene, triangleType);

            triangleType = TrianglesManager.GetTriangleType(5, 5, 4);

            Assert.AreEqual(TriangleTypes.Isosceles, triangleType);

            triangleType = TrianglesManager.GetTriangleType(3, 3, 4);

            Assert.AreEqual(TriangleTypes.Isosceles, triangleType);

            triangleType = TrianglesManager.GetTriangleType(5, 5, 5);

            Assert.AreEqual(TriangleTypes.Equilateral, triangleType);
        }
Пример #8
0
        /// <summary>
        /// Classifies a triangle as either Equilateral, Isosceles, Scalene, or Not a Triangle
        /// </summary>
        /// <param name="triangle"></param>
        /// <returns><see cref="TriangleTypes"/></returns>
        public static TriangleTypes Classify(Triangle triangle)
        {
            //NOTE(greg): initializing to scalene
            //  if this is a triangle, is not an equilateral, and not isosceles,
            //  this triangle must be scalene
            TriangleTypes type = TriangleTypes.Scalene;

            if (IsNotTriangle(triangle))
            {
                type = TriangleTypes.NotTriangle;
            }
            else if (AllSidesAreEqual(triangle))
            {
                type = TriangleTypes.Equilateral;
            }
            else if (TwoSidesAreEqual(triangle))
            {
                type = TriangleTypes.Isosceles;
            }

            return(type);
        }
Пример #9
0
        public void InvalidTestCase()
        {
            TriangleTypes triangleType = TrianglesManager.GetTriangleType(0, 1, 1);

            Assert.AreEqual(TriangleTypes.Invalid, triangleType);

            triangleType = TrianglesManager.GetTriangleType(1, 0, 1);

            Assert.AreEqual(TriangleTypes.Invalid, triangleType);

            triangleType = TrianglesManager.GetTriangleType(1, 1, 0);

            Assert.AreEqual(TriangleTypes.Invalid, triangleType);

            triangleType = TrianglesManager.GetTriangleType(100, 1, 1);

            Assert.AreEqual(TriangleTypes.Invalid, triangleType);

            triangleType = TrianglesManager.GetTriangleType(-1, 1, 1);

            Assert.AreEqual(TriangleTypes.Invalid, triangleType);
        }
Пример #10
0
        public ActionResult <string> GetTriangleType([FromQuery(Name = "a")] int a, [FromQuery(Name = "b")] int b, [FromQuery(Name = "c")] int c)
        {
            var service = new TriangleTypes();

            return(service.Calculate(a, b, c));
        }
Пример #11
0
        public void Triangles(int a, int b, int c, string expected)
        {
            string result = TriangleTypes.Triangles(a, b, c);

            Assert.AreEqual(expected, result);
        }
Пример #12
0
 private void calculateClassification()
 {
     _type = TriangleClassifier.Classify(this);
 }