コード例 #1
0
        public void GivenUserIsTesterWhenShowThenListAvailableCharactersAndOptionToCreate()
        {
            var characters = new List <Character>
            {
                new Character {
                    Name = "Sally"
                }, new Character {
                    Name = "Rick"
                },
                new Character {
                    Name = "Joe"
                }
            };

            _characterController.GetCharacterData().Returns(characters);

            _sut.Show();

            _characterController.Received(1).GetCharacterData();

            _console.Received(1).WriteLine("1 - Sally");
            _console.Received(1).WriteLine("2 - Rick");
            _console.Received(1).WriteLine("3 - Joe");
            _console.Received(1).WriteLine("N - Create a new character.");
            _console.Received(1).WriteLine("D # - Delete a character where # is the character ID.");
            _console.Received(0).WriteLine("A - Admin options.");
            _console.Received(1).Write("Enter selection: ");
        }
コード例 #2
0
        public CharacterViewTest()
        {
            _characterController = Substitute.For <ICharacterController>();

            var characters = new List <Character>
            {
                new Character {
                    Name = "Sally"
                }, new Character {
                    Name = "Rick"
                },
                new Character {
                    Name = "Joe"
                }
            };

            _characterController.GetCharacterData().Returns(characters);
            var user = new User
            {
                Email = "*****@*****.**"
            };

            _characterController.User.Returns(user);

            _characterController.When(x => x.Delete("Sally"))
            .Do(info => characters.Remove(characters.First(x => x.Name == "Sally")));

            _console      = Substitute.For <IConsoleWrapper>();
            _newCharacter = Substitute.For <INewCharacterView>();
            _mainView     = Substitute.For <IMainView>();
            _sut          = new CharacterView(_console, _characterController, _mainView, _newCharacter);
        }
コード例 #3
0
        public void Show()
        {
            var characters = _character.GetCharacterData().ToList();

            _console.Clear();
            _console.WriteLine($"Welcome {_character.User.Email} choose a character to play:");
            var i = 1;

            foreach (var character in characters)
            {
                _console.WriteLine($"{i} - {character.Name}");
                i++;
            }

            _console.WriteLine("N - Create a new character.");
            _console.WriteLine("D # - Delete a character where # is the character ID.");
            _console.WriteLine("E - Exit game.");
            _console.Write("Enter selection: ");
            var retry = true;
            var tries = 0;

            while (retry && tries < 3)
            {
                retry = false;
                var selection = _console.ReadLine();
                var split     = selection.Split(' ');
                if (int.TryParse(selection, out _))
                {
                    _mainView.Show(characters[Convert.ToInt32(selection) - 1].Name);
                }
                else if (selection.ToUpper() == "N")
                {
                    _newCharacterView.Show();
                    Show();
                }
                else if (selection.ToUpper().StartsWith('D') &&
                         split.Length == 2 &&
                         int.TryParse(split[1], out _) &&
                         characters.Count > 0 &&
                         Convert.ToInt32(split[1]) <= characters.Count)
                {
                    var name = characters[Convert.ToInt32(split[1]) - 1].Name;
                    _console.Write($"Are you sure you want delete {name}? (Y)es or (N)o: ");
                    var yesNo = _console.ReadLine();
                    if (yesNo.ToUpper().Trim() == "Y")
                    {
                        _character.Delete(name);
                        _console.WriteLine($"{name} was deleted");
                        Show();
                    }
                    else
                    {
                        retry = true;
                        tries = 0;
                        _console.Write("Enter selection: ");
                    }
                }
                else if (selection.ToUpper().StartsWith('E'))
                {
                    _console.Write("Are you sure you want to leave? (Y)es or (N)o: ");
                    var yesNo = _console.ReadLine();
                    if (yesNo.ToUpper().Trim() == "Y")
                    {
                        break;
                    }

                    retry = true;
                    tries = 0;
                    _console.Write("Enter selection: ");
                }
                else
                {
                    tries++;
                    var returnMessage = tries < 3 ? "Try again." : "Go home...";
                    _console.WriteLine($"Invalid selection. {returnMessage}");
                    retry = true;
                }
            }
        }