Exemple #1
0
        public InputViewModel(GameState gameState, WordRepository wordRepository, Settings settings,
                              WordGameViewModel wordGameViewModel)
        {
            _wordRepository = wordRepository;
            _settings       = settings;
            _words          = _wordRepository.Deserialize(settings.WordSize);
            _random         = new Random();

            BingoSetupViewModel1 = new BingoSetupViewModel(gameState.Team1);
            BingoSetupViewModel2 = new BingoSetupViewModel(gameState.Team2);
            WordInputViewModel   = new WordInputViewModel(_words, settings, _random, wordGameViewModel);

            FocusTeam1     = ReactiveCommand.Create(() => Unit.Default);
            FocusTeam2     = ReactiveCommand.Create(() => Unit.Default);
            FocusBingoCard = ReactiveCommand.Create(() => Unit.Default);
            FocusWordGame  = ReactiveCommand.Create(() => Unit.Default);

            FocusTeam1.Subscribe(x =>
            {
                TeamWithFocus = 1;
                if (GameSectionWithFocus == GameSection.Bingo)
                {
                    SelectedViewModel = BingoSetupViewModel1;
                }
            });

            FocusTeam2.Subscribe(x =>
            {
                TeamWithFocus = 2;
                if (GameSectionWithFocus == GameSection.Bingo)
                {
                    SelectedViewModel = BingoSetupViewModel2;
                }
            });

            FocusBingoCard.Subscribe(x =>
            {
                GameSectionWithFocus = GameSection.Bingo;
                if (WordInputViewModel.StateInfo != null && WordInputViewModel.StateInfo.State == WordGameState.Won)
                {
                    WordInputViewModel.Clear();
                }

                if (TeamWithFocus == 1)
                {
                    SelectedViewModel = BingoSetupViewModel1;
                    return;
                }

                SelectedViewModel = BingoSetupViewModel2;
            });

            FocusWordGame.Subscribe(x =>
            {
                GameSectionWithFocus = GameSection.Word;
                SelectedViewModel    = WordInputViewModel;
            });

            SelectedViewModel = BingoSetupViewModel1;
        }
Exemple #2
0
        public void Deserialize_FileDoesNotExist_Throws()
        {
            var            fileSystem = new MockFileSystem(new Dictionary <string, MockFileData>());
            WordRepository repo       = new WordRepository(fileSystem.FileSystem, "words.txt");

            Assert.Throws <FileNotFoundException>(() => repo.Deserialize(5));
        }
Exemple #3
0
        public void Deserialize_IgnoresWordsWhichAreNotAllowed(string word)
        {
            var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData>
            {
                { @"c:\words.txt", new MockFileData(word) },
            });

            WordRepository repo = new WordRepository(fileSystem.FileSystem, @"c:\words.txt");

            Assert.IsEmpty(repo.Deserialize(5));
        }
Exemple #4
0
        public void Deserialize_IJIsSeenAsSingleLetter()
        {
            var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData>
            {
                { @"c:\words.txt", new MockFileData("ijsjes") },
            });

            WordRepository repo   = new WordRepository(fileSystem.FileSystem, @"c:\words.txt");
            var            result = repo.Deserialize(5);

            CollectionAssert.AreEqual(new string[] { "ijsjes" }, result);
        }
Exemple #5
0
        public void Deserialize_ReturnsAllowedWord(string word)
        {
            var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData>
            {
                { @"c:\words.txt", new MockFileData(word) },
            });

            WordRepository repo   = new WordRepository(fileSystem.FileSystem, @"c:\words.txt");
            var            result = repo.Deserialize(5);

            CollectionAssert.AreEqual(new string[] { word }, result);
        }