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); }
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)); }