Exemple #1
0
        public void StopAfterLastCommand()
        {
            // Arrange
            var storage = new Mock <ICommandsHistoryStorage>();

            storage.Setup(s => s.Load()).Returns(new[] { "a", "b", "c" });
            var manager = new CommandsHistoryManager(storage.Object);

            while (manager.TryGetPrevCommand(out string _))
            {
            }

            // Act
            int count = 0;

            for (int i = 0; i < 10; i++)
            {
                if (!manager.TryGetNextCommand(out string _))
                {
                    break;
                }
                count++;
            }

            // Assert
            Assert.Equal(2, count);
        }
Exemple #2
0
        public void LoadCommandsBeforeUse(string command)
        {
            // Arrange
            var storage = new Mock <ICommandsHistoryStorage>();

            storage.Setup(s => s.Load()).Returns(Array.Empty <string>());
            var manager = new CommandsHistoryManager(storage.Object);

            // Act
            switch (command)
            {
            case "prev":
                manager.TryGetPrevCommand(out string prev);
                break;

            case "next":
                manager.TryGetNextCommand(out string next);
                break;

            case "add":
                manager.AddCommand("command");
                break;
            }

            // Assert
            storage.Verify(s => s.Load(), Times.Once());
        }
Exemple #3
0
        public void NotAddEmptyCommand(string command)
        {
            // Arrange
            var storage = new Mock <ICommandsHistoryStorage>();

            storage.Setup(s => s.Load()).Returns(Array.Empty <string>());
            var manager = new CommandsHistoryManager(storage.Object);

            // Act
            manager.AddCommand(command);

            // Assert
            Assert.Equal(0, manager.Count);
        }
Exemple #4
0
        public void ClearElementsWithoutLoadingFromStorage()
        {
            // Arrange
            var storage = new Mock <ICommandsHistoryStorage>();

            storage.Setup(s => s.Load()).Returns(Array.Empty <string>());
            var manager = new CommandsHistoryManager(storage.Object);

            // Act
            manager.Clear();

            // Assert
            Assert.Equal(0, manager.Count);
            storage.Verify(s => s.Load(), Times.Never());
        }
Exemple #5
0
        public void ClearElements()
        {
            // Arrange
            var storage = new Mock <ICommandsHistoryStorage>();

            storage.Setup(s => s.Load()).Returns(new[] { "a", "b", "c" });
            var manager = new CommandsHistoryManager(storage.Object);

            // Act
            manager.TryGetPrevCommand(out string _); // Force to load from storage
            manager.Clear();

            // Assert
            Assert.Equal(0, manager.Count);
        }
Exemple #6
0
        public void AddNewCommand()
        {
            // Arrange
            var storage = new Mock <ICommandsHistoryStorage>();

            storage.Setup(s => s.Load()).Returns(Array.Empty <string>());
            var manager  = new CommandsHistoryManager(storage.Object);
            var expected = "command";

            // Act
            manager.AddCommand(expected);
            manager.TryGetPrevCommand(out string command);

            // Assert
            Assert.Equal(expected, command);
        }
Exemple #7
0
        public void NotExceedMaxCommandsCount()
        {
            // Arrange
            var storage = new Mock <ICommandsHistoryStorage>();

            storage.Setup(s => s.Load()).Returns(Array.Empty <string>());
            var manager = new CommandsHistoryManager(storage.Object);

            // Act
            for (int i = 0; i < manager.MaxCount + 1; i++)
            {
                manager.AddCommand("command_" + i);
            }

            // Assert
            Assert.Equal(manager.MaxCount, manager.Count);
        }
Exemple #8
0
        public void GetPrevCommand(int times, string expected)
        {
            // Arrange
            var storage = new Mock <ICommandsHistoryStorage>();

            storage.Setup(s => s.Load()).Returns(new[] { "a", "b", "c" });
            var manager = new CommandsHistoryManager(storage.Object);

            // Act
            string command = null;

            for (int i = 0; i < times; i++)
            {
                manager.TryGetPrevCommand(out command);
            }

            // Assert
            Assert.Equal(expected, command);
        }