public void EmptyList() { var output = new List <byte[]>(); var sorter = new BigDataSorter(); sorter.WriteResults(val => output.Add(val)); Assert.That(output, Has.Count.EqualTo(0)); }
public void TenItems() { var output = new List <byte[]>(); var sorter = new BigDataSorter(); var input = MakeInput(10); ShuffleInputs(sorter, input); sorter.WriteResults(val => output.Add(val)); VerifyOutput(output, input); }
public void OneItem() { var output = new List <byte[]>(); var sorter = new BigDataSorter(); sorter.Add("a", new byte[] { 1 }); sorter.WriteResults(val => output.Add(val)); Assert.That(output, Has.Count.EqualTo(1)); VerifyByteArray(output[0], new byte[] { 1 }); }
public void MultiFileSort() { var output = new List <byte[]>(); var sorter = new BigDataSorter(); var input = MakeInput(100); var totalLength = input.Sum(kvp => kvp.Value.Length); sorter.MaxBytes = totalLength / 5; // force it to use about 5 files. ShuffleInputs(sorter, input); sorter.WriteResults(val => output.Add(val)); VerifyOutput(output, input); }
/// <summary> /// Insert the items in the input into the sorter in a mixed-up order. /// </summary> /// <param name="sorter"></param> /// <param name="input"></param> private void ShuffleInputs(BigDataSorter sorter, SortedDictionary <string, byte[]> input) { // Insert all the even items in oder. for (int i = 0; i < input.Count / 2; i++) { sorter.Add(input.ElementAt(i * 2).Key, input.ElementAt(i * 2).Value); } // And all the odd items in reverse order. for (int i = input.Count - 1; i > 0; i--) { if (i % 2 == 1) { sorter.Add(input.ElementAt(i).Key, input.ElementAt(i).Value); } } }