public void RunSearchAsync_OptionsOk_ChewckRunClassifyAsyncCalled()
		{
			// Arrange
			var options = new SearchOptions() {
				DateFrom = DateTime.Now.AddDays(-10),
				DateTo = DateTime.Now.AddDays(10),
				SearchOutputType = SearchOutputType.Link,
				OutputDirectory = @"C:\ResultSearch",
				Tags = true,
				Comments = true,
				Location = true,
				Recursive = true,
				Directory = @"C:\Temp",
				SearchKeywords = "Home Holliday",
			};

			var expectedTask = Task.FromResult(0);
			_searchOperation.SearchMediaAsync(
				Arg.Any<string>(), 
				Arg.Any<SearchOutputType>(), 
				Arg.Any<string>(), 
				Arg.Any<SearchCriteria>(), 
				Arg.Any<DateTime?>(), 
				Arg.Any<DateTime?>(), 
				Arg.Any<string>()).Returns(expectedTask);

			// Act
			var task = _target.RunSearchAsync(options);

			// Assert
			_searchOperation.Received(1).SearchMediaAsync(
				options.Directory, 
				options.SearchOutputType, 
				options.OutputDirectory,
				SearchCriteria.Tags | SearchCriteria.Comments | SearchCriteria.Location,
				options.DateFrom, 
				options.DateTo,
				options.SearchKeywords);
			Assert.AreSame(expectedTask, task);
		}
		/// <summary>
		/// Runs the search operation.
		/// </summary>
		/// <returns>A task that represents the search operation.</returns>
		/// <param name="searchOptions">Search options.</param>
		public Task RunSearchAsync(SearchOptions searchOptions)
		{
			if (searchOptions == null)
				throw new ArgumentNullException("searchOptions");

			LogHelper.InitializeLogging(searchOptions);

			Log.T("Processing 'tag' operation.");

			var criterias = SearchCriteria.None;
			if (searchOptions.Tags)	criterias |= SearchCriteria.Tags;
			if (searchOptions.Comments)	criterias |= SearchCriteria.Comments;
			if (searchOptions.Location)	criterias |= SearchCriteria.Location;

			return _searchOperation.SearchMediaAsync(
				searchOptions.Directory, 
				searchOptions.SearchOutputType, 
				searchOptions.OutputDirectory, 
				criterias,
				searchOptions.DateFrom, 
				searchOptions.DateTo, 
				searchOptions.SearchKeywords);
		}