From 63abcc92ba8ca4bdce9238c43bd4a497b14e7e21 Mon Sep 17 00:00:00 2001 From: Patrik Svensson Date: Sat, 12 Dec 2020 16:58:39 +0100 Subject: [PATCH] Set max value for progress task properly Also clamp the task value if it's greater than the max value. Closes #163 --- ...hould_Reduce_Width_If_Needed.verified.txt} | 0 .../Unit/ProgressTests.cs | 26 ++++++++++++++++++- src/Spectre.Console/Progress/ProgressTask.cs | 8 +++++- 3 files changed, 32 insertions(+), 2 deletions(-) rename src/Spectre.Console.Tests/Expectations/{ProgressTests.Foo.verified.txt => ProgressTests.Should_Reduce_Width_If_Needed.verified.txt} (100%) diff --git a/src/Spectre.Console.Tests/Expectations/ProgressTests.Foo.verified.txt b/src/Spectre.Console.Tests/Expectations/ProgressTests.Should_Reduce_Width_If_Needed.verified.txt similarity index 100% rename from src/Spectre.Console.Tests/Expectations/ProgressTests.Foo.verified.txt rename to src/Spectre.Console.Tests/Expectations/ProgressTests.Should_Reduce_Width_If_Needed.verified.txt diff --git a/src/Spectre.Console.Tests/Unit/ProgressTests.cs b/src/Spectre.Console.Tests/Unit/ProgressTests.cs index 5bb724c..00dd482 100644 --- a/src/Spectre.Console.Tests/Unit/ProgressTests.cs +++ b/src/Spectre.Console.Tests/Unit/ProgressTests.cs @@ -59,7 +59,7 @@ namespace Spectre.Console.Tests.Unit } [Fact] - public Task Foo() + public Task Should_Reduce_Width_If_Needed() { // Given var console = new PlainConsole(width: 20); @@ -87,5 +87,29 @@ namespace Spectre.Console.Tests.Unit // Then return Verifier.Verify(console.Output); } + + [Fact] + public void Setting_Max_Value_Should_Set_The_MaxValue_And_Cap_Value() + { + // Given + var task = default(ProgressTask); + var console = new PlainConsole(); + var progress = new Progress(console) + .Columns(new[] { new ProgressBarColumn() }) + .AutoRefresh(false) + .AutoClear(false); + + // When + progress.Start(ctx => + { + task = ctx.AddTask("foo"); + task.Increment(100); + task.MaxValue = 20; + }); + + // Then + task.MaxValue.ShouldBe(20); + task.Value.ShouldBe(20); + } } } diff --git a/src/Spectre.Console/Progress/ProgressTask.cs b/src/Spectre.Console/Progress/ProgressTask.cs index 58c3c83..3a9861c 100644 --- a/src/Spectre.Console/Progress/ProgressTask.cs +++ b/src/Spectre.Console/Progress/ProgressTask.cs @@ -167,7 +167,7 @@ namespace Spectre.Console if (maxValue != null) { - _maxValue += maxValue.Value; + _maxValue = maxValue.Value; } if (increment != null) @@ -175,6 +175,12 @@ namespace Spectre.Console Value += increment.Value; } + // Need to cap the max value? + if (Value > _maxValue) + { + Value = _maxValue; + } + var timestamp = DateTime.Now; var threshold = timestamp - TimeSpan.FromSeconds(30);