/// <summary>
        /// Initializes a new instance of the <see cref="SelfMediaDatabase.Console.Bootstrap.BootstrapOperations"/> class.
        /// </summary>
        /// <param name="optionUtils">Utils for command line options.</param>
        public BootstrapOperations(
            IOptionsUtils optionsUtils, 
            IRenameOperation renameOperation, 
            ITagsOperation tagsOperation, 
            IPruneOperation pruneOperation,
			IClassifyOperation classifyOperation,
			ISearchOperation searchOperation)
        {
            if (renameOperation == null)
                throw new ArgumentNullException("renameOperation");
            if (optionsUtils == null)
                throw new ArgumentNullException("optionsUtils");
            if (tagsOperation == null)
                throw new ArgumentNullException("tagsOperation");
            if (pruneOperation == null)
                throw new ArgumentNullException("pruneOperation");
			if (classifyOperation == null)
				throw new ArgumentNullException("classifyOperation");
			if (searchOperation == null)
				throw new ArgumentNullException("searchOperation");

            _optionsUtils = optionsUtils;
            _renameOperation = renameOperation;
            _tagsOperation = tagsOperation;
            _pruneOperation = pruneOperation;
			_classifyOperation = classifyOperation;
			_searchOperation = searchOperation;
        }
		public void Initialize()
		{
			_optionUtils = Substitute.For<IOptionsUtils>();
			_renameOperation = Substitute.For<IRenameOperation>();
			_tagsOperation = Substitute.For<ITagsOperation>();
			_pruneOperation = Substitute.For<IPruneOperation>();
			_classifyOperation = Substitute.For<IClassifyOperation>();
			_searchOperation = Substitute.For<ISearchOperation>();

			_target = new BootstrapOperations(_optionUtils, _renameOperation, _tagsOperation, _pruneOperation, _classifyOperation, _searchOperation);
		}
		public void Intialize()
		{
			_fileSystemHelper = Substitute.For<IFileSystemHelper>();
			_directory = Substitute.For<IDirectory>();
			_fileOutput = Substitute.For<IFileOutput>();
			_consoleOutput = Substitute.For<IConsoleOutput>();
			_utils = Substitute.For<IUtils>();
			_tagsOperation = Substitute.For<ITagsOperation>();
			_tagHelper = Substitute.For<ITagHelper>();
			_file = Substitute.For<IFile>();

			_target = new SearchOperation(
				_fileSystemHelper , 
				_directory, 
				_fileOutput, 
				_consoleOutput, 
				_file, 
				_utils, 
				_tagsOperation,
				_tagHelper);
		}
		/// <summary>
		/// Initializes a new instance of the <see cref="SelfMediaDatabase.Core.Operations.Search.SearchOperation"/> class.
		/// </summary>
		/// <param name="fileSystemHelper">File system helper.</param>
		/// <param name="directory">Directory.</param>
		/// <param name="fileOutput">File output.</param>
		/// <param name="consoleOutput">Console output.</param>
		/// <param name="file">Injectable wrapper of <see cref="System.IO.File"/>.</param>
		/// <param name="utils">Some utils methods provider.</param>
		/// <param name="tagsOperation">Tags operation library.</param>
		/// <param name="tagHelper">Helper to access to tags of media files.</param>
		public SearchOperation(
			IFileSystemHelper fileSystemHelper, 
			IDirectory directory, 
			IFileOutput fileOutput, 
			IConsoleOutput consoleOutput, 
			IFile file, 
			IUtils utils,
			ITagsOperation tagsOperation,
			ITagHelper tagHelper)
		{
			if (fileSystemHelper == null)
				throw new ArgumentNullException("fileSystemHelper");
			if (directory == null)
				throw new ArgumentNullException("directory");
			if (fileOutput == null)
				throw new ArgumentNullException("fileOutput");
			if (consoleOutput == null)
				throw new ArgumentNullException("consoleOutput");
			if (file == null)
				throw new ArgumentNullException("file");
			if (utils == null)
				throw new ArgumentNullException("utils");
			if (tagsOperation == null)
				throw new ArgumentNullException("tagsOperation");
			if (tagHelper == null)
				throw new ArgumentNullException("exifHelper");

			_fileSystemHelper = fileSystemHelper;
			_directory = directory;
			_fileOutput = fileOutput;
			_consoleOutput = consoleOutput;
			_file = file;
			_utils = utils;
			_tagsOperation = tagsOperation;
			_tagHelper = tagHelper;
		}
 public TagsOperationTester(IFileSystemHelper fileSystemHelper, IFile file, IPath path, ITagHelper exifHelper, ITagsOperation self)
     : base(fileSystemHelper, file, path, exifHelper)
 {
     if (self == null)
         self = this;
     _self = self;
 }