public void WordsStartingWithAdjacentCodepointsGoToDifferentPartitions() { var sut = new ByFirstCharPartitioner(); var partitionQueues = new BlockingCollection <string> [2]; partitionQueues[0] = new BlockingCollection <string>(); partitionQueues[1] = new BlockingCollection <string>(); var testWords = GenerateWordsStartingWith('a').Concat(GenerateWordsStartingWith('b')).ToArray(); sut.PartitionIntoQueues(testWords, partitionQueues); Assert.IsTrue( partitionQueues[0].Count == testWords.Length / 2 && partitionQueues[1].Count == testWords.Length / 2); }
public void WordsStartingWithSameLetterGoToSamePartition() { var sut = new ByFirstCharPartitioner(); var partitionQueues = new BlockingCollection <string> [2]; partitionQueues[0] = new BlockingCollection <string>(); partitionQueues[1] = new BlockingCollection <string>(); var testWords = GenerateWordsStartingWith('a').ToArray(); sut.PartitionIntoQueues(testWords, partitionQueues); Assert.IsTrue( partitionQueues[0].Count == testWords.Length && partitionQueues[1].Count == 0 || partitionQueues[0].Count == 0 && partitionQueues[1].Count == testWords.Length); }
public static void Main(string[] args) { if (args.Length < 2) { Console.WriteLine("Not enough arguments. Usage: wordcount.exe input_file_path output_file_path [/instrument]"); return; } if (args.Length > 2 && args[2] == "/instrument") { Instrument.Initialize(new ConsoleInstrumentationWriter()); } string inputPath = args[0]; string outputPath = args[1]; try { string inputPathError = CheckInputFilePath(inputPath); if (!string.IsNullOrEmpty(inputPathError)) { Console.WriteLine("Invalid input file path: {0}", inputPathError); return; } string outputPathError = CheckOutputFilePath(outputPath); if (!string.IsNullOrEmpty(outputPathError)) { Console.WriteLine("Invalid output file path: {0}", outputPathError); return; } using (var input = new FileStream(inputPath, FileMode.Open, FileAccess.Read, FileShare.Read)) using (var output = new FileStream(outputPath, FileMode.Create, FileAccess.Write, FileShare.None)) { var inputReader = new InputReader(); var inputPartitioner = new ByFirstCharPartitioner(); var freqDictBuilder = new InMemoryFreqDictionaryBuilder(); var outputWriter = new OutputWriter(); var facade = new Facade(inputReader, inputPartitioner, freqDictBuilder, outputWriter); facade.Run(input, output); } } catch (FileNotFoundException ex) { Console.WriteLine("File {0} not found", ex.FileName); } catch (UnauthorizedAccessException ex) { Console.WriteLine("Access is denied: {0}", ex.Message); } catch (IOException ex) { Console.WriteLine("IO error: {0}", ex.Message); } catch (Exception ex) { Console.WriteLine("Unknown error {0}", ex); } }