public static WatcherStatus BuildStatus(Watcher watcher)
 {
     // Evaluate and return
     if (WatcherExpression.WatcherNotSet().Invoke(watcher))
     {
         return(WatcherStatus.NOT_SET);
     }
     if (WatcherExpression.WatcherBuying().Invoke(watcher))
     {
         return(WatcherStatus.BUYING);
     }
     if (WatcherExpression.WatcherSelling().Invoke(watcher))
     {
         return(WatcherStatus.SELLING);
     }
     if (WatcherExpression.WatcherBought().Invoke(watcher))
     {
         return(WatcherStatus.BOUGHT);
     }
     if (WatcherExpression.WatcherHolding().Invoke(watcher))
     {
         return(WatcherStatus.HOLDING);
     }
     if (WatcherExpression.WatcherSold().Invoke(watcher))
     {
         return(WatcherStatus.SOLD);
     }
     throw new NotImplementedException();
 }
        public void Test_WatcherSet()
        {
            // Arrange
            var watchersBuyingAndSelling = FakeWatcher.GetWatchersNotSet();

            // Act
            var filter = watchersBuyingAndSelling.Where(WatcherExpression.WatcherNotSet()).ToList();

            // Assert
            Assert.AreEqual(watchersBuyingAndSelling.Count, filter.Count);
        }