public void ReversiGameModelNewGameInitializeTooSmallTest()
        {
            Int32[] wrongGameTableSizesArray = new Int32[] { 10, 2, 20 }; // <- 2

            _dataAccess = new ReversiFileDataAccess(wrongGameTableSizesArray);
            _model = new ReversiGameModel(_dataAccess, _tableSizeDefaultSetting);
        }
        public void Initialize()
        {
            _dataAccess = new ReversiFileDataAccess(_supportedGameTableSizesArray);

            _model = new ReversiGameModel(_dataAccess, _tableSizeDefaultSetting);

            _model.UpdateTable += new EventHandler<ReversiUpdateTableEventArgs>(model_UpdateTable);
            _model.SetGameEnded += new EventHandler<ReversiSetGameEndedEventArgs>(model_SetGameEnded);
            _model.UpdatePlayerTime += new EventHandler<ReversiUpdatePlayerTimeEventArgs>(model_UpdatePlayerTime);
        }
        /// <summary>
        /// Creaeting the reversi ViewModel.
        /// </summary>
        /// <param name="model">The Model type, which it will use.</param>
        public ReversiViewModel(ReversiGameModel model)
        {
            // Initialize what we have to.
            _model = model;
            _model.SetGameEnded += new EventHandler<ReversiSetGameEndedEventArgs>(Model_SetGameEnded);
            _model.UpdatePlayerTime += new EventHandler<ReversiUpdatePlayerTimeEventArgs>(Model_UpdatePlayerTime);
            _model.UpdateTable += new EventHandler<ReversiUpdateTableEventArgs>(Model_UpdateTable);

            NewGameCommand = new DelegateCommand(param => { OnNewGame(); });
            LoadGameCommand = new DelegateCommand(param => { OnLoadGame(); });
            SaveGameCommand = new DelegateCommand(param => OnSaveGame());
            ExitApplicationCommand = new DelegateCommand(param => OnExitApplication());

            RulesCommand = new DelegateCommand(param => OnReadRules());
            AboutCommand = new DelegateCommand(param => OnReadAbout());

            PassCommand = new DelegateCommand(param => OnPass());
            PauseCommand = new DelegateCommand(param => OnPause());

            Cells = new ObservableCollection<ReversiCell>();

            _applicationMinimumHeight = _applicationDefaultMinimumHeight;
            OnPropertyChanged("ApplicationMinimumHeight");

            _saved = true;

            _saveMenuItemEnabled = false;
            OnPropertyChanged("SaveMenuItemEnabled");

            _passButtonEnabled = false;
            OnPropertyChanged("PassButtonEnabled");
            _pauseButtonEnabled = false;
            OnPropertyChanged("PauseButtonEnabled");

            _pauseText = "Pause";
            OnPropertyChanged("PauseText");

            _player1Time = 0;
            OnPropertyChanged("Player1Time");
            _player2Time = 0;
            OnPropertyChanged("Player2Time");

            _gamePoints = "";
            OnPropertyChanged("GamePoints");
        }
        /// <summary>
        /// Initialization of the application.
        /// </summary>
        /// <param name="sender">This object. We do not use it.</param>
        /// <param name="e">Contains the program parameters. We do not use it.</param>
        private void App_Startup(object sender, StartupEventArgs e)
        {
            _model = new ReversiGameModel(new ReversiFileDataAccess(_supportedGameTableSizesArray), _tableSizeDefaultSetting);
            _model.SetGameEnded += new EventHandler<ReversiSetGameEndedEventArgs>(Model_SetGameEnded);

            _viewModel = new ReversiViewModel(_model);
            _viewModel.NewGame += new EventHandler(ViewModel_NewGame);
            _viewModel.LoadGame += new EventHandler(ViewModel_LoadGame);
            _viewModel.SaveGame += new EventHandler(ViewModel_SaveGame);
            _viewModel.ExitApplication += new EventHandler(ViewModel_ExitApplication);

            _viewModel.ReadRules += new EventHandler(ViewModel_ReadRules);
            _viewModel.ReadAbout += new EventHandler(ViewModel_ReadAbout);

            _view = new MainWindow();
            _view.DataContext = _viewModel;
            _view.Closing += new CancelEventHandler(View_Closing);
            _view.Show();
        }