mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-07-02 10:58:17 +08:00
Add breakdown chart support
This also cleans up the bar chart code slightly and fixes some minor bugs that were detected in related code. Closes #244
This commit is contained in:

committed by
Patrik Svensson

parent
58400fe74e
commit
b64e016e8c
@ -1,3 +1 @@
|
||||
Greeting
|
||||
Hello World
|
||||
|
||||
Hello World
|
||||
|
@ -0,0 +1,4 @@
|
||||
Number of fruits
|
||||
Apple 0
|
||||
Orange █████████████████████████████████████████████████ 54
|
||||
Banana ████████████████████████████ 33
|
@ -0,0 +1,4 @@
|
||||
[38;5;9m████████████████████████[0m[38;5;12m█████████████████[0m[38;5;2m█████████████[0m[38;5;11m███[0m[38;5;119m███[0m
|
||||
|
||||
[38;5;9m■[0m SCSS [38;5;8m37[0m [38;5;12m■[0m HTML [38;5;8m28.3[0m [38;5;2m■[0m C# [38;5;8m22.6[0m [38;5;11m■[0m JavaScript [38;5;8m6[0m
|
||||
[38;5;119m■[0m Ruby [38;5;8m6[0m [38;5;14m■[0m Shell [38;5;8m0.1[0m
|
@ -0,0 +1,3 @@
|
||||
████████████████████████████████████████████████████████████
|
||||
■ SCSS 37 ■ HTML 28,3 ■ C# 22,6 ■ JavaScript 6
|
||||
■ Ruby 6 ■ Shell 0,1
|
@ -0,0 +1,2 @@
|
||||
████████████████████████████████████████████████████████████████████████████████
|
||||
■ SCSS 37 ■ HTML 28.3 ■ C# 22.6 ■ JavaScript 6 ■ Ruby 6 ■ Shell 0.1
|
@ -0,0 +1,4 @@
|
||||
████████████████████████████████████████████████████████████
|
||||
|
||||
■ SCSS 37 ■ HTML 28.3 ■ C# 22.6 ■ JavaScript 6
|
||||
■ Ruby 6 ■ Shell 0.1
|
@ -0,0 +1,2 @@
|
||||
████████████████████████████████████████████████████████████
|
||||
■ SCSS ■ HTML ■ C# ■ JavaScript ■ Ruby ■ Shell
|
@ -0,0 +1 @@
|
||||
████████████████████████████████████████████████████████████
|
@ -0,0 +1,3 @@
|
||||
████████████████████████████████████████████████████████████
|
||||
■ SCSS 37% ■ HTML 28.3% ■ C# 22.6% ■ JavaScript 6%
|
||||
■ Ruby 6% ■ Shell 0.1%
|
@ -0,0 +1,3 @@
|
||||
████████████████████████████████████████████████████████████
|
||||
■ SCSS 37 ■ HTML 28.3 ■ C# 22.6 ■ JavaScript 6
|
||||
■ Ruby 6 ■ Shell 0.1
|
@ -19,7 +19,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
|
||||
<PackageReference Include="Shouldly" Version="4.0.3" />
|
||||
<PackageReference Include="Spectre.Verify.Extensions" Version="0.1.0" />
|
||||
<PackageReference Include="Spectre.Verify.Extensions" Version="0.3.0" />
|
||||
<PackageReference Include="Verify.Xunit" Version="9.0.0-beta.1" />
|
||||
<PackageReference Include="xunit" Version="2.4.1" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
|
@ -28,5 +28,24 @@ namespace Spectre.Console.Tests.Unit
|
||||
// Then
|
||||
await Verifier.Verify(console.Output);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[Expectation("Zero_Value")]
|
||||
public async Task Should_Render_Correctly_2()
|
||||
{
|
||||
// Given
|
||||
var console = new FakeConsole(width: 80);
|
||||
|
||||
// When
|
||||
console.Render(new BarChart()
|
||||
.Width(60)
|
||||
.Label("Number of fruits")
|
||||
.AddItem("Apple", 0)
|
||||
.AddItem("Orange", 54)
|
||||
.AddItem("Banana", 33));
|
||||
|
||||
// Then
|
||||
await Verifier.Verify(console.Output);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
186
src/Spectre.Console.Tests/Unit/BreakdownChartTests.cs
Normal file
186
src/Spectre.Console.Tests/Unit/BreakdownChartTests.cs
Normal file
@ -0,0 +1,186 @@
|
||||
using System.Threading.Tasks;
|
||||
using Spectre.Console.Testing;
|
||||
using Spectre.Verify.Extensions;
|
||||
using VerifyXunit;
|
||||
using Xunit;
|
||||
|
||||
namespace Spectre.Console.Tests.Unit
|
||||
{
|
||||
[UsesVerify]
|
||||
[ExpectationPath("Widgets/BreakdownChart")]
|
||||
public sealed class BreakdownChartTests
|
||||
{
|
||||
[Fact]
|
||||
[Expectation("Default")]
|
||||
public async Task Should_Render_Correctly()
|
||||
{
|
||||
// Given
|
||||
var console = new FakeConsole(width: 80);
|
||||
|
||||
// When
|
||||
console.Render(new BreakdownChart()
|
||||
.AddItem("SCSS", 37, Color.Red)
|
||||
.AddItem("HTML", 28.3, Color.Blue)
|
||||
.AddItem("C#", 22.6, Color.Green)
|
||||
.AddItem("JavaScript", 6, Color.Yellow)
|
||||
.AddItem("Ruby", 6, Color.LightGreen)
|
||||
.AddItem("Shell", 0.1, Color.Aqua));
|
||||
|
||||
// Then
|
||||
await Verifier.Verify(console.Output);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[Expectation("Width")]
|
||||
public async Task Should_Render_With_Specific_Width()
|
||||
{
|
||||
// Given
|
||||
var console = new FakeConsole(width: 80);
|
||||
|
||||
// When
|
||||
console.Render(new BreakdownChart()
|
||||
.Width(60)
|
||||
.AddItem("SCSS", 37, Color.Red)
|
||||
.AddItem("HTML", 28.3, Color.Blue)
|
||||
.AddItem("C#", 22.6, Color.Green)
|
||||
.AddItem("JavaScript", 6, Color.Yellow)
|
||||
.AddItem("Ruby", 6, Color.LightGreen)
|
||||
.AddItem("Shell", 0.1, Color.Aqua));
|
||||
|
||||
// Then
|
||||
await Verifier.Verify(console.Output);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[Expectation("ShowAsPercentages")]
|
||||
public async Task Should_Render_Correctly_With_Specific_Width()
|
||||
{
|
||||
// Given
|
||||
var console = new FakeConsole(width: 80);
|
||||
|
||||
// When
|
||||
console.Render(new BreakdownChart()
|
||||
.Width(60)
|
||||
.ShowAsPercentages()
|
||||
.AddItem("SCSS", 37, Color.Red)
|
||||
.AddItem("HTML", 28.3, Color.Blue)
|
||||
.AddItem("C#", 22.6, Color.Green)
|
||||
.AddItem("JavaScript", 6, Color.Yellow)
|
||||
.AddItem("Ruby", 6, Color.LightGreen)
|
||||
.AddItem("Shell", 0.1, Color.Aqua));
|
||||
|
||||
// Then
|
||||
await Verifier.Verify(console.Output);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[Expectation("HideTags")]
|
||||
public async Task Should_Render_Correctly_Without_Tags()
|
||||
{
|
||||
// Given
|
||||
var console = new FakeConsole(width: 80);
|
||||
|
||||
// When
|
||||
console.Render(new BreakdownChart()
|
||||
.Width(60)
|
||||
.HideTags()
|
||||
.AddItem("SCSS", 37, Color.Red)
|
||||
.AddItem("HTML", 28.3, Color.Blue)
|
||||
.AddItem("C#", 22.6, Color.Green)
|
||||
.AddItem("JavaScript", 6, Color.Yellow)
|
||||
.AddItem("Ruby", 6, Color.LightGreen)
|
||||
.AddItem("Shell", 0.1, Color.Aqua));
|
||||
|
||||
// Then
|
||||
await Verifier.Verify(console.Output);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[Expectation("HideTagValues")]
|
||||
public async Task Should_Render_Correctly_Without_Tag_Values()
|
||||
{
|
||||
// Given
|
||||
var console = new FakeConsole(width: 80);
|
||||
|
||||
// When
|
||||
console.Render(new BreakdownChart()
|
||||
.Width(60)
|
||||
.HideTagValues()
|
||||
.AddItem("SCSS", 37, Color.Red)
|
||||
.AddItem("HTML", 28.3, Color.Blue)
|
||||
.AddItem("C#", 22.6, Color.Green)
|
||||
.AddItem("JavaScript", 6, Color.Yellow)
|
||||
.AddItem("Ruby", 6, Color.LightGreen)
|
||||
.AddItem("Shell", 0.1, Color.Aqua));
|
||||
|
||||
// Then
|
||||
await Verifier.Verify(console.Output);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[Expectation("Culture")]
|
||||
public async Task Should_Render_Correctly_With_Specific_Culture()
|
||||
{
|
||||
// Given
|
||||
var console = new FakeConsole(width: 80);
|
||||
|
||||
// When
|
||||
console.Render(new BreakdownChart()
|
||||
.Width(60)
|
||||
.Culture("sv-SE")
|
||||
.AddItem("SCSS", 37, Color.Red)
|
||||
.AddItem("HTML", 28.3, Color.Blue)
|
||||
.AddItem("C#", 22.6, Color.Green)
|
||||
.AddItem("JavaScript", 6, Color.Yellow)
|
||||
.AddItem("Ruby", 6, Color.LightGreen)
|
||||
.AddItem("Shell", 0.1, Color.Aqua));
|
||||
|
||||
// Then
|
||||
await Verifier.Verify(console.Output);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[Expectation("FullSize")]
|
||||
public async Task Should_Render_FullSize_Mode_Correctly()
|
||||
{
|
||||
// Given
|
||||
var console = new FakeConsole(width: 80);
|
||||
|
||||
// When
|
||||
console.Render(new BreakdownChart()
|
||||
.Width(60)
|
||||
.FullSize()
|
||||
.AddItem("SCSS", 37, Color.Red)
|
||||
.AddItem("HTML", 28.3, Color.Blue)
|
||||
.AddItem("C#", 22.6, Color.Green)
|
||||
.AddItem("JavaScript", 6, Color.Yellow)
|
||||
.AddItem("Ruby", 6, Color.LightGreen)
|
||||
.AddItem("Shell", 0.1, Color.Aqua));
|
||||
|
||||
// Then
|
||||
await Verifier.Verify(console.Output);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[Expectation("Ansi")]
|
||||
public async Task Should_Render_Correct_Ansi()
|
||||
{
|
||||
// Given
|
||||
var console = new FakeAnsiConsole(ColorSystem.EightBit, width: 80);
|
||||
|
||||
// When
|
||||
console.Render(new BreakdownChart()
|
||||
.Width(60)
|
||||
.FullSize()
|
||||
.AddItem("SCSS", 37, Color.Red)
|
||||
.AddItem("HTML", 28.3, Color.Blue)
|
||||
.AddItem("C#", 22.6, Color.Green)
|
||||
.AddItem("JavaScript", 6, Color.Yellow)
|
||||
.AddItem("Ruby", 6, Color.LightGreen)
|
||||
.AddItem("Shell", 0.1, Color.Aqua));
|
||||
|
||||
// Then
|
||||
await Verifier.Verify(console.Output);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user