コード例 #1
0
ファイル: TriangleTests.cs プロジェクト: fxMem/figures
        private TestTriangleData GetSquareTriangle(IComputeAreaMethod method)
        {
            var a = 10d;
            var b = 10d;
            var c = Math.Sqrt(a * a + b * b);

            return(new TestTriangleData
            {
                Triangle = new Triangle(a, b, c, method),
                AreaValue = (a * b) / 2
            });
        }
コード例 #2
0
ファイル: Triangle.cs プロジェクト: fxMem/figures
        // I'm not considering different types of defining triangle here (like, by side and 2 angles, etc)
        public Triangle(double a, double b, double c, IComputeAreaMethod computeAreaMethod)
        {
            _a = a;
            _b = b;
            _c = c;

            // For simplicity, there is no means to change method afterwards
            if (computeAreaMethod == null)
            {
                throw new ArgumentNullException("computeAreaMethod");
            }

            if (_a < 0 || _b < 0 || _c < 0)
            {
                throw new ArgumentOutOfRangeException("Triangle sides cannot be lesser than 0");
            }

            if (!TriangleExists())
            {
                throw new ArgumentException($"Triangle with sides {a}, {b}, {c} cannot exist");
            }

            _computeAreaMethod = computeAreaMethod;
        }