public TriangleType GetTriangleType(TriangleTypeRequest request)
        {
            var sides = new [] { request.A, request.B, request.C };

            sides = sides.OrderByDescending(c => c).ToArray();

            if (sides[2] <= 0 || sides[0] >= sides[1] + sides[2])
            {
                throw new InvalidTriangleException();
            }

            if (sides[0] == sides[1] && sides[0] == sides[2])
            {
                return(TriangleType.Equilateral);
            }

            if (sides[0] * sides[0] == sides[1] * sides[1] + sides[2] * sides[2])
            {
                // note: impossible to get isosceles right triangle with integer side length
                return(sides[1] == sides[2] ? TriangleType.IsoscelesRight : TriangleType.Right);
            }

            if (sides[1] == sides[2])
            {
                return(TriangleType.Isosceles);
            }

            return(TriangleType.Scalene);
        }
Example #2
0
        private dynamic GetTriangleType()
        {
            TriangleTypeRequest request = null;

            try
            {
                request = this.Bind <TriangleTypeRequest>();
            }
            catch (ModelBindingException)
            {
                return(new TextResponse("Error"));
            }

            TriangleType result;

            try
            {
                result = _triangleTypeService.GetTriangleType(request);
            }
            catch (InvalidTriangleException)
            {
                return(new TextResponse("Error"));
            }

            return(new TextResponse(result.ToString("G")));
        }
        public void TestInvalidValue(int a, int b, int c)
        {
            var request = new TriangleTypeRequest {
                A = a, B = b, C = c
            };

            Assert.Throws <InvalidTriangleException>(() => _subject.GetTriangleType(request));
        }
        public TriangleType TestService(int a, int b, int c)
        {
            var request = new TriangleTypeRequest {
                A = a, B = b, C = c
            };

            return(_subject.GetTriangleType(request));
        }