public void Tick_Positive()
        {
            const int currentTick          = 12;
            const int maxTicks             = 34;
            var       shellProgressBarMock = Mock.Create <ShellProgressBar.IProgressBar>();

            Mock.Arrange(() => shellProgressBarMock.CurrentTick).Returns(currentTick);
            Mock.Arrange(() => shellProgressBarMock.MaxTicks).Returns(maxTicks);
            Mock.Arrange(() => shellProgressBarMock.Tick($"[{currentTick + 1}/{maxTicks}]"))
            .DoNothing().OccursOnce();

            var progressBar = new GhacuShellProgressBar(null, options =>
            {
                Assert.True(options.CollapseWhenFinished);
                Assert.True(options.DisplayTimeInRealTime);
                Assert.Equal('#', options.ProgressCharacter);
                Assert.True(options.ProgressBarOnBottom);
                Assert.True(options.ShowEstimatedDuration);
                Assert.Equal(Console.ForegroundColor, options.ForegroundColor);
                Assert.Equal('-', options.BackgroundCharacter);
                return(shellProgressBarMock);
            });

            Assert.Equal(shellProgressBarMock, progressBar.ProgressBar);
            progressBar.Report(-2.1 /* any double */);

            Mock.Assert(shellProgressBarMock);
        }
        public void Create_Successfully()
        {
            const int totalTicks  = 3;
            var       progressBar = new GhacuShellProgressBar(totalTicks, null);

            Assert.Equal($"[0/{totalTicks}]", progressBar.ProgressBar.Message);
            Assert.Equal(totalTicks, progressBar.ProgressBar.MaxTicks);
        }
        public void Dispose_Positive()
        {
            var shellProgressBarMock = Mock.Create <ShellProgressBar.IProgressBar>();

            Mock.Arrange(() => shellProgressBarMock.Dispose()).DoNothing().OccursOnce();
            var streamerMock = Mock.Create <IStreamer>();

            Mock.Arrange(() => streamerMock.Clear(2)).DoNothing().OccursOnce();
            var progressBar = new GhacuShellProgressBar(streamerMock, _ => shellProgressBarMock);

            progressBar.Dispose();
            Mock.Assert(shellProgressBarMock);
            Mock.Assert(streamerMock);
        }