public ProfilingActionsModel(
            IProfileRepository profileRepository,
            IFileOperations fileOperations,
            IImplicationRuleValidator ruleValidator,
            ILinguisticVariableValidator variableValidator,
            IImplicationRuleCreator ruleCreator,
            ILinguisticVariableCreator variableCreator,
            IKnowledgeBaseValidator knowledgeValidator)
        {
            _profileRepository  = profileRepository ?? throw new ArgumentNullException(nameof(profileRepository));
            _fileOperations     = fileOperations ?? throw new ArgumentNullException(nameof(fileOperations));
            _ruleValidator      = ruleValidator ?? throw new ArgumentNullException(nameof(ruleValidator));
            _variableValidator  = variableValidator ?? throw new ArgumentNullException(nameof(variableValidator));
            _ruleCreator        = ruleCreator ?? throw new ArgumentNullException(nameof(ruleCreator));
            _variableCreator    = variableCreator ?? throw new ArgumentNullException(nameof(variableCreator));
            _knowledgeValidator = knowledgeValidator ?? throw new ArgumentNullException(nameof(knowledgeValidator));

            AddProfileCommand         = new RelayCommand(obj => OpenAddProfileForm(), obj => true);
            RemoveProfileCommand      = new RelayCommand(obj => RemoveProfile(), obj => SelectedProfile != null);
            CreateProfileCommand      = new RelayCommand(obj => CreateProfile(), obj => !string.IsNullOrEmpty(NewProfileName));
            CloseCreateProfileCommand = new RelayCommand(obj => CloseCreateProfileForm(), obj => true);

            UpdateProfileCommand           = new RelayCommand(obj => OpenUpdateProfileForm(), obj => true);
            CloseUpdateProfileCommand      = new RelayCommand(obj => CloseUpdateProfileForm(), obj => true);
            GetRulesFromFileCommand        = new RelayCommand(obj => GetRulesFromFile(), obj => true);
            GetVariablesFromFileCommand    = new RelayCommand(obj => GetVariablesFromFile(), obj => true);
            StartImportFromFilesCommand    = new RelayCommand(obj => StartImportFromFiles(), obj => !string.IsNullOrEmpty(RuleFilePath) && !string.IsNullOrEmpty(VariableFilePath));
            ImportRuleFromInputCommand     = new RelayCommand(obj => ImportRuleFromInput(), obj => !string.IsNullOrEmpty(UpdatingInput));
            ImportVariableFromInputCommand = new RelayCommand(obj => ImportVariableFromInput(), obj => !string.IsNullOrEmpty(UpdatingInput));
            CommitProfileCommand           = new RelayCommand(obj => CommitProfile(), obj => true);
            CloseValidationResultsCommand  = new RelayCommand(obj => CloseValidationResultsForm(), obj => true);

            ValidationResults = new ObservableCollection <string>();
            Profiles          = new ObservableCollection <InferenceProfileModel>();
        }
 public DatabaseImplicationRuleProvider(
     IProfileRepository fileOperations,
     IImplicationRuleCreator implicationRuleCreator)
 {
     _profileRepository      = fileOperations ?? throw new ArgumentNullException(nameof(fileOperations));
     _implicationRuleCreator = implicationRuleCreator ?? throw new ArgumentNullException(nameof(implicationRuleCreator));
 }
        public void SetUp()
        {
            _profileRepositoryMock      = MockRepository.GenerateMock <IProfileRepository>();
            _implicationRuleCreatorMock = MockRepository.GenerateMock <IImplicationRuleCreator>();

            _databaseImplicationRuleProvider = new DatabaseImplicationRuleProvider(
                _profileRepositoryMock,
                _implicationRuleCreatorMock);
        }