Beispiel #1
0
            public void GivenMessage_ReturnsBrowserScreen()
            {
                var message = new SelectWordMessage(Dionysus);
                var state   = _reducer.Reduce(message, _initialState);

                state.CurrentScreen.Should().BeOfType <VocabularyBrowserScreen>();
            }
        public WordTutorApplication Reduce(IReduxMessage message, WordTutorApplication currentState)
        {
            if (currentState is null)
            {
                throw new ArgumentNullException(nameof(currentState));
            }

            if (!(currentState.CurrentScreen is VocabularyBrowserScreen))
            {
                return(currentState);
            }

            return((message ?? throw new ArgumentNullException(nameof(message)))
                   switch
            {
                ClearSelectedWordMessage _ => currentState.UpdateScreen(
                    (VocabularyBrowserScreen s) => s.ClearSelection()),

                SelectWordMessage m => currentState.UpdateScreen(
                    (VocabularyBrowserScreen s) => s.WithSelection(m.Word)),

                OpenScreenForNewWordMessage _ => currentState.OpenScreen(
                    ModifyVocabularyWordScreen.ForNewWord()),

                OpenScreenForModifyingWordMessage m => currentState.OpenScreen(
                    ModifyVocabularyWordScreen.ForExistingWord(m.Word)),

                _ => currentState,
            });
Beispiel #3
0
            public void GivenMessage_ChangesSelection()
            {
                var message = new SelectWordMessage(Dionysus);
                var state   = _reducer.Reduce(message, _initialState);
                var screen  = (VocabularyBrowserScreen)state.CurrentScreen;

                screen.Selection.Should().Be(Dionysus);
            }