static void Main(string[] args) { // Use some IoC to initialize IParser<string> parser = new SyncStringToStringParser(); IConsumerUnit consumer = new ConsumerUnit(parser, Program.PrintResults); IInputQueue<string> inputQueue = new StringInputQueue(); IOutputQueue<string> outputQueue = new StringOutputQueue(); IExtractor<string, string> extractor = new AsyncStringToStringExtractor(5, new RealWebClient()); IProducerUnit producer = new ProducerUnit(inputQueue, outputQueue, extractor); producer.Consumer = consumer; // Retrieve input from file string relative = "Input/InputFile.txt"; string absolute = Path.GetFullPath(relative); string[] lines = File.ReadAllLines(absolute); // Add input to producer producer.AddInput(lines); // Start processing producer.StartProcessing(); Console.WriteLine("Processing started."); Console.ReadLine(); }
public void AddInput_ValidInput_GetSizeCorrectValue() { // Arrange IInputQueue<string> inputQueue = new StringInputQueue(); IProducerUnit producer = new ProducerUnit(inputQueue, null, null); List<string> input = new List<string> { "https://en.wikipedia.org/wiki/Web_scraping", "https://en.wikipedia.org/wiki/Firefox", "https://en.wikipedia.org/wiki/Foxfire" }; // Act producer.AddInput(input); int inputQueueSize = producer.GetInputQueueSize(); // Assert Assert.AreEqual(3, inputQueueSize); }
public void StartProcessing_WebException_DoNotPropagateException() { // Arrange IInputQueue<string> inputQueue = new StringInputQueue(); inputQueue.Enqueue("https://en.wikipedia.org/wiki/Web_scraping"); inputQueue.Enqueue("https://en.wikipedia.org/wiki/Foxfire"); IOutputQueue<string> outputQueue = new StringOutputQueue(); // Use ExceptionWebClient to simulate Web Exception IExtractor<string, string> extractor = new SyncStringToStringExtractor(new ExceptionWebClient()); IProducerUnit producer = new ProducerUnit(inputQueue, outputQueue, extractor); // Act producer.StartProcessing(); // Assert int outputQueueLength = 0; while (outputQueue.Dequeue() != null) { outputQueueLength++; } Assert.AreEqual(0, outputQueueLength); }
public void StartProcessing_ValidInput_GetCorrectOutput() { // Arrange IInputQueue<string> inputQueue = new StringInputQueue(); inputQueue.Enqueue("https://en.wikipedia.org/wiki/Web_scraping"); inputQueue.Enqueue("https://en.wikipedia.org/wiki/Firefox"); inputQueue.Enqueue("https://en.wikipedia.org/wiki/Foxfire"); IOutputQueue<string> outputQueue = new StringOutputQueue(); IExtractor<string, string> extractor = new SyncStringToStringExtractor(new MockWebClient()); IProducerUnit producer = new ProducerUnit(inputQueue, outputQueue, extractor); // Act producer.StartProcessing(); // Assert int outputQueueLength = 0; while (outputQueue.Dequeue() != null) { outputQueueLength++; } Assert.AreEqual(3, outputQueueLength); }