Ejemplo n.º 1
0
        public void GetPairsWithMinimumCost_OperatesAsExpected_AtLargeInputs(int length)
        {
            var random   = new Random();
            var sequence = new List <int>();
            var expected = new Dictionary <int, int>();

            for (var i = 0; i < length; i++)
            {
                var item = random.Next(length);
                sequence.Add(item);
                expected.AddOrUpdate(item, 1, e => e + 1);
            }

            var result = Pairing.GetPairsWithMinimumCost(sequence, DistanceCostOfPairsEvaluator);

            foreach (var r in result)
            {
                var x = new[] { r.Item1, r.Item2 };
                foreach (var item in x)
                {
                    Assert.IsTrue(expected.TryGetValue(item, out var appearances));
                    if (appearances == 1)
                    {
                        expected.Remove(item);
                    }
                    else
                    {
                        expected[item] = appearances - 1;
                    }
                }
            }

            Assert.AreEqual(0, expected.Count);
        }
Ejemplo n.º 2
0
        public void GetPairsWithMinimumCost_ReturnsTwoPairs_ForFourElementSequence()
        {
            var result = Pairing.GetPairsWithMinimumCost(new[] { 4, 10, 2, 8 }, BanalCostOfPairsEvaluator);

            TestHelper.AssertSequence(result, (4, 10), (2, 8));
        }
Ejemplo n.º 3
0
        public void GetPairsWithMinimumCost_ReturnsOnePair_ForTwoElementSequence()
        {
            var result = Pairing.GetPairsWithMinimumCost(new[] { 1, 2 }, BanalCostOfPairsEvaluator);

            TestHelper.AssertSequence(result, (1, 2));
        }
Ejemplo n.º 4
0
        public void GetPairsWithMinimumCost_ReturnsEmptyArray_ForEmptySequence()
        {
            var result = Pairing.GetPairsWithMinimumCost(new int[] { }, BanalCostOfPairsEvaluator);

            TestHelper.AssertSequence(result);
        }
Ejemplo n.º 5
0
        public void GetPairsWithMinimumCost_CreatesSets_UsingTheActualCost()
        {
            var result = Pairing.GetPairsWithMinimumCost(new[] { 1, 2, 3, 8, 9, 12, 4, 6 }, DistanceCostOfPairsEvaluator);

            TestHelper.AssertSequence(result, (1, 2), (3, 4), (8, 6), (9, 12));
        }
Ejemplo n.º 6
0
 public void GetPairsWithMinimumCost_ThrowsException_ForSequenceWithOddNumberOfElements()
 {
     Assert.Throws <ArgumentException>(
         () => Pairing.GetPairsWithMinimumCost(new[] { 1, 2, 3 }, BanalCostOfPairsEvaluator));
 }
Ejemplo n.º 7
0
 public void GetPairsWithMinimumCost_ThrowsException_ForNullSequence()
 {
     Assert.Throws <ArgumentNullException>(
         () => Pairing.GetPairsWithMinimumCost <int>(null, BanalCostOfPairsEvaluator));
 }
Ejemplo n.º 8
0
 public void GetPairsWithMinimumCost_ThrowsException_ForNullEvaluateCostOfPairFunc()
 {
     Assert.Throws <ArgumentNullException>(
         () => Pairing.GetPairsWithMinimumCost(new[] { 1, 2 }, null));
 }