Exemple #1
0
        public void FindPairsTest()
        {
            int itemCount = 10000;
            int minValue  = -1000;
            int maxValue  = 1000;

            List <int> integers = new List <int>();
            Random     rand     = new Random();

            for (int i = 0; i < itemCount; i++)
            {
                integers.Add(rand.Next(minValue, maxValue));
            }

            var p = new PairSum(integers);

            for (int x = -10; x < 11; x++)
            {
                var result = p.Find(x);

                List <int> intCheck = integers.ToList();
                foreach (var tup in result)
                {
                    Assert.AreEqual(tup.Item1 + tup.Item2, x);

                    intCheck.Remove(tup.Item1);
                    intCheck.Remove(tup.Item2);
                }
                Assert.IsTrue(intCheck.Count == itemCount - result.Count * 2);
            }
        }
        public void GivenNullArray_WhenFind_ThenThrows()
        {
            // Arrange
            var tps = new PairSum();

            // Act // Assert
            Assert.ThrowsException <ArgumentNullException>(() => tps.Find(null, 10));
        }
        public void GivenArrayAndSum_WhenFind_ThenReturnsAllTwoPairSumsWhichEqualToSumNumber()
        {
            // Arrange
            var array = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            var sum   = 8;
            var tps   = new PairSum();

            // Act
            var result = tps.Find(array, sum).OrderBy(x => x.Item1).ThenBy(x => x.Item2).ToList();

            // Assert
            var expectedResult = new List <Tuple <int, int> >()
            {
                new Tuple <int, int>(1, 7),
                new Tuple <int, int>(2, 6),
                new Tuple <int, int>(3, 5)
            };

            for (int i = 0; i < expectedResult.Count; i++)
            {
                Assert.AreEqual(expectedResult[i], result[i]);
            }
        }