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); }
public void GetPairsWithMinimumCost_ReturnsTwoPairs_ForFourElementSequence() { var result = Pairing.GetPairsWithMinimumCost(new[] { 4, 10, 2, 8 }, BanalCostOfPairsEvaluator); TestHelper.AssertSequence(result, (4, 10), (2, 8)); }
public void GetPairsWithMinimumCost_ReturnsOnePair_ForTwoElementSequence() { var result = Pairing.GetPairsWithMinimumCost(new[] { 1, 2 }, BanalCostOfPairsEvaluator); TestHelper.AssertSequence(result, (1, 2)); }
public void GetPairsWithMinimumCost_ReturnsEmptyArray_ForEmptySequence() { var result = Pairing.GetPairsWithMinimumCost(new int[] { }, BanalCostOfPairsEvaluator); TestHelper.AssertSequence(result); }
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)); }
public void GetPairsWithMinimumCost_ThrowsException_ForSequenceWithOddNumberOfElements() { Assert.Throws <ArgumentException>( () => Pairing.GetPairsWithMinimumCost(new[] { 1, 2, 3 }, BanalCostOfPairsEvaluator)); }
public void GetPairsWithMinimumCost_ThrowsException_ForNullSequence() { Assert.Throws <ArgumentNullException>( () => Pairing.GetPairsWithMinimumCost <int>(null, BanalCostOfPairsEvaluator)); }
public void GetPairsWithMinimumCost_ThrowsException_ForNullEvaluateCostOfPairFunc() { Assert.Throws <ArgumentNullException>( () => Pairing.GetPairsWithMinimumCost(new[] { 1, 2 }, null)); }