Пример #1
0
        public void ReturnsACorrectChild_WhenATriangleWithCorrectPathIsPresent()
        {
            var triangle = new Triangle(TriangleNodeData.triangleNodesCorrect);

            var child = TriangleHelper.ChooseSuitableChild(triangle, 0, 0);

            Assert.That(child.NodeValue, Is.EqualTo(8));
        }
        public void CalculateTheArea_returnNewNumber_Test()
        {
            const double expected = 0.968246;

            var actual = TriangleHelper.CalculateArea(_triangle);

            Assert.AreEqual(expected, Math.Round(actual, 6));
        }
Пример #3
0
        public void ReturnsAGreaterValueChild_WhenATriangleWithTwoCorrectChildrenIsPresent()
        {
            var triangle = new Triangle(TriangleNodeData.triangleNodesTwoConcurrentChildren);

            var child = TriangleHelper.ChooseSuitableChild(triangle, 0, 0);

            Assert.That(child.NodeValue, Is.EqualTo(12));
        }
        public void CalculateThePerimeter_returnNewNumber_Test()
        {
            const int expected = 5;

            var actual = TriangleHelper.CalculatePerimeter(_triangle);

            Assert.AreEqual(expected, actual);
        }
Пример #5
0
        public void AnySideLongerthanSumOfOtherSidesTriangleReturnsFalse(int a, int b, int c)
        {
            //arange
            var triangleHelper = new TriangleHelper();
            var result         = triangleHelper.IsTriangle(a, b, c);

            Assert.False(result, "Triangle with any side longer than the sum of the other two  sides should be false");
        }
Пример #6
0
        public void ReturnsNull_WhenATriangleWithoutACorrectPathIsPresent()
        {
            var triangle = new Triangle(TriangleNodeData.triangleNodesNoPath);

            var child = TriangleHelper.ChooseSuitableChild(triangle, 0, 0);

            Assert.That(child, Is.Null);
        }
Пример #7
0
        internal List <SlicePoint2D> GetModelPointsWithParentLine(List <SliceLine2D> polylines, int pixelY, bool bleeding)
        {
            var intersecting = GetIntersecting2dYLines(pixelY, polylines);
            var points       = TriangleHelper.GetIntersectingPoints(pixelY, intersecting);

            points.Sort();

            return(points);
        }
        public void GetTriangle_GivenCoordinates_ReturnsTriangles(ICollection <Coordinate> coordinates, int row, int column)
        {
            // Act
            var result = TriangleHelper.GetTriangle(coordinates);

            // Assert
            Assert.Equal(row, result.Row);
            Assert.Equal(column, result.Column);
        }
Пример #9
0
        public void CalculateAngleFromTriangleSides_CalculatesSuccessfully()
        {
            double aLength = 5;
            double bLength = 9;
            double cLength = 8;

            var calcResult = TriangleHelper.CalculateAngleFromTriangleSides(aLength, bLength, cLength, 1);

            Assert.AreEqual(62.2, calcResult);
        }
Пример #10
0
 /// <summary>
 /// Cache variable called _validNumbers holds all paths
 /// found after iteration. This method sumarize all items
 /// from path and convert a path into string output legible
 /// </summary>
 private (int max, string path) GetPathNumbersFromCache()
 {
     return(((int max, string path))
            _validNumbers
            .Select(items => (
                        max: items.Sum(),
                        path: TriangleHelper.ConvertPathIntoLegibleOutput(items)))
            .OrderByDescending(r => r.max)
            .FirstOrDefault());
 }
Пример #11
0
        public void NoSidesSameReturnScalene()
        {
            //arange
            var triangleHelper = new TriangleHelper();

            //act
            var result = triangleHelper.GetTriangleType(5, 4, 3);

            //assert
            Assert.True(result.Equals(TriangleType.Scalene), "Triangle with no equal sides is scalene");
        }
Пример #12
0
        public void TwoSidesSameReturnIsocoles()
        {
            //arange
            var triangleHelper = new TriangleHelper();

            //act
            var result = triangleHelper.GetTriangleType(5, 5, 3);

            //assert
            Assert.True(result.Equals(TriangleType.Isocoles), "Triangle with two equal sides is isocoles");
        }
Пример #13
0
        public void ThreeSidesSameReturnEquilateral()
        {
            //arange
            var triangleHelper = new TriangleHelper();

            //act
            var result = triangleHelper.GetTriangleType(5, 5, 5);

            //assert
            Assert.True(result.Equals(TriangleType.Equilateral), "Triangle with sides is equilateral");
        }
Пример #14
0
        public void ValidTriangleReturnsTrue(int a, int b, int c)
        {
            //arange
            var triangleHelper = new TriangleHelper();

            //act
            var result = triangleHelper.IsTriangle(a, b, c);

            //assert
            Assert.True(result, "Triangle with valid sides should be true");
        }
Пример #15
0
        public void AnyZeroSideReturnsFalse(int a, int b, int c)
        {
            //arange
            var triangleHelper = new TriangleHelper();

            //act
            var result = triangleHelper.IsTriangle(a, b, c);

            //assert
            Assert.False(result, "Triangle with a side equal to zero should be false");
        }
Пример #16
0
 bool DefineTypeCondition(BulletController.BulletType bulletType)
 {
     if (controller is NumberController)
     {
         return(!NumberHelper.HasDamage(bulletType, controller.GetNumber()));
     }
     else
     {
         return(!TriangleHelper.HasDamage(bulletType, controller.GetNumber()));
     }
 }
Пример #17
0
        public Triangle Get(Coordinate topEdge, Coordinate rightEdge, Coordinate leftEdge)
        {
            var input = new List <Coordinate>
            {
                topEdge,
                rightEdge,
                leftEdge
            };

            return(TriangleHelper.GetTriangle(input));
        }
Пример #18
0
        public void IsSumOfTheAnglesATriangleWithNulls()
        {
            double?angleA = null;
            double?angleB = 45;
            double?angleC = 90;

            Assert.Throws <ArgumentNullException>(() => TriangleHelper.IsSumOfTheAnglesATriangle(angleA, angleB, angleC));
            angleA = 20;
            Assert.False(TriangleHelper.IsSumOfTheAnglesATriangle(angleA, angleB, angleC), $"A:{angleA}, B:{angleB}, C:{angleC}");
            angleA = 45;
            Assert.True(TriangleHelper.IsSumOfTheAnglesATriangle(angleA, angleB, angleC), $"A:{angleA}, B:{angleB}, C:{angleC}");
        }
Пример #19
0
        public void AreaFail2()
        {
            var a = 5.08d;
            var b = 33.94d;
            var c = 8.91d;

            var(area, e) = TriangleHelper.Area(a, b, c);

            Console.WriteLine($"Error:{e.ToString()}\r\nAnswer:{area.ToString(PrecisionArea)}");

            Assert.AreEqual(Errors.WrongSides, e);
            Assert.AreEqual((-1).ToString(PrecisionArea), area.ToString(PrecisionArea));
        }
Пример #20
0
        private void ShowDetails(Triangle triangle)
        {
            if (triangle == null)
            {
                _view.ShowMessageTriangleDoesNotExist();
                return;
            }

            var perimeter = TriangleHelper.CalculatePerimeter(triangle);
            var area      = TriangleHelper.CalculateArea(triangle);

            _view.ShowTriangleDetails(triangle, perimeter, area);
        }
        public void GetCoordinates_GivenRowAndColumn_ReturnsCoordinates(int row, int column, ICollection <Coordinate> expectedCoordinates)
        {
            // Act
            var result = TriangleHelper.GetCoordinates(row, column);

            // Assert
            Assert.Equal(expectedCoordinates.Count, result.Count());
            for (int i = 0; i < expectedCoordinates.Count; i++)
            {
                Assert.Equal(expectedCoordinates.ElementAt(i).X, result.ElementAt(i).X);
                Assert.Equal(expectedCoordinates.ElementAt(i).Y, result.ElementAt(i).Y);
            }
        }
Пример #22
0
        public void AreaOk2()
        {
            var a = 5.08d;
            var b = 3.94d;
            var c = 8.91d;

            var etalon = 3.1025589091d;

            var(area, e) = TriangleHelper.Area(a, b, c);

            Console.WriteLine($"Error:{e.ToString()}\r\nAnswer:{area.ToString(PrecisionArea)}\r\nEtalon:{etalon.ToString(PrecisionArea)}");

            Assert.AreEqual(Errors.None, e);
            Assert.AreEqual(etalon.ToString(PrecisionArea), area.ToString(PrecisionArea));
        }
Пример #23
0
        public void AreaOk1()
        {
            var a = 3d;
            var b = 4d;
            var c = 5d;

            var etalon = 6d;

            var(area, e) = TriangleHelper.Area(a, b, c);

            Console.WriteLine($"Error:{e.ToString()}\r\nAnswer:{area.ToString(PrecisionArea)}\r\nEtalon:{etalon.ToString(PrecisionArea)}");

            Assert.AreEqual(Errors.None, e);
            Assert.AreEqual(etalon.ToString(PrecisionArea), area.ToString(PrecisionArea));
        }
        public void Test_Convert_Array_From_Input_String()
        {
            var input =
                @"215
192 124
117 269 442
218 836 347 235";

            var array = TriangleHelper.ConvertStringToArrayOfArray(input);

            Assert.IsNotNull(array);
            Assert.Greater(array.Length, 0);
            Assert.AreEqual(4, array.Length);

            Console.WriteLine($"Input: \n\r{input}");
        }
Пример #25
0
        public IEnumerable <Coordinate> Get(char row, int column)
        {
            if (!Char.IsLetter(row))
            {
                throw new ArgumentException($"The {nameof(row)} argument does not contain a valid letter.");
            }
            if (column < 0)
            {
                throw new ArgumentException($"The {nameof(column)} argument is invalid. Please provide positive integers.");
            }

            // Get the ASCII value of a character, -64 to normalize the integer to base 1
            var rowIntegerRepresentation = Char.ToUpper(row) - 64;

            return(TriangleHelper.GetCoordinates(rowIntegerRepresentation, column));
        }
Пример #26
0
        public (int MaxSum, string Path) Search(string input)
        {
            var triangle = TriangleHelper.ConvertStringToArrayOfArray(input);

            if (!triangle.Any())
            {
                return(0, string.Empty);
            }

            arrayNum = new int?[triangle.Length];

            FindValidChilds(triangle);

            var tuples = GetPathNumbersFromCache();

            return(tuples.max, tuples.path);
        }
Пример #27
0
        /// <summary>
        ///  Calculates all internal angles for the polygon, moving from the first vertex to the next.
        /// </summary>
        /// <param name="numDigits">If you'd like a cap on the number of digits calculated, you can pass it here.</param>
        /// <returns>List of all calculated angles in the polygon.</returns>
        public List <double> CalculateAngles(int?numDigits = null)
        {
            List <double> calcAngles = new List <double>();

            for (var i = 0; i < this.Vertices.Count; i++)
            {
                var leftVertex  = i == 0 ? this.Vertices.Last() : this.Vertices[i - 1];
                var rightVertex = this.Vertices[(i + 1) % this.Vertices.Count];
                var thisVertex  = this.Vertices[i];

                calcAngles.Add(TriangleHelper.CalculateAngleFromTriangleSides(CoordinateHelper.CalculateLengthOfLine(leftVertex, thisVertex),
                                                                              CoordinateHelper.CalculateLengthOfLine(rightVertex, thisVertex),
                                                                              CoordinateHelper.CalculateLengthOfLine(leftVertex, rightVertex),
                                                                              numDigits));
            }

            return(calcAngles);
        }
Пример #28
0
        public void Pythagorean()
        {
            double?sideA = 10;
            double?sideB = 20;
            double?sideC;
            double?expected = 22.360679774997898;

            Assert.Equal(expected, TriangleHelper.Pythagorean(sideA, sideB, null));

            sideA    = 15;
            sideC    = 25;
            expected = 20;
            Assert.Equal(expected, TriangleHelper.Pythagorean(sideA, null, sideC));

            sideB    = 5;
            sideC    = 25;
            expected = 24.494897427831781;
            Assert.Equal(expected, TriangleHelper.Pythagorean(null, sideB, sideC));
        }
Пример #29
0
        // Go bottom up, choose the child and merge the path memory with traversing up
        private void CalculateTriangleSumData(Triangle triangle)
        {
            var currentTriangleSize = triangle.TriangleSize;

            for (var i = currentTriangleSize - 2; i >= 0; i--)
            {
                var currentOneDimensionSize = triangle.TriangleNodes[i].Length;

                for (var j = 0; j < currentOneDimensionSize; j++)
                {
                    var chosenChild = TriangleHelper.ChooseSuitableChild(triangle, i, j);

                    if (chosenChild != null)
                    {
                        MergeMemory(triangle.TriangleNodes[i][j], chosenChild);
                    }
                }
            }
        }
Пример #30
0
        public void SinesAndCosines(string testName, TriangleData expected, double?angleA, double?angleB, double?angleC, double?sideA, double?sideB, double?sideC)
        {
            // Act
            var actual = TriangleHelper.SinesAndCosines(angleA, angleB, angleC, sideA, sideB, sideC);

            // Assert
            Assert.NotNull(testName);
            Assert.NotNull(actual);

            Assert.Equal(expected.A, actual.A);
            Assert.Equal(expected.B, actual.B);
            Assert.Equal(expected.C, actual.C);

            Assert.Equal(expected.a, actual.a);
            Assert.Equal(expected.b, actual.b);
            Assert.Equal(expected.c, actual.c);

            Assert.Equal(expected.ToString(), actual.ToString());
        }