public void GetEnumerator_IfFilesChangeDuringEnumeration_ThenTheyAreYielded()
 {
     using (var cts = new CancellationTokenSource(5000))
     {
         AutoResetEvent collectionCreated = new AutoResetEvent(false);
         var tasks = new Task[]
         {
             new Task( () =>
                 {
                     var collection = new ChangedFileCollection(cts.Token, _directory);
                     collectionCreated.Set();
                     var results = collection.ToArray();
                     Assert.IsTrue(results.SequenceEqual(_addedFiles));
                 }),
             new Task( () =>
                 {
                     collectionCreated.WaitOne();
                     Thread.Sleep(500);
                     CreateFiles(_addedFiles);
                 })
         };
         tasks[0].Start();
         tasks[1].Start();
         Task.WaitAll(tasks);
     }
 }
 public void GetEnumerator_IfFilesPresentOnConstruction_ThenTheyAreYielded()
 {
     CreateFiles(_initialFiles);
     using (var cts = new CancellationTokenSource(1000))
     {
         var results = new ChangedFileCollection(cts.Token, _directory);
         Assert.IsTrue(results.SequenceEqual(_initialFiles));
     }
 }
 public void GetEnumerator_IfNoFilesEver_ThenYieldsNothing()
 {
     using (var cts = new CancellationTokenSource(500))
     {
         var results = new ChangedFileCollection(cts.Token, _directory);
         Assert.AreEqual(0, results.Count());
     }
 }