diff --git a/README.fa.md b/README.fa.md index 9eec6edb0..3ebcd9355 100644 --- a/README.fa.md +++ b/README.fa.md @@ -44,30 +44,13 @@ https://spectreconsole.net/

مثال‌ها

-برای بررسی `Spectre.Console` در عمل، ابزار سراسری -[dotnet-example](https://github.com/patriksvensson/dotnet-example) -را نصب کنید. - -
-> dotnet tool restore
-
- -حالا شما می‌توانید مثال‌های موجود در این مخزن را لیست کنید: - -
-> dotnet example
-
- -و برای اجرای مثال: - -
-> dotnet example tables
-
+To see `Spectre.Console` in action, please see the +[examples repository](https://github.com/spectreconsole/examples).

مجوز

-Copyright © Patrik Svensson, Phil Scott +Copyright © Patrik Svensson, Phil Scott, Nils Andresen, Cédric Luthi, Frank Ray
همانطور که Spectre.Console تحت مجوز MIT ارائه شده است؛ برای کسب اطلاعات بیشتر به مجوز مراجعه کنید. diff --git a/README.md b/README.md index 85a6e1f15..9724aaa5c 100644 --- a/README.md +++ b/README.md @@ -49,25 +49,8 @@ https://spectreconsole.net ## Examples -To see `Spectre.Console` in action, install the -[dotnet-example](https://github.com/patriksvensson/dotnet-example) -global tool. - -``` -> dotnet tool restore -``` - -Now you can list available examples in this repository: - -``` -> dotnet example -``` - -And to run an example: - -``` -> dotnet example tables -``` +To see `Spectre.Console` in action, please see the +[examples repository](https://github.com/spectreconsole/examples). ## Sponsors @@ -100,7 +83,7 @@ This project is supported by the [.NET Foundation](https://dotnetfoundation.org) ## License -Copyright © Patrik Svensson, Phil Scott, Nils Andresen +Copyright © Patrik Svensson, Phil Scott, Nils Andresen, Cédric Luthi, Frank Ray `Spectre.Console` is provided as-is under the MIT license. For more information see LICENSE. diff --git a/README.pt-BR.md b/README.pt-BR.md index f88a3e7de..267dab194 100644 --- a/README.pt-BR.md +++ b/README.pt-BR.md @@ -43,24 +43,8 @@ https://spectreconsole.net/ ## Exemplos -Para ver o `Spectre.Console` em ação, instale a ferramenta global -[dotnet-example](https://github.com/patriksvensson/dotnet-example). - -``` -> dotnet tool restore -``` - -Agora você pode listar os exemplos disponíveis neste repositório: - -``` -> dotnet example -``` - -E para executar um exemplo: - -``` -> dotnet example tables -``` +To see `Spectre.Console` in action, please see the +[examples repository](https://github.com/spectreconsole/examples). ## Patrocinadores @@ -83,7 +67,7 @@ Eu estou muito agradecido. ## Licença -Copyright © Patrik Svensson, Phil Scott, Nils Andresen +Copyright © Patrik Svensson, Phil Scott, Nils Andresen, Cédric Luthi, Frank Ray Spectre.Console é fornecido no estado em que se encontra sob a licença do MIT. Para obter mais informações, consulte o arquivo [LICENSE](LICENSE.md). diff --git a/README.zh.md b/README.zh.md index 981bb5bb2..f6298737e 100644 --- a/README.zh.md +++ b/README.zh.md @@ -39,23 +39,8 @@ https://spectreconsole.net/ ## 例子 -如果想直接运行`Spectre.Console`的例子,则需要安装[dotnet-example](https://github.com/patriksvensson/dotnet-example)工具。 - -``` -> dotnet tool restore -``` - -然后你可以列出仓库里的所有例子: - -``` -> dotnet example -``` - -跑一个看看效果: - -``` -> dotnet example tables -``` +To see `Spectre.Console` in action, please see the +[examples repository](https://github.com/spectreconsole/examples). ## Sponsors @@ -77,7 +62,7 @@ https://spectreconsole.net/ ## 开源许可 -版权所有 © Patrik Svensson, Phil Scott, Nils Andresen +版权所有 © Patrik Svensson, Phil Scott, Nils Andresen, Cédric Luthi, Frank Ray Spectre.Console 基于 MIT 协议提供。查看 LICENSE 文件了解更多信息。 diff --git a/build.cake b/build.cake index a51f98502..a79bcc41f 100644 --- a/build.cake +++ b/build.cake @@ -35,49 +35,11 @@ Task("Build") }); }); -Task("Build-Analyzer") - .IsDependentOn("Build") - .Does(context => -{ - DotNetBuild("./src/Spectre.Console.Analyzer.sln", new DotNetBuildSettings { - Configuration = configuration, - Verbosity = DotNetVerbosity.Minimal, - NoLogo = true, - NoIncremental = context.HasArgument("rebuild"), - MSBuildSettings = new DotNetMSBuildSettings() - .TreatAllWarningsAs(MSBuildTreatAllWarningsAs.Error) - }); -}); - -Task("Build-Examples") - .IsDependentOn("Build") - .Does(context => -{ - DotNetBuild("./examples/Examples.sln", new DotNetBuildSettings { - Configuration = configuration, - Verbosity = DotNetVerbosity.Minimal, - NoLogo = true, - NoIncremental = context.HasArgument("rebuild"), - MSBuildSettings = new DotNetMSBuildSettings() - .TreatAllWarningsAs(MSBuildTreatAllWarningsAs.Error) - }); -}); - Task("Test") .IsDependentOn("Build") - .IsDependentOn("Build-Analyzer") - .IsDependentOn("Build-Examples") .Does(context => { - DotNetTest("./test/Spectre.Console.Tests/Spectre.Console.Tests.csproj", new DotNetTestSettings { - Configuration = configuration, - Verbosity = DotNetVerbosity.Minimal, - NoLogo = true, - NoRestore = true, - NoBuild = true, - }); - - DotNetTest("./test/Spectre.Console.Cli.Tests/Spectre.Console.Cli.Tests.csproj", new DotNetTestSettings { + DotNetTest("./src/Tests/Spectre.Console.Tests/Spectre.Console.Tests.csproj", new DotNetTestSettings { Configuration = configuration, Verbosity = DotNetVerbosity.Minimal, NoLogo = true, @@ -85,7 +47,7 @@ Task("Test") NoBuild = true, }); - DotNetTest("./test/Spectre.Console.Analyzer.Tests/Spectre.Console.Analyzer.Tests.csproj", new DotNetTestSettings { + DotNetTest("./src/Tests/Spectre.Console.Cli.Tests/Spectre.Console.Cli.Tests.csproj", new DotNetTestSettings { Configuration = configuration, Verbosity = DotNetVerbosity.Minimal, NoLogo = true, @@ -108,17 +70,6 @@ Task("Package") MSBuildSettings = new DotNetMSBuildSettings() .TreatAllWarningsAs(MSBuildTreatAllWarningsAs.Error) }); - - context.DotNetPack($"./src/Spectre.Console.Analyzer.sln", new DotNetPackSettings { - Configuration = configuration, - Verbosity = DotNetVerbosity.Minimal, - NoLogo = true, - NoRestore = true, - NoBuild = true, - OutputDirectory = "./.artifacts", - MSBuildSettings = new DotNetMSBuildSettings() - .TreatAllWarningsAs(MSBuildTreatAllWarningsAs.Error) - }); }); Task("Publish-NuGet") diff --git a/examples/Cli/Delegates/BarSettings.cs b/examples/Cli/Delegates/BarSettings.cs deleted file mode 100644 index 3c8948439..000000000 --- a/examples/Cli/Delegates/BarSettings.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.ComponentModel; -using Spectre.Console.Cli; - -namespace Delegates; - -public static partial class Program -{ - public sealed class BarSettings : CommandSettings - { - [CommandOption("--count")] - [Description("The number of bars to print")] - [DefaultValue(3)] - public int Count { get; set; } - } -} diff --git a/examples/Cli/Delegates/Delegates.csproj b/examples/Cli/Delegates/Delegates.csproj deleted file mode 100644 index 233fbdff2..000000000 --- a/examples/Cli/Delegates/Delegates.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Exe - net8.0 - false - Delegates - Demonstrates how to specify commands as delegates. - Cli - false - - - - - - - diff --git a/examples/Cli/Delegates/Program.cs b/examples/Cli/Delegates/Program.cs deleted file mode 100644 index a91df345b..000000000 --- a/examples/Cli/Delegates/Program.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System.Threading.Tasks; -using Spectre.Console; -using Spectre.Console.Cli; - -namespace Delegates; - -public static partial class Program -{ - public static int Main(string[] args) - { - var app = new CommandApp(); - app.Configure(config => - { - config.AddDelegate("foo", Foo) - .WithDescription("Foos the bars"); - - config.AddDelegate("bar", Bar) - .WithDescription("Bars the foos"); - - config.AddAsyncDelegate("fooAsync", FooAsync) - .WithDescription("Foos the bars asynchronously"); - - config.AddAsyncDelegate("barAsync", BarAsync) - .WithDescription("Bars the foos asynchronously"); - }); - - return app.Run(args); - } - - private static int Foo(CommandContext context) - { - AnsiConsole.WriteLine("Foo"); - return 0; - } - - private static int Bar(CommandContext context, BarSettings settings) - { - for (var index = 0; index < settings.Count; index++) - { - AnsiConsole.WriteLine("Bar"); - } - - return 0; - } - - private static Task FooAsync(CommandContext context) - { - AnsiConsole.WriteLine("Foo"); - return Task.FromResult(0); - } - - private static Task BarAsync(CommandContext context, BarSettings settings) - { - for (var index = 0; index < settings.Count; index++) - { - AnsiConsole.WriteLine("Bar"); - } - - return Task.FromResult(0); - } -} diff --git a/examples/Cli/Demo/Commands/Add/AddPackageCommand.cs b/examples/Cli/Demo/Commands/Add/AddPackageCommand.cs deleted file mode 100644 index 1166d08cc..000000000 --- a/examples/Cli/Demo/Commands/Add/AddPackageCommand.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System.ComponentModel; -using Demo.Utilities; -using Spectre.Console.Cli; - -namespace Demo.Commands.Add; - -[Description("Add a NuGet package reference to the project.")] -public sealed class AddPackageCommand : Command -{ - public sealed class Settings : AddSettings - { - [CommandArgument(0, "")] - [Description("The package reference to add.")] - public string PackageName { get; set; } - - [CommandOption("-v|--version ")] - [Description("The version of the package to add.")] - public string Version { get; set; } - - [CommandOption("-f|--framework ")] - [Description("Add the reference only when targeting a specific framework.")] - public string Framework { get; set; } - - [CommandOption("--no-restore")] - [Description("Add the reference without performing restore preview and compatibility check.")] - public bool NoRestore { get; set; } - - [CommandOption("--source ")] - [Description("The NuGet package source to use during the restore.")] - public string Source { get; set; } - - [CommandOption("--package-directory ")] - [Description("The directory to restore packages to.")] - public string PackageDirectory { get; set; } - - [CommandOption("--interactive")] - [Description("Allows the command to stop and wait for user input or action (for example to complete authentication).")] - public bool Interactive { get; set; } - } - - public override int Execute(CommandContext context, Settings settings) - { - SettingsDumper.Dump(settings); - return 0; - } -} diff --git a/examples/Cli/Demo/Commands/Add/AddReferenceCommand.cs b/examples/Cli/Demo/Commands/Add/AddReferenceCommand.cs deleted file mode 100644 index 33e2b8a80..000000000 --- a/examples/Cli/Demo/Commands/Add/AddReferenceCommand.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.ComponentModel; -using Demo.Utilities; -using Spectre.Console.Cli; - -namespace Demo.Commands.Add; - -public sealed class AddReferenceCommand : Command -{ - public sealed class Settings : AddSettings - { - [CommandArgument(0, "")] - [Description("The package reference to add.")] - public string ProjectPath { get; set; } - - [CommandOption("-f|--framework ")] - [Description("Add the reference only when targeting a specific framework.")] - public string Framework { get; set; } - - [CommandOption("--interactive")] - [Description("Allows the command to stop and wait for user input or action (for example to complete authentication).")] - public bool Interactive { get; set; } - } - - public override int Execute(CommandContext context, Settings settings) - { - SettingsDumper.Dump(settings); - return 0; - } -} diff --git a/examples/Cli/Demo/Commands/Add/AddSettings.cs b/examples/Cli/Demo/Commands/Add/AddSettings.cs deleted file mode 100644 index c8f02ec91..000000000 --- a/examples/Cli/Demo/Commands/Add/AddSettings.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.ComponentModel; -using Spectre.Console.Cli; - -namespace Demo.Commands.Add; - -public abstract class AddSettings : CommandSettings -{ - [CommandArgument(0, "")] - [Description("The project file to operate on. If a file is not specified, the command will search the current directory for one.")] - public string Project { get; set; } -} diff --git a/examples/Cli/Demo/Commands/Run/RunCommand.cs b/examples/Cli/Demo/Commands/Run/RunCommand.cs deleted file mode 100644 index a1aa675e4..000000000 --- a/examples/Cli/Demo/Commands/Run/RunCommand.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System.ComponentModel; -using Demo.Utilities; -using Spectre.Console.Cli; - -namespace Demo.Commands.Run; - -[Description("Build and run a .NET project output.")] -public sealed class RunCommand : Command -{ - public sealed class Settings : CommandSettings - { - [CommandOption("-c|--configuration ")] - [Description("The configuration to run for. The default for most projects is '[grey]Debug[/]'.")] - [DefaultValue("Debug")] - public string Configuration { get; set; } - - [CommandOption("-f|--framework ")] - [Description("The target framework to run for. The target framework must also be specified in the project file.")] - public string Framework { get; set; } - - [CommandOption("-r|--runtime ")] - [Description("The target runtime to run for.")] - public string RuntimeIdentifier { get; set; } - - [CommandOption("-p|--project ")] - [Description("The path to the project file to run (defaults to the current directory if there is only one project).")] - public string ProjectPath { get; set; } - - [CommandOption("--launch-profile ")] - [Description("The name of the launch profile (if any) to use when launching the application.")] - public string LaunchProfile { get; set; } - - [CommandOption("--no-launch-profile")] - [Description("Do not attempt to use [grey]launchSettings.json[/] to configure the application.")] - public bool NoLaunchProfile { get; set; } - - [CommandOption("--no-build")] - [Description("Do not build the project before running. Implies [grey]--no-restore[/].")] - public bool NoBuild { get; set; } - - [CommandOption("--interactive")] - [Description("Allows the command to stop and wait for user input or action (for example to complete authentication).")] - public string Interactive { get; set; } - - [CommandOption("--no-restore")] - [Description("Do not restore the project before building.")] - public bool NoRestore { get; set; } - - [CommandOption("--verbosity ")] - [Description("Set the MSBuild verbosity level. Allowed values are q[grey]uiet[/], m[grey]inimal[/], n[grey]ormal[/], d[grey]etailed[/], and diag[grey]nostic[/].")] - [TypeConverter(typeof(VerbosityConverter))] - [DefaultValue(Verbosity.Normal)] - public Verbosity Verbosity { get; set; } - - [CommandOption("--no-dependencies")] - [Description("Do not restore project-to-project references and only restore the specified project.")] - public bool NoDependencies { get; set; } - - [CommandOption("--force")] - [Description("Force all dependencies to be resolved even if the last restore was successful. This is equivalent to deleting [grey]project.assets.json[/].")] - public bool Force { get; set; } - } - - public override int Execute(CommandContext context, Settings settings) - { - SettingsDumper.Dump(settings); - return 0; - } -} diff --git a/examples/Cli/Demo/Commands/Serve/ServeCommand.cs b/examples/Cli/Demo/Commands/Serve/ServeCommand.cs deleted file mode 100644 index 58d127101..000000000 --- a/examples/Cli/Demo/Commands/Serve/ServeCommand.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.ComponentModel; -using Demo.Utilities; -using Spectre.Console.Cli; - -namespace Demo.Commands.Serve; - -[Description("Launches a web server in the current working directory and serves all files in it.")] -public sealed class ServeCommand : Command -{ - public sealed class Settings : CommandSettings - { - [CommandOption("-p|--port ")] - [Description("Port to use. Defaults to [grey]8080[/]. Use [grey]0[/] for a dynamic port.")] - public int Port { get; set; } - - [CommandOption("-o|--open-browser [BROWSER]")] - [Description("Open a web browser when the server starts. You can also specify which browser to use. If none is specified, the default one will be used.")] - public FlagValue OpenBrowser { get; set; } - } - - public override int Execute(CommandContext context, Settings settings) - { - if (settings.OpenBrowser.IsSet) - { - var browser = settings.OpenBrowser.Value; - if (browser != null) - { - Console.WriteLine($"Open in {browser}"); - } - else - { - Console.WriteLine($"Open in default browser."); - } - } - - SettingsDumper.Dump(settings); - return 0; - } -} diff --git a/examples/Cli/Demo/Demo.csproj b/examples/Cli/Demo/Demo.csproj deleted file mode 100644 index 8e4f05c73..000000000 --- a/examples/Cli/Demo/Demo.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Exe - net8.0 - false - Demo - Demonstrates the most common use cases of Spectre.Cli. - Cli - false - - - - - - - diff --git a/examples/Cli/Demo/Program.cs b/examples/Cli/Demo/Program.cs deleted file mode 100644 index f6c340329..000000000 --- a/examples/Cli/Demo/Program.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Demo.Commands; -using Demo.Commands.Add; -using Demo.Commands.Run; -using Demo.Commands.Serve; -using Spectre.Console.Cli; - -namespace Demo; - -public static class Program -{ - public static int Main(string[] args) - { - var app = new CommandApp(); - app.Configure(config => - { - config.SetApplicationName("fake-dotnet"); - config.ValidateExamples(); - config.AddExample("run", "--no-build"); - - // Run - config.AddCommand("run"); - - // Add - config.AddBranch("add", add => - { - add.SetDescription("Add a package or reference to a .NET project"); - add.AddCommand("package"); - add.AddCommand("reference"); - }); - - // Serve - config.AddCommand("serve") - .WithExample("serve", "-o", "firefox") - .WithExample("serve", "--port", "80", "-o", "firefox"); - }); - - return app.Run(args); - } -} diff --git a/examples/Cli/Demo/Utilities/SettingsDumper.cs b/examples/Cli/Demo/Utilities/SettingsDumper.cs deleted file mode 100644 index 4445927bb..000000000 --- a/examples/Cli/Demo/Utilities/SettingsDumper.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Spectre.Console; -using Spectre.Console.Cli; - -namespace Demo.Utilities; - -public static class SettingsDumper -{ - public static void Dump(CommandSettings settings) - { - var table = new Table().RoundedBorder(); - table.AddColumn("[grey]Name[/]"); - table.AddColumn("[grey]Value[/]"); - - var properties = settings.GetType().GetProperties(); - foreach (var property in properties) - { - var value = property.GetValue(settings) - ?.ToString() - ?.Replace("[", "[["); - - table.AddRow( - property.Name, - value ?? "[grey]null[/]"); - } - - AnsiConsole.Write(table); - } -} diff --git a/examples/Cli/Demo/Verbosity.cs b/examples/Cli/Demo/Verbosity.cs deleted file mode 100644 index 84fc3b471..000000000 --- a/examples/Cli/Demo/Verbosity.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Globalization; - -namespace Demo; - -public enum Verbosity -{ - Quiet, - Minimal, - Normal, - Detailed, - Diagnostic -} - -public sealed class VerbosityConverter : TypeConverter -{ - private readonly Dictionary _lookup; - - public VerbosityConverter() - { - _lookup = new Dictionary(StringComparer.OrdinalIgnoreCase) - { - { "q", Verbosity.Quiet }, - { "quiet", Verbosity.Quiet }, - { "m", Verbosity.Minimal }, - { "minimal", Verbosity.Minimal }, - { "n", Verbosity.Normal }, - { "normal", Verbosity.Normal }, - { "d", Verbosity.Detailed }, - { "detailed", Verbosity.Detailed }, - { "diag", Verbosity.Diagnostic }, - { "diagnostic", Verbosity.Diagnostic } - }; - } - - public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) - { - if (value is string stringValue) - { - var result = _lookup.TryGetValue(stringValue, out var verbosity); - if (!result) - { - const string format = "The value '{0}' is not a valid verbosity."; - var message = string.Format(CultureInfo.InvariantCulture, format, value); - throw new InvalidOperationException(message); - } - return verbosity; - } - throw new NotSupportedException("Can't convert value to verbosity."); - } -} diff --git a/examples/Cli/Dynamic/Dynamic.csproj b/examples/Cli/Dynamic/Dynamic.csproj deleted file mode 100644 index 739192f2f..000000000 --- a/examples/Cli/Dynamic/Dynamic.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Exe - net8.0 - false - Dynamic - Demonstrates how to define dynamic commands. - Cli - false - - - - - - - diff --git a/examples/Cli/Dynamic/MyCommand.cs b/examples/Cli/Dynamic/MyCommand.cs deleted file mode 100644 index 60128cbba..000000000 --- a/examples/Cli/Dynamic/MyCommand.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using Spectre.Console; -using Spectre.Console.Cli; - -namespace Dynamic; - -public sealed class MyCommand : Command -{ - public override int Execute(CommandContext context) - { - if (!(context.Data is int data)) - { - throw new InvalidOperationException("Command has no associated data."); - - } - - AnsiConsole.WriteLine("Value = {0}", data); - return 0; - } -} diff --git a/examples/Cli/Dynamic/Program.cs b/examples/Cli/Dynamic/Program.cs deleted file mode 100644 index 9dc916f08..000000000 --- a/examples/Cli/Dynamic/Program.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Linq; -using Spectre.Console.Cli; - -namespace Dynamic; - -public static class Program -{ - public static int Main(string[] args) - { - var app = new CommandApp(); - app.Configure(config => - { - foreach (var index in Enumerable.Range(1, 10)) - { - config.AddCommand($"c{index}") - .WithDescription($"Prints the number {index}") - .WithData(index); - } - }); - - return app.Run(args); - } -} diff --git a/examples/Cli/Help/CustomHelpProvider.cs b/examples/Cli/Help/CustomHelpProvider.cs deleted file mode 100644 index fd9c01fb3..000000000 --- a/examples/Cli/Help/CustomHelpProvider.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.Linq; -using Spectre.Console; -using Spectre.Console.Cli; -using Spectre.Console.Cli.Help; -using Spectre.Console.Rendering; - -namespace Help; - -/// -/// Example showing how to extend the built-in Spectre.Console help provider -/// by rendering a custom banner at the top of the help information -/// -internal class CustomHelpProvider : HelpProvider -{ - public CustomHelpProvider(ICommandAppSettings settings) - : base(settings) - { - } - - public override IEnumerable GetHeader(ICommandModel model, ICommandInfo? command) - { - return new[] - { - new Text("--------------------------------------"), Text.NewLine, - new Text("--- CUSTOM HELP PROVIDER ---"), Text.NewLine, - new Text("--------------------------------------"), Text.NewLine, - Text.NewLine, - }; - } -} \ No newline at end of file diff --git a/examples/Cli/Help/DefaultCommand.cs b/examples/Cli/Help/DefaultCommand.cs deleted file mode 100644 index 71613d0a9..000000000 --- a/examples/Cli/Help/DefaultCommand.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Spectre.Console; -using Spectre.Console.Cli; - -namespace Help; - -public sealed class DefaultCommand : Command -{ - private IAnsiConsole _console; - - public DefaultCommand(IAnsiConsole console) - { - _console = console; - } - - public override int Execute(CommandContext context) - { - _console.WriteLine("Hello world"); - return 0; - } -} \ No newline at end of file diff --git a/examples/Cli/Help/Help.csproj b/examples/Cli/Help/Help.csproj deleted file mode 100644 index d93c525d6..000000000 --- a/examples/Cli/Help/Help.csproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - Exe - net8.0 - enable - enable - Help - Demonstrates how to extend the built-in Spectre.Console help provider to render a custom banner at the top of the help information. - Cli - false - - - - - - - diff --git a/examples/Cli/Help/Program.cs b/examples/Cli/Help/Program.cs deleted file mode 100644 index aba42b037..000000000 --- a/examples/Cli/Help/Program.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Spectre.Console.Cli; -using Spectre.Console.Cli.Help; - -namespace Help; - -public static class Program -{ - public static int Main(string[] args) - { - var app = new CommandApp(); - - app.Configure(config => - { - // Register the custom help provider - config.SetHelpProvider(new CustomHelpProvider(config.Settings)); - - // Render an unstyled help text for maximum accessibility - config.Settings.HelpProviderStyles = null; - }); - - return app.Run(args); - } -} diff --git a/examples/Cli/Injection/Commands/DefaultCommand.cs b/examples/Cli/Injection/Commands/DefaultCommand.cs deleted file mode 100644 index b31cc8a21..000000000 --- a/examples/Cli/Injection/Commands/DefaultCommand.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.ComponentModel; -using Spectre.Console.Cli; - -namespace Injection.Commands; - -public sealed class DefaultCommand : Command -{ - private readonly IGreeter _greeter; - - public sealed class Settings : CommandSettings - { - [CommandOption("-n|--name ")] - [Description("The person or thing to greet.")] - [DefaultValue("World")] - public string Name { get; set; } - } - - public DefaultCommand(IGreeter greeter) - { - _greeter = greeter ?? throw new ArgumentNullException(nameof(greeter)); - } - - public override int Execute(CommandContext context, Settings settings) - { - _greeter.Greet(settings.Name); - return 0; - } -} diff --git a/examples/Cli/Injection/IGreeter.cs b/examples/Cli/Injection/IGreeter.cs deleted file mode 100644 index 1ff49fb74..000000000 --- a/examples/Cli/Injection/IGreeter.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Spectre.Console; - -namespace Injection; - -public interface IGreeter -{ - void Greet(string name); -} - -public sealed class HelloWorldGreeter : IGreeter -{ - public void Greet(string name) - { - AnsiConsole.WriteLine($"Hello {name}!"); - } -} diff --git a/examples/Cli/Injection/Infrastructure/TypeRegistrar.cs b/examples/Cli/Injection/Infrastructure/TypeRegistrar.cs deleted file mode 100644 index 6651e6794..000000000 --- a/examples/Cli/Injection/Infrastructure/TypeRegistrar.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using Microsoft.Extensions.DependencyInjection; -using Spectre.Console.Cli; - -namespace Injection.Infrastructure; - -public sealed class TypeRegistrar : ITypeRegistrar -{ - private readonly IServiceCollection _builder; - - public TypeRegistrar(IServiceCollection builder) - { - _builder = builder; - } - - public ITypeResolver Build() - { - return new TypeResolver(_builder.BuildServiceProvider()); - } - - public void Register(Type service, Type implementation) - { - _builder.AddSingleton(service, implementation); - } - - public void RegisterInstance(Type service, object implementation) - { - _builder.AddSingleton(service, implementation); - } - - public void RegisterLazy(Type service, Func func) - { - if (func is null) - { - throw new ArgumentNullException(nameof(func)); - } - - _builder.AddSingleton(service, (provider) => func()); - } -} diff --git a/examples/Cli/Injection/Infrastructure/TypeResolver.cs b/examples/Cli/Injection/Infrastructure/TypeResolver.cs deleted file mode 100644 index f3cf618dd..000000000 --- a/examples/Cli/Injection/Infrastructure/TypeResolver.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using Spectre.Console.Cli; - -namespace Injection.Infrastructure; - -public sealed class TypeResolver : ITypeResolver, IDisposable -{ - private readonly IServiceProvider _provider; - - public TypeResolver(IServiceProvider provider) - { - _provider = provider ?? throw new ArgumentNullException(nameof(provider)); - } - - public object Resolve(Type type) - { - if (type == null) - { - return null; - } - - return _provider.GetService(type); - } - - public void Dispose() - { - if (_provider is IDisposable disposable) - { - disposable.Dispose(); - } - } -} diff --git a/examples/Cli/Injection/Injection.csproj b/examples/Cli/Injection/Injection.csproj deleted file mode 100644 index a07bc9fea..000000000 --- a/examples/Cli/Injection/Injection.csproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - Exe - net8.0 - false - Injection - Demonstrates how to use dependency injection with Spectre.Cli. - Cli - false - - - - - - - - - - - diff --git a/examples/Cli/Injection/Program.cs b/examples/Cli/Injection/Program.cs deleted file mode 100644 index 813560db4..000000000 --- a/examples/Cli/Injection/Program.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Injection.Commands; -using Injection.Infrastructure; -using Microsoft.Extensions.DependencyInjection; -using Spectre.Console.Cli; - -namespace Injection; - -public class Program -{ - public static int Main(string[] args) - { - // Create a type registrar and register any dependencies. - // A type registrar is an adapter for a DI framework. - var registrations = new ServiceCollection(); - registrations.AddSingleton(); - var registrar = new TypeRegistrar(registrations); - - // Create a new command app with the registrar - // and run it with the provided arguments. - var app = new CommandApp(registrar); - return app.Run(args); - } -} diff --git a/examples/Cli/Logging/Commands/HelloCommand.cs b/examples/Cli/Logging/Commands/HelloCommand.cs deleted file mode 100644 index 21e824441..000000000 --- a/examples/Cli/Logging/Commands/HelloCommand.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Microsoft.Extensions.Logging; -using Spectre.Console; -using Spectre.Console.Cli; - -namespace Logging.Commands; - -public class HelloCommand : Command -{ - private ILogger _logger; - private IAnsiConsole _console; - - public HelloCommand(IAnsiConsole console, ILogger logger) - { - _console = console; - _logger = logger; - _logger.LogDebug("{0} initialized", nameof(HelloCommand)); - } - - public class Settings : LogCommandSettings - { - [CommandArgument(0, "[Name]")] - public string Name { get; set; } - } - - - public override int Execute(CommandContext context, Settings settings) - { - _logger.LogInformation("Starting my command"); - AnsiConsole.MarkupLine($"Hello, [blue]{settings.Name}[/]"); - _logger.LogInformation("Completed my command"); - - return 0; - } -} diff --git a/examples/Cli/Logging/Commands/LogCommandSettings.cs b/examples/Cli/Logging/Commands/LogCommandSettings.cs deleted file mode 100644 index 890953def..000000000 --- a/examples/Cli/Logging/Commands/LogCommandSettings.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Globalization; -using Serilog.Events; -using Spectre.Console.Cli; - -namespace Logging.Commands; - -public class LogCommandSettings : CommandSettings -{ - [CommandOption("--logFile")] - [Description("Path and file name for logging")] - public string LogFile { get; set; } - - [CommandOption("--logLevel")] - [Description("Minimum level for logging")] - [TypeConverter(typeof(VerbosityConverter))] - [DefaultValue(LogEventLevel.Information)] - public LogEventLevel LogLevel { get; set; } -} - -public sealed class VerbosityConverter : TypeConverter -{ - private readonly Dictionary _lookup; - - public VerbosityConverter() - { - _lookup = new Dictionary(StringComparer.OrdinalIgnoreCase) - { - {"d", LogEventLevel.Debug}, - {"v", LogEventLevel.Verbose}, - {"i", LogEventLevel.Information}, - {"w", LogEventLevel.Warning}, - {"e", LogEventLevel.Error}, - {"f", LogEventLevel.Fatal} - }; - } - - public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) - { - if (value is string stringValue) - { - var result = _lookup.TryGetValue(stringValue, out var verbosity); - if (!result) - { - const string format = "The value '{0}' is not a valid verbosity."; - var message = string.Format(CultureInfo.InvariantCulture, format, value); - throw new InvalidOperationException(message); - } - return verbosity; - } - throw new NotSupportedException("Can't convert value to verbosity."); - } -} diff --git a/examples/Cli/Logging/Infrastructure/LogInterceptor.cs b/examples/Cli/Logging/Infrastructure/LogInterceptor.cs deleted file mode 100644 index 54e2653cc..000000000 --- a/examples/Cli/Logging/Infrastructure/LogInterceptor.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Logging.Commands; -using Serilog.Core; -using Spectre.Console.Cli; - -namespace Logging.Infrastructure; - -public class LogInterceptor : ICommandInterceptor -{ - public static readonly LoggingLevelSwitch LogLevel = new(); - - public void Intercept(CommandContext context, CommandSettings settings) - { - if (settings is LogCommandSettings logSettings) - { - LoggingEnricher.Path = logSettings.LogFile ?? "application.log"; - LogLevel.MinimumLevel = logSettings.LogLevel; - } - } -} diff --git a/examples/Cli/Logging/Infrastructure/LoggingEnricher.cs b/examples/Cli/Logging/Infrastructure/LoggingEnricher.cs deleted file mode 100644 index 266260dd3..000000000 --- a/examples/Cli/Logging/Infrastructure/LoggingEnricher.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Serilog.Core; -using Serilog.Events; - -namespace Logging.Infrastructure; - -internal class LoggingEnricher : ILogEventEnricher -{ - private string _cachedLogFilePath; - private LogEventProperty _cachedLogFilePathProperty; - - // this path and level will be set by the LogInterceptor.cs after parsing the settings - public static string Path = string.Empty; - - public const string LogFilePathPropertyName = "LogFilePath"; - - public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory) - { - // the settings might not have a path or we might not be within a command in which case - // we won't have the setting so a default value for the log file will be required - LogEventProperty logFilePathProperty; - - if (_cachedLogFilePathProperty != null && Path.Equals(_cachedLogFilePath)) - { - // Path hasn't changed, so let's use the cached property - logFilePathProperty = _cachedLogFilePathProperty; - } - else - { - // We've got a new path for the log. Let's create a new property - // and cache it for future log events to use - _cachedLogFilePath = Path; - _cachedLogFilePathProperty = logFilePathProperty = propertyFactory.CreateProperty(LogFilePathPropertyName, Path); - } - - logEvent.AddPropertyIfAbsent(logFilePathProperty); - } -} diff --git a/examples/Cli/Logging/Infrastructure/TypeRegistrar.cs b/examples/Cli/Logging/Infrastructure/TypeRegistrar.cs deleted file mode 100644 index f1169fc3c..000000000 --- a/examples/Cli/Logging/Infrastructure/TypeRegistrar.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using Microsoft.Extensions.DependencyInjection; -using Spectre.Console.Cli; - -namespace Logging.Infrastructure; - -public sealed class TypeRegistrar : ITypeRegistrar -{ - private readonly IServiceCollection _builder; - - public TypeRegistrar(IServiceCollection builder) - { - _builder = builder; - } - - public ITypeResolver Build() - { - return new TypeResolver(_builder.BuildServiceProvider()); - } - - public void Register(Type service, Type implementation) - { - _builder.AddSingleton(service, implementation); - } - - public void RegisterInstance(Type service, object implementation) - { - _builder.AddSingleton(service, implementation); - } - - public void RegisterLazy(Type service, Func func) - { - if (func is null) - { - throw new ArgumentNullException(nameof(func)); - } - - _builder.AddSingleton(service, _ => func()); - } -} diff --git a/examples/Cli/Logging/Infrastructure/TypeResolver.cs b/examples/Cli/Logging/Infrastructure/TypeResolver.cs deleted file mode 100644 index bd2b5f7d7..000000000 --- a/examples/Cli/Logging/Infrastructure/TypeResolver.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using Spectre.Console.Cli; - -namespace Logging.Infrastructure; - -public sealed class TypeResolver : ITypeResolver -{ - private readonly IServiceProvider _provider; - - public TypeResolver(IServiceProvider provider) - { - _provider = provider ?? throw new ArgumentNullException(nameof(provider)); - } - - public object Resolve(Type type) - { - if (type == null) - { - return null; - } - - return _provider.GetService(type); - } -} diff --git a/examples/Cli/Logging/Logging.csproj b/examples/Cli/Logging/Logging.csproj deleted file mode 100644 index 72fe265da..000000000 --- a/examples/Cli/Logging/Logging.csproj +++ /dev/null @@ -1,26 +0,0 @@ - - - - Exe - net8.0 - false - Logging - Demonstrates how to dynamically configure Serilog for logging using parameters from a command. - Cli - false - disable - - - - - - - - - - - - - - - diff --git a/examples/Cli/Logging/Program.cs b/examples/Cli/Logging/Program.cs deleted file mode 100644 index bfab659df..000000000 --- a/examples/Cli/Logging/Program.cs +++ /dev/null @@ -1,54 +0,0 @@ -using Logging.Commands; -using Logging.Infrastructure; -using Microsoft.Extensions.DependencyInjection; -using Serilog; -using Spectre.Console.Cli; - -/* - * Dynamically control serilog configuration via command line parameters - * - * This works around the chicken and egg situation with configuring serilog via the command line. - * The logger needs to be configured prior to executing the parser, but the logger needs the parsed values - * to be configured. By using serilog.sinks.map we can defer configuration. We use a LogLevelSwitch to control the - * logging levels dynamically, and then we use a serilog enricher that has its state populated via a - * Spectre.Console CommandInterceptor - */ - -namespace Logging; - -public class Program -{ - static int Main(string[] args) - { - // to retrieve the log file name, we must first parse the command settings - // this will require us to delay setting the file path for the file writer. - // With serilog we can use an enricher and Serilog.Sinks.Map to dynamically - // pull this setting. - var serviceCollection = new ServiceCollection() - .AddLogging(configure => - configure.AddSerilog(new LoggerConfiguration() - // log level will be dynamically be controlled by our log interceptor upon running - .MinimumLevel.ControlledBy(LogInterceptor.LogLevel) - // the log enricher will add a new property with the log file path from the settings - // that we can use to set the path dynamically - .Enrich.With() - // serilog.sinks.map will defer the configuration of the sink to be ondemand - // allowing us to look at the properties set by the enricher to set the path appropriately - .WriteTo.Map(LoggingEnricher.LogFilePathPropertyName, - (logFilePath, wt) => wt.File($"{logFilePath}"), 1) - .CreateLogger() - ) - ); - - var registrar = new TypeRegistrar(serviceCollection); - var app = new CommandApp(registrar); - - app.Configure(config => - { - config.SetInterceptor(new LogInterceptor()); // add the interceptor - config.AddCommand("hello"); - }); - - return app.Run(args); - } -} diff --git a/examples/Console/AlternateScreen/AlternateScreen.csproj b/examples/Console/AlternateScreen/AlternateScreen.csproj deleted file mode 100644 index e048827bd..000000000 --- a/examples/Console/AlternateScreen/AlternateScreen.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Screens - Demonstrates how to use alternate screens. - Widgets - - - - - - - diff --git a/examples/Console/AlternateScreen/Program.cs b/examples/Console/AlternateScreen/Program.cs deleted file mode 100644 index 4415ab0dc..000000000 --- a/examples/Console/AlternateScreen/Program.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Check if we can use alternate screen buffers -using Spectre.Console; - -if (!AnsiConsole.Profile.Capabilities.AlternateBuffer) -{ - AnsiConsole.MarkupLine( - "[red]Alternate screen buffers are not supported " + - "by your terminal[/] [yellow]:([/]"); - - return; -} - -// Write to the terminal -AnsiConsole.Write(new Rule("[yellow]Normal universe[/]")); -AnsiConsole.Write(new Panel("Hello World!")); -AnsiConsole.MarkupLine("[grey]Press a key to continue[/]"); -AnsiConsole.Console.Input.ReadKey(true); - -AnsiConsole.AlternateScreen(() => -{ - // Now we're in another terminal screen buffer - AnsiConsole.Write(new Rule("[red]Mirror universe[/]")); - AnsiConsole.Write(new Panel("[red]Welcome to the upside down![/]")); - AnsiConsole.MarkupLine("[grey]Press a key to return[/]"); - AnsiConsole.Console.Input.ReadKey(true); -}); \ No newline at end of file diff --git a/examples/Console/Borders/Borders.csproj b/examples/Console/Borders/Borders.csproj deleted file mode 100644 index 403071523..000000000 --- a/examples/Console/Borders/Borders.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Borders - Demonstrates the different kind of borders. - Widgets - - - - - - - diff --git a/examples/Console/Borders/Program.cs b/examples/Console/Borders/Program.cs deleted file mode 100644 index 2b755ae82..000000000 --- a/examples/Console/Borders/Program.cs +++ /dev/null @@ -1,86 +0,0 @@ -using Spectre.Console; -using Spectre.Console.Rendering; - -namespace Borders; - -public static class Program -{ - public static void Main() - { - // Render panel borders - HorizontalRule("PANEL BORDERS"); - PanelBorders(); - - // Render table borders - HorizontalRule("TABLE BORDERS"); - TableBorders(); - } - - private static void PanelBorders() - { - static IRenderable CreatePanel(string name, BoxBorder border) - { - return - new Panel($"This is a panel with\nthe [yellow]{name}[/] border.") - .Header($" [blue]{name}[/] ", Justify.Center) - .Border(border) - .BorderStyle(Style.Parse("grey")); - } - - var items = new[] - { - CreatePanel("Ascii", BoxBorder.Ascii), - CreatePanel("Square", BoxBorder.Square), - CreatePanel("Rounded", BoxBorder.Rounded), - CreatePanel("Heavy", BoxBorder.Heavy), - CreatePanel("Double", BoxBorder.Double), - CreatePanel("None", BoxBorder.None), - }; - - AnsiConsole.Write( - new Padder( - new Columns(items).PadRight(2), - new Padding(2, 0, 0, 0))); - } - - private static void TableBorders() - { - static IRenderable CreateTable(string name, TableBorder border) - { - var table = new Table().Border(border); - table.ShowRowSeparators(); - table.AddColumn("[yellow]Header 1[/]", c => c.Footer("[grey]Footer 1[/]")); - table.AddColumn("[yellow]Header 2[/]", col => col.Footer("[grey]Footer 2[/]").RightAligned()); - table.AddRow("Cell", "Cell"); - table.AddRow("Cell", "Cell"); - - return new Panel(table) - .Header($" [blue]{name}[/] ", Justify.Center) - .PadBottom(1) - .NoBorder(); - } - - var items = new[] - { - CreateTable("Ascii", TableBorder.Ascii), CreateTable("Ascii2", TableBorder.Ascii2), - CreateTable("AsciiDoubleHead", TableBorder.AsciiDoubleHead), - CreateTable("Horizontal", TableBorder.Horizontal), CreateTable("Simple", TableBorder.Simple), - CreateTable("SimpleHeavy", TableBorder.SimpleHeavy), CreateTable("Minimal", TableBorder.Minimal), - CreateTable("MinimalHeavyHead", TableBorder.MinimalHeavyHead), - CreateTable("MinimalDoubleHead", TableBorder.MinimalDoubleHead), - CreateTable("Square", TableBorder.Square), CreateTable("Rounded", TableBorder.Rounded), - CreateTable("Heavy", TableBorder.Heavy), CreateTable("HeavyEdge", TableBorder.HeavyEdge), - CreateTable("HeavyHead", TableBorder.HeavyHead), CreateTable("Double", TableBorder.Double), - CreateTable("DoubleEdge", TableBorder.DoubleEdge), CreateTable("Markdown", TableBorder.Markdown), - }; - - AnsiConsole.Write(new Columns(items).Collapse()); - } - - private static void HorizontalRule(string title) - { - AnsiConsole.WriteLine(); - AnsiConsole.Write(new Rule($"[white bold]{title}[/]").RuleStyle("grey").LeftJustified()); - AnsiConsole.WriteLine(); - } -} \ No newline at end of file diff --git a/examples/Console/Calendars/Calendars.csproj b/examples/Console/Calendars/Calendars.csproj deleted file mode 100644 index c888117e7..000000000 --- a/examples/Console/Calendars/Calendars.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Calendars - Demonstrates how to render calendars. - Widgets - - - - - - - diff --git a/examples/Console/Calendars/Program.cs b/examples/Console/Calendars/Program.cs deleted file mode 100644 index d27011584..000000000 --- a/examples/Console/Calendars/Program.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Spectre.Console; - -namespace Calendars; - -public static class Program -{ - public static void Main(string[] args) - { - AnsiConsole.WriteLine(); - AnsiConsole.Write(new Calendar(2020, 10) - .RoundedBorder() - .HighlightStyle(Style.Parse("red")) - .HeaderStyle(Style.Parse("yellow")) - .AddCalendarEvent("An event", 2020, 9, 22) - .AddCalendarEvent("Another event", 2020, 10, 2) - .AddCalendarEvent("A third event", 2020, 10, 13)); - } -} diff --git a/examples/Console/Canvas/Canvas.csproj b/examples/Console/Canvas/Canvas.csproj deleted file mode 100644 index ddd0d8a88..000000000 --- a/examples/Console/Canvas/Canvas.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - Exe - net8.0 - Canvas - Demonstrates how to render pixels and images. - Widgets - - - - - - - - - - PreserveNewest - - - - diff --git a/examples/Console/Canvas/Program.cs b/examples/Console/Canvas/Program.cs deleted file mode 100644 index 3e537ddfc..000000000 --- a/examples/Console/Canvas/Program.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System.Diagnostics; -using System.Reflection; -using SixLabors.ImageSharp.Processing; -using Spectre.Console; -using Spectre.Console.Rendering; - -namespace Canvas; - -public static class Program -{ - public static void Main() - { - // Draw an image using CanvasImage powered by ImageSharp. - // This requires the "Spectre.Console.ImageSharp" NuGet package. - var image = new CanvasImage("cake.png"); - image.BilinearResampler(); - image.MaxWidth(16); - Render(image, "Image from file (16 wide)"); - - // Draw image again, but without max width - image.NoMaxWidth(); - image.Mutate(ctx => ctx.Grayscale().Rotate(-45).EntropyCrop()); - Render(image, "Image from file (fit, greyscale, rotated)"); - - // Draw image again, but load from embedded resource rather than file - using (var fileStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Canvas.cake.png")) - { - Debug.Assert(fileStream != null); - var embeddedImage = new CanvasImage(fileStream); - embeddedImage.BilinearResampler(); - embeddedImage.MaxWidth(16); - Render(embeddedImage, "Image from embedded resource (16 wide)"); - } - } - - private static void Render(IRenderable canvas, string title) - { - AnsiConsole.WriteLine(); - AnsiConsole.Write(new Rule($"[yellow]{title}[/]").LeftJustified().RuleStyle("grey")); - AnsiConsole.WriteLine(); - AnsiConsole.Write(canvas); - } -} diff --git a/examples/Console/Canvas/cake.png b/examples/Console/Canvas/cake.png deleted file mode 100644 index f11d285c9..000000000 Binary files a/examples/Console/Canvas/cake.png and /dev/null differ diff --git a/examples/Console/Charts/Charts.csproj b/examples/Console/Charts/Charts.csproj deleted file mode 100644 index f08d5b956..000000000 --- a/examples/Console/Charts/Charts.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Charts - Demonstrates how to render charts in a console. - Widgets - - - - - - - diff --git a/examples/Console/Charts/Program.cs b/examples/Console/Charts/Program.cs deleted file mode 100644 index 5aadfa8a0..000000000 --- a/examples/Console/Charts/Program.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Spectre.Console; -using Spectre.Console.Rendering; - -namespace Charts; - -public static class Program -{ - public static void Main() - { - // Render a bar chart - AnsiConsole.WriteLine(); - Render("Fruits per month", new BarChart() - .Width(60) - .Label("[green bold underline]Number of fruits[/]") - .CenterLabel() - .AddItem("Apple", 12, Color.Yellow) - .AddItem("Orange", 54, Color.Green) - .AddItem("Banana", 33, Color.Red)); - - // Render a breakdown chart - AnsiConsole.WriteLine(); - Render("Languages used", new BreakdownChart() - .FullSize() - .Width(60) - .ShowPercentage() - .WithValueColor(Color.Orange1) - .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)); - } - - private static void Render(string title, IRenderable chart) - { - AnsiConsole.Write( - new Panel(chart) - .Padding(1, 1) - .Header(title)); - } -} diff --git a/examples/Console/Colors/Colors.csproj b/examples/Console/Colors/Colors.csproj deleted file mode 100644 index 0258570a5..000000000 --- a/examples/Console/Colors/Colors.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Colors - Demonstrates how to use [yellow]c[/][red]o[/][green]l[/][blue]o[/][aqua]r[/][lime]s[/] in the console. - Misc - - - - - - - diff --git a/examples/Console/Colors/Program.cs b/examples/Console/Colors/Program.cs deleted file mode 100644 index 946cb3de3..000000000 --- a/examples/Console/Colors/Program.cs +++ /dev/null @@ -1,105 +0,0 @@ -using Spectre.Console; -using Spectre.Console.Examples; - -namespace Colors; - -public static class Program -{ - public static void Main() - { - ///////////////////////////////////////////////////////////////// - // No colors - ///////////////////////////////////////////////////////////////// - if (AnsiConsole.Profile.Capabilities.ColorSystem == ColorSystem.NoColors) - { - AnsiConsole.WriteLine("No colors are supported."); - return; - } - - ///////////////////////////////////////////////////////////////// - // 3-BIT - ///////////////////////////////////////////////////////////////// - if (AnsiConsole.Profile.Supports(ColorSystem.Legacy)) - { - AnsiConsole.ResetColors(); - AnsiConsole.WriteLine(); - AnsiConsole.Write(new Rule("[yellow bold underline]3-bit Colors[/]").RuleStyle("grey").LeftJustified()); - AnsiConsole.WriteLine(); - - for (var i = 0; i < 8; i++) - { - AnsiConsole.Background = Color.FromInt32(i); - AnsiConsole.Foreground = AnsiConsole.Background.GetInvertedColor(); - AnsiConsole.Write(string.Format(" {0,-9}", AnsiConsole.Background.ToString())); - AnsiConsole.ResetColors(); - if ((i + 1) % 8 == 0) - { - AnsiConsole.WriteLine(); - } - } - } - - ///////////////////////////////////////////////////////////////// - // 4-BIT - ///////////////////////////////////////////////////////////////// - if (AnsiConsole.Profile.Supports(ColorSystem.Standard)) - { - AnsiConsole.ResetColors(); - AnsiConsole.WriteLine(); - AnsiConsole.Write(new Rule("[yellow bold underline]4-bit Colors[/]").RuleStyle("grey").LeftJustified()); - AnsiConsole.WriteLine(); - - for (var i = 0; i < 16; i++) - { - AnsiConsole.Background = Color.FromInt32(i); - AnsiConsole.Foreground = AnsiConsole.Background.GetInvertedColor(); - AnsiConsole.Write(string.Format(" {0,-9}", AnsiConsole.Background.ToString())); - AnsiConsole.ResetColors(); - if ((i + 1) % 8 == 0) - { - AnsiConsole.WriteLine(); - } - } - } - - ///////////////////////////////////////////////////////////////// - // 8-BIT - ///////////////////////////////////////////////////////////////// - if (AnsiConsole.Profile.Supports(ColorSystem.EightBit)) - { - AnsiConsole.ResetColors(); - AnsiConsole.WriteLine(); - AnsiConsole.Write(new Rule("[yellow bold underline]8-bit Colors[/]").RuleStyle("grey").LeftJustified()); - AnsiConsole.WriteLine(); - - for (var i = 0; i < 16; i++) - { - for (var j = 0; j < 16; j++) - { - var number = i * 16 + j; - AnsiConsole.Background = Color.FromInt32(number); - AnsiConsole.Foreground = AnsiConsole.Background.GetInvertedColor(); - AnsiConsole.Write(string.Format(" {0,-4}", number)); - AnsiConsole.ResetColors(); - if ((number + 1) % 16 == 0) - { - AnsiConsole.WriteLine(); - } - } - } - } - - ///////////////////////////////////////////////////////////////// - // 24-BIT - ///////////////////////////////////////////////////////////////// - if (AnsiConsole.Profile.Supports(ColorSystem.TrueColor)) - { - AnsiConsole.ResetColors(); - AnsiConsole.WriteLine(); - AnsiConsole.Write(new Rule("[yellow bold underline]24-bit Colors[/]").RuleStyle("grey").LeftJustified()); - AnsiConsole.WriteLine(); - - AnsiConsole.Write(new ColorBox(width: 80, height: 15)); - } - } -} diff --git a/examples/Console/Columns/Columns.csproj b/examples/Console/Columns/Columns.csproj deleted file mode 100644 index 471c83b2f..000000000 --- a/examples/Console/Columns/Columns.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - Exe - net8.0 - Columns - Demonstrates how to render data into columns. - Widgets - - - - - - - - - - - diff --git a/examples/Console/Columns/Program.cs b/examples/Console/Columns/Program.cs deleted file mode 100644 index 3a93ef45a..000000000 --- a/examples/Console/Columns/Program.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.Collections.Generic; -using Spectre.Console; - -namespace Columns; - -public static class Program -{ - public static void Main() - { - var cards = new List(); - foreach (var user in User.LoadUsers()) - { - cards.Add( - new Panel(GetCardContent(user)) - .Header($"{user.Country}") - .RoundedBorder().Expand()); - } - - // Render all cards in columns - AnsiConsole.Write(new Spectre.Console.Columns(cards)); - } - - private static string GetCardContent(User user) - { - var name = $"{user.FirstName} {user.LastName}"; - var city = $"{user.City}"; - - return $"[b]{name}[/]\n[yellow]{city}[/]"; - } -} diff --git a/examples/Console/Columns/User.cs b/examples/Console/Columns/User.cs deleted file mode 100644 index f2e76810f..000000000 --- a/examples/Console/Columns/User.cs +++ /dev/null @@ -1,88 +0,0 @@ -using System.Collections.Generic; - -namespace Columns; - -public sealed class User -{ - public string FirstName { get; set; } - public string LastName { get; set; } - public string City { get; set; } - public string Country { get; set; } - - public static List LoadUsers() - { - return new List - { - new User - { - FirstName = "Andrea", - LastName = "Johansen", - City = "Hornbæk", - Country = "Denmark", - }, - new User - { - FirstName = "Phil", - LastName = "Scott", - City = "Dayton", - Country = "United States", - }, - new User - { - FirstName = "Patrik", - LastName = "Svensson", - City = "Stockholm", - Country = "Sweden", - }, - new User - { - FirstName = "Freya", - LastName = "Thompson", - City = "Rotorua", - Country = "New Zealand", - }, - new User - { - FirstName = "طاها", - LastName = "رضایی", - City = "اهواز", - Country = "Iran", - }, - new User - { - FirstName = "Yara", - LastName = "Simon", - City = "Develier", - Country = "Switzerland", - }, - new User - { - FirstName = "Giray", - LastName = "Erbay", - City = "Karabük", - Country = "Turkey", - }, - new User - { - FirstName = "Miodrag", - LastName = "Schaffer", - City = "Möckern", - Country = "Germany", - }, - new User - { - FirstName = "Carmela", - LastName = "Lo Castro", - City = "Firenze", - Country = "Italy", - }, - new User - { - FirstName = "Roberto", - LastName = "Sims", - City = "Mallow", - Country = "Ireland", - }, - }; - } -} diff --git a/examples/Console/Cursor/Cursor.csproj b/examples/Console/Cursor/Cursor.csproj deleted file mode 100644 index 0f3a3ea6a..000000000 --- a/examples/Console/Cursor/Cursor.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Cursor - Demonstrates how to move the cursor. - Misc - - - - - - - diff --git a/examples/Console/Cursor/Program.cs b/examples/Console/Cursor/Program.cs deleted file mode 100644 index 3ea7785a6..000000000 --- a/examples/Console/Cursor/Program.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Spectre.Console; - -namespace Cursor; - -public static class Program -{ - public static void Main(string[] args) - { - AnsiConsole.Write("Hello"); - - // Move the cursor 3 cells to the right - AnsiConsole.Cursor.Move(CursorDirection.Right, 3); - AnsiConsole.Write("World"); - - // Move the cursor 5 cells to the left. - AnsiConsole.Cursor.Move(CursorDirection.Left, 5); - AnsiConsole.WriteLine("Universe"); - } -} diff --git a/examples/Console/Decorations/Decorations.csproj b/examples/Console/Decorations/Decorations.csproj deleted file mode 100644 index 8541965c7..000000000 --- a/examples/Console/Decorations/Decorations.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Decorations - Demonstrates how to [italic]use[/] [bold]decorations[/] [dim]in[/] the console. - Misc - - - - - - - diff --git a/examples/Console/Decorations/Program.cs b/examples/Console/Decorations/Program.cs deleted file mode 100644 index e689df514..000000000 --- a/examples/Console/Decorations/Program.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Spectre.Console; - -namespace Colors; - -public static class Program -{ - public static void Main() - { - AnsiConsole.ResetDecoration(); - AnsiConsole.WriteLine(); - - if (AnsiConsole.Profile.Capabilities.Ansi) - { - AnsiConsole.Write(new Rule("[bold green]ANSI Decorations[/]")); - } - else - { - AnsiConsole.Write(new Rule("[bold red]Legacy Decorations (unsupported)[/]")); - } - - var decorations = System.Enum.GetValues(typeof(Decoration)); - foreach (var decoration in decorations) - { - var name = System.Enum.GetName(typeof(Decoration),decoration); - AnsiConsole.Write(name + ": "); - AnsiConsole.Write(new Markup(name+"\n", new Style(decoration: (Decoration)decoration))); - } - } -} diff --git a/examples/Console/Emojis/Emojis.csproj b/examples/Console/Emojis/Emojis.csproj deleted file mode 100644 index f4def1bba..000000000 --- a/examples/Console/Emojis/Emojis.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Emojis - Demonstrates how to render emojis. - Misc - - - - - - - diff --git a/examples/Console/Emojis/Program.cs b/examples/Console/Emojis/Program.cs deleted file mode 100644 index 3fe6e0fb2..000000000 --- a/examples/Console/Emojis/Program.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Spectre.Console; - -namespace Emojis; - -public static class Program -{ - public static void Main(string[] args) - { - // Show a known emoji - RenderEmoji(); - - // Show a remapped emoji - Emoji.Remap("globe_showing_europe_africa", Emoji.Known.GrinningFaceWithSmilingEyes); - RenderEmoji(); - } - - private static void RenderEmoji() - { - AnsiConsole.Write( - new Panel("[yellow]Hello :globe_showing_europe_africa:![/]") - .RoundedBorder()); - } -} diff --git a/examples/Console/Exceptions/Exceptions.csproj b/examples/Console/Exceptions/Exceptions.csproj deleted file mode 100644 index 7ce802e02..000000000 --- a/examples/Console/Exceptions/Exceptions.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Exceptions - Demonstrates how to render formatted exceptions. - Misc - - - - - - - diff --git a/examples/Console/Exceptions/Program.cs b/examples/Console/Exceptions/Program.cs deleted file mode 100644 index 032908a93..000000000 --- a/examples/Console/Exceptions/Program.cs +++ /dev/null @@ -1,101 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Security.Authentication; -using System.Threading.Tasks; -using Spectre.Console; - -namespace Exceptions; - -public static class Program -{ - public static async Task Main(string[] args) - { - try - { - var foo = new List(); - DoMagic(42, null, ref foo); - } - catch (Exception ex) - { - AnsiConsole.WriteLine(); - AnsiConsole.Write(new Rule("Default").LeftJustified()); - AnsiConsole.WriteLine(); - AnsiConsole.WriteException(ex); - - AnsiConsole.WriteLine(); - AnsiConsole.Write(new Rule("Compact").LeftJustified()); - AnsiConsole.WriteLine(); - AnsiConsole.WriteException(ex, ExceptionFormats.ShortenEverything | ExceptionFormats.ShowLinks); - - AnsiConsole.WriteLine(); - AnsiConsole.Write(new Rule("Compact + Custom colors").LeftJustified()); - AnsiConsole.WriteLine(); - AnsiConsole.WriteException(ex, new ExceptionSettings - { - Format = ExceptionFormats.ShortenEverything | ExceptionFormats.ShowLinks, - Style = new ExceptionStyle - { - Exception = new Style().Foreground(Color.Grey), - Message = new Style().Foreground(Color.White), - NonEmphasized = new Style().Foreground(Color.Cornsilk1), - Parenthesis = new Style().Foreground(Color.Cornsilk1), - Method = new Style().Foreground(Color.Red), - ParameterName = new Style().Foreground(Color.Cornsilk1), - ParameterType = new Style().Foreground(Color.Red), - Path = new Style().Foreground(Color.Red), - LineNumber = new Style().Foreground(Color.Cornsilk1), - } - }); - } - - try - { - await DoMagicAsync(42, null); - } - catch (Exception ex) - { - AnsiConsole.WriteLine(); - AnsiConsole.Write(new Rule("Async").LeftJustified()); - AnsiConsole.WriteLine(); - AnsiConsole.WriteException(ex, ExceptionFormats.ShortenPaths); - } - } - - private static void DoMagic(int foo, string[,] bar, ref List result) - { - try - { - CheckCredentials(foo, bar); - result = new List(); - } - catch (Exception ex) - { - throw new InvalidOperationException("Whaaat?", ex); - } - } - - private static bool CheckCredentials(int? qux, string[,] corgi) - { - throw new InvalidCredentialException("The credentials are invalid."); - } - - private static async Task DoMagicAsync(T foo, string[,] bar) - { - try - { - await CheckCredentialsAsync(new[] { foo }.ToList(), new []{ foo }, bar); - } - catch (Exception ex) - { - throw new InvalidOperationException("Whaaat?", ex); - } - } - - private static async Task CheckCredentialsAsync(List qux, T[] otherArray, string[,] corgi) - { - await Task.Delay(0); - throw new InvalidCredentialException("The credentials are invalid."); - } -} - diff --git a/examples/Console/Figlet/Figlet.csproj b/examples/Console/Figlet/Figlet.csproj deleted file mode 100644 index c44b00894..000000000 --- a/examples/Console/Figlet/Figlet.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Figlet - Demonstrates how to render FIGlet text. - Widgets - - - - - - - diff --git a/examples/Console/Figlet/Program.cs b/examples/Console/Figlet/Program.cs deleted file mode 100644 index a8310145e..000000000 --- a/examples/Console/Figlet/Program.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Spectre.Console; - -namespace Figlet; - -public static class Program -{ - public static void Main(string[] args) - { - AnsiConsole.Write(new FigletText("Left aligned").LeftJustified().Color(Color.Red)); - AnsiConsole.Write(new FigletText("Centered").Centered().Color(Color.Green)); - AnsiConsole.Write(new FigletText("Right aligned").RightJustified().Color(Color.Blue)); - } -} diff --git a/examples/Console/Grids/Grids.csproj b/examples/Console/Grids/Grids.csproj deleted file mode 100644 index f7c552726..000000000 --- a/examples/Console/Grids/Grids.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Grids - Demonstrates how to render grids in a console. - Widgets - - - - - - - diff --git a/examples/Console/Grids/Program.cs b/examples/Console/Grids/Program.cs deleted file mode 100644 index ee9d0e9ae..000000000 --- a/examples/Console/Grids/Program.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Spectre.Console; - -namespace Grids; - -public static class Program -{ - public static void Main() - { - AnsiConsole.WriteLine(); - AnsiConsole.MarkupLine("Usage: [grey]dotnet [blue]run[/] [[options]] [[[[--]] ...]]]][/]"); - AnsiConsole.WriteLine(); - - var grid = new Grid(); - grid.AddColumn(new GridColumn().NoWrap()); - grid.AddColumn(new GridColumn().PadLeft(2)); - grid.AddRow("Options:"); - grid.AddRow(" [blue]-h[/], [blue]--help[/]", "Show command line help."); - grid.AddRow(" [blue]-c[/], [blue]--configuration[/] ", "The configuration to run for."); - grid.AddRow(" [blue]-v[/], [blue]--verbosity[/] ", "Set the [grey]MSBuild[/] verbosity level."); - - AnsiConsole.Write(grid); - } -} diff --git a/examples/Console/Info/Info.csproj b/examples/Console/Info/Info.csproj deleted file mode 100644 index c06d19a8a..000000000 --- a/examples/Console/Info/Info.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Info - Displays the capabilities of the current console. - Misc - - - - - - - diff --git a/examples/Console/Info/Program.cs b/examples/Console/Info/Program.cs deleted file mode 100644 index 8bd5177b7..000000000 --- a/examples/Console/Info/Program.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Spectre.Console; - -namespace Info; - -public static class Program -{ - public static void Main() - { - var grid = new Grid() - .AddColumn(new GridColumn().NoWrap().PadRight(4)) - .AddColumn() - .AddRow("[b]Enrichers[/]", string.Join(", ", AnsiConsole.Profile.Enrichers)) - .AddRow("[b]Color system[/]", $"{AnsiConsole.Profile.Capabilities.ColorSystem}") - .AddRow("[b]Unicode?[/]", $"{YesNo(AnsiConsole.Profile.Capabilities.Unicode)}") - .AddRow("[b]Supports ansi?[/]", $"{YesNo(AnsiConsole.Profile.Capabilities.Ansi)}") - .AddRow("[b]Supports links?[/]", $"{YesNo(AnsiConsole.Profile.Capabilities.Links)}") - .AddRow("[b]Legacy console?[/]", $"{YesNo(AnsiConsole.Profile.Capabilities.Legacy)}") - .AddRow("[b]Interactive?[/]", $"{YesNo(AnsiConsole.Profile.Capabilities.Interactive)}") - .AddRow("[b]Terminal?[/]", $"{YesNo(AnsiConsole.Profile.Out.IsTerminal)}") - .AddRow("[b]Buffer width[/]", $"{AnsiConsole.Console.Profile.Width}") - .AddRow("[b]Buffer height[/]", $"{AnsiConsole.Console.Profile.Height}") - .AddRow("[b]Encoding[/]", $"{AnsiConsole.Console.Profile.Encoding.EncodingName}"); - - AnsiConsole.Write( - new Panel(grid) - .Header("Information")); - } - - private static string YesNo(bool value) - { - return value ? "Yes" : "No"; - } -} diff --git a/examples/Console/Json/Json.csproj b/examples/Console/Json/Json.csproj deleted file mode 100644 index 7e31ed3bc..000000000 --- a/examples/Console/Json/Json.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net8.0 - Json - Demonstrates how to print syntax highlighted JSON. - Widgets - - - - - - - - diff --git a/examples/Console/Json/Program.cs b/examples/Console/Json/Program.cs deleted file mode 100644 index 2dc4df691..000000000 --- a/examples/Console/Json/Program.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Spectre.Console; -using Spectre.Console.Json; - -namespace Json; - -public static class Program -{ - public static void Main() - { - var json = new JsonText( - """ - { - "hello": 32, - "world": { - "foo": 21, - "bar": 255, - "baz": [ - 0.32, 0.33e-32, - 0.42e32, 0.55e+32, - { - "hello": "world", - "lol": null - } - ] - } - } - """); - - AnsiConsole.Write( - new Panel(json) - .Header("Some JSON in a panel") - .Collapse() - .RoundedBorder() - .BorderColor(Color.Yellow)); - } -} diff --git a/examples/Console/Layout/Layout.csproj b/examples/Console/Layout/Layout.csproj deleted file mode 100644 index 344ec91b4..000000000 --- a/examples/Console/Layout/Layout.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Layout - Demonstrates how to use layouts. - Widgets - - - - - - - diff --git a/examples/Console/Layout/Program.cs b/examples/Console/Layout/Program.cs deleted file mode 100644 index 835b6147e..000000000 --- a/examples/Console/Layout/Program.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using Spectre.Console; - -namespace Layouts; - -public static class Program -{ - public static void Main() - { - var layout = CreateLayout(); - AnsiConsole.Write(layout); - - Console.ReadKey(true); - } - - private static Layout CreateLayout() - { - var layout = new Layout(); - - layout.SplitRows( - new Layout("Top") - .SplitColumns( - new Layout("Left") - .SplitRows( - new Layout("LeftTop"), - new Layout("LeftBottom")), - new Layout("Right").Ratio(2), - new Layout("RightRight").Size(3)), - new Layout("Bottom")); - - layout["LeftBottom"].Update( - new Panel("[blink]PRESS ANY KEY TO QUIT[/]") - .Expand() - .BorderColor(Color.Yellow) - .Padding(0, 0)); - - layout["Right"].Update( - new Panel( - new Table() - .AddColumns("[blue]Qux[/]", "[green]Corgi[/]") - .AddRow("9", "8") - .AddRow("7", "6") - .Expand()) - .Header("A [yellow]Table[/] in a [blue]Panel[/] (Ratio=2)") - .Expand()); - - layout["RightRight"].Update( - new Panel("Explicit-size-is-[yellow]3[/]") - .BorderColor(Color.Yellow) - .Padding(0, 0)); - - layout["Bottom"].Update( - new Panel( - new FigletText("Hello World")) - .Header("Some [green]Figlet[/] text") - .Expand()); - - return layout; - } -} diff --git a/examples/Console/Links/Links.csproj b/examples/Console/Links/Links.csproj deleted file mode 100644 index 216530035..000000000 --- a/examples/Console/Links/Links.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Links - Demonstrates how to render links in a console. - Misc - - - - - - - diff --git a/examples/Console/Links/Program.cs b/examples/Console/Links/Program.cs deleted file mode 100644 index 6b1a4598b..000000000 --- a/examples/Console/Links/Program.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Spectre.Console; - -namespace Links; - -public static class Program -{ - public static void Main() - { - if (AnsiConsole.Profile.Capabilities.Links) - { - AnsiConsole.MarkupLine("[link=https://patriksvensson.se]Click to visit my blog[/]!"); - } - else - { - AnsiConsole.MarkupLine("[red]It looks like your terminal doesn't support links[/]"); - AnsiConsole.WriteLine(); - AnsiConsole.MarkupLine("[yellow](╯°□°)╯[/]︵ [blue]┻━┻[/]"); - } - } -} diff --git a/examples/Console/Live/Live.csproj b/examples/Console/Live/Live.csproj deleted file mode 100644 index c69b546d2..000000000 --- a/examples/Console/Live/Live.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Live - Demonstrates how to do live updates. - Live - - - - - - - diff --git a/examples/Console/Live/Program.cs b/examples/Console/Live/Program.cs deleted file mode 100644 index 4d5bdbc37..000000000 --- a/examples/Console/Live/Program.cs +++ /dev/null @@ -1,81 +0,0 @@ -using System; -using System.Threading; -using Spectre.Console; - -namespace Live; - -public static class Program -{ - public static void Main() - { - var table = new Table().Centered(); - - // Animate - AnsiConsole.Live(table) - .AutoClear(false) - .Overflow(VerticalOverflow.Ellipsis) - .Cropping(VerticalOverflowCropping.Top) - .Start(ctx => - { - void Update(int delay, Action action) - { - action(); - ctx.Refresh(); - Thread.Sleep(delay); - } - - // Columns - Update(230, () => table.AddColumn("Release date")); - Update(230, () => table.AddColumn("Title")); - Update(230, () => table.AddColumn("Budget")); - Update(230, () => table.AddColumn("Opening Weekend")); - Update(230, () => table.AddColumn("Box office")); - - // Rows - Update(70, () => table.AddRow("May 25, 1977", "[yellow]Star Wars[/] [grey]Ep.[/] [u]IV[/]", "$11,000,000", "$1,554,475", "$775,398,007")); - Update(70, () => table.AddRow("May 21, 1980", "[yellow]Star Wars[/] [grey]Ep.[/] [u]V[/]", "$18,000,000", "$4,910,483", "$547,969,004")); - Update(70, () => table.AddRow("May 25, 1983", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VI[/]", "$32,500,000", "$23,019,618", "$475,106,177")); - Update(70, () => table.AddRow("May 19, 1999", "[yellow]Star Wars[/] [grey]Ep.[/] [u]I[/]", "$115,000,000", "$64,810,870", "$1,027,044,677")); - Update(70, () => table.AddRow("May 16, 2002", "[yellow]Star Wars[/] [grey]Ep.[/] [u]II[/]", "$115,000,000", "$80,027,814", "$649,436,358")); - Update(70, () => table.AddRow("May 19, 2005", "[yellow]Star Wars[/] [grey]Ep.[/] [u]III[/]", "$113,000,000", "$108,435,841", "$850,035,635")); - Update(70, () => table.AddRow("Dec 18, 2015", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VII[/]", "$245,000,000", "$247,966,675", "$2,068,223,624")); - Update(70, () => table.AddRow("Dec 15, 2017", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VIII[/]", "$317,000,000", "$220,009,584", "$1,333,539,889")); - Update(70, () => table.AddRow("Dec 20, 2019", "[yellow]Star Wars[/] [grey]Ep.[/] [u]IX[/]", "$245,000,000", "$177,383,864", "$1,074,114,248")); - - // Column footer - Update(230, () => table.Columns[2].Footer("$1,633,000,000")); - Update(230, () => table.Columns[3].Footer("$928,119,224")); - Update(400, () => table.Columns[4].Footer("$10,318,030,576")); - - // Column alignment - Update(230, () => table.Columns[2].RightAligned()); - Update(230, () => table.Columns[3].RightAligned()); - Update(400, () => table.Columns[4].RightAligned()); - - // Column titles - Update(70, () => table.Columns[0].Header("[bold]Release date[/]")); - Update(70, () => table.Columns[1].Header("[bold]Title[/]")); - Update(70, () => table.Columns[2].Header("[red bold]Budget[/]")); - Update(70, () => table.Columns[3].Header("[green bold]Opening Weekend[/]")); - Update(400, () => table.Columns[4].Header("[blue bold]Box office[/]")); - - // Footers - Update(70, () => table.Columns[2].Footer("[red bold]$1,633,000,000[/]")); - Update(70, () => table.Columns[3].Footer("[green bold]$928,119,224[/]")); - Update(400, () => table.Columns[4].Footer("[blue bold]$10,318,030,576[/]")); - - // Title - Update(500, () => table.Title("Star Wars Movies")); - Update(400, () => table.Title("[[ [yellow]Star Wars Movies[/] ]]")); - - // Borders - Update(230, () => table.BorderColor(Color.Yellow)); - Update(230, () => table.MinimalBorder()); - Update(230, () => table.SimpleBorder()); - Update(230, () => table.SimpleHeavyBorder()); - - // Caption - Update(400, () => table.Caption("[[ [blue]THE END[/] ]]")); - }); - } -} diff --git a/examples/Console/LiveTable/LiveTable.csproj b/examples/Console/LiveTable/LiveTable.csproj deleted file mode 100644 index 56272a42a..000000000 --- a/examples/Console/LiveTable/LiveTable.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - LiveTable - Demonstrates how to do live updates in a table. - Live - - - - - - - diff --git a/examples/Console/LiveTable/Program.cs b/examples/Console/LiveTable/Program.cs deleted file mode 100644 index b3fc25393..000000000 --- a/examples/Console/LiveTable/Program.cs +++ /dev/null @@ -1,86 +0,0 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using Spectre.Console; - -namespace LiveTable; - -public static class Program -{ - private const int NumberOfRows = 10; - - private static readonly Random _random = new(); - private static readonly string[] _exchanges = new string[] - { - "SGD", "SEK", "PLN", - "MYR", "EUR", "USD", - "AUD", "JPY", "CNH", - "HKD", "CAD", "INR", - "DKK", "GBP", "RUB", - "NZD", "MXN", "IDR", - "TWD", "THB", "VND", - }; - - public static async Task Main(string[] args) - { - var table = new Table().Expand().BorderColor(Color.Grey); - table.AddColumn("[yellow]Source currency[/]"); - table.AddColumn("[yellow]Destination currency[/]"); - table.AddColumn("[yellow]Exchange rate[/]"); - - AnsiConsole.MarkupLine("Press [yellow]CTRL+C[/] to exit"); - - await AnsiConsole.Live(table) - .AutoClear(false) - .Overflow(VerticalOverflow.Ellipsis) - .Cropping(VerticalOverflowCropping.Bottom) - .StartAsync(async ctx => - { - // Add some initial rows - foreach (var _ in Enumerable.Range(0, NumberOfRows)) - { - AddExchangeRateRow(table); - } - - // Continously update the table - while (true) - { - // More rows than we want? - if (table.Rows.Count > NumberOfRows) - { - // Remove the first one - table.Rows.RemoveAt(0); - } - - // Add a new row - AddExchangeRateRow(table); - - // Refresh and wait for a while - ctx.Refresh(); - await Task.Delay(400); - } - }); - } - - private static void AddExchangeRateRow(Table table) - { - var (source, destination, rate) = GetExchangeRate(); - table.AddRow( - source, destination, - _random.NextDouble() > 0.35D ? $"[green]{rate}[/]" : $"[red]{rate}[/]"); - } - - private static (string Source, string Destination, double Rate) GetExchangeRate() - { - var source = _exchanges[_random.Next(0, _exchanges.Length)]; - var dest = _exchanges[_random.Next(0, _exchanges.Length)]; - var rate = 200 / ((_random.NextDouble() * 320) + 1); - - while (source == dest) - { - dest = _exchanges[_random.Next(0, _exchanges.Length)]; - } - - return (source, dest, rate); - } -} diff --git a/examples/Console/Minimal/GlobalUsings.cs b/examples/Console/Minimal/GlobalUsings.cs deleted file mode 100644 index 6c76d1fd0..000000000 --- a/examples/Console/Minimal/GlobalUsings.cs +++ /dev/null @@ -1,2 +0,0 @@ -global using Spectre.Console; -global using static Spectre.Console.AnsiConsole; \ No newline at end of file diff --git a/examples/Console/Minimal/Minimal.csproj b/examples/Console/Minimal/Minimal.csproj deleted file mode 100644 index b0f2cfe90..000000000 --- a/examples/Console/Minimal/Minimal.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net8.0 - enable - Minimal - Demonstrates a minimal console application. - Live - - - - - - - diff --git a/examples/Console/Minimal/Program.cs b/examples/Console/Minimal/Program.cs deleted file mode 100644 index 6de47a34d..000000000 --- a/examples/Console/Minimal/Program.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Write a markup line to the console -MarkupLine("[yellow]Hello[/], [blue]World[/]!"); - -// Write text to the console -WriteLine("Hello, World!"); - -// Write a table to the console -Write(new Table() - .RoundedBorder() - .AddColumns("[red]Greeting[/]", "[red]Subject[/]") - .AddRow("[yellow]Hello[/]", "World") - .AddRow("[green]Oh hi[/]", "[blue u]Mark[/]")); \ No newline at end of file diff --git a/examples/Console/Panels/Panels.csproj b/examples/Console/Panels/Panels.csproj deleted file mode 100644 index ceab0e606..000000000 --- a/examples/Console/Panels/Panels.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Panels - Demonstrates how to render items in panels. - Widgets - - - - - - - diff --git a/examples/Console/Panels/Program.cs b/examples/Console/Panels/Program.cs deleted file mode 100644 index dc9ecb845..000000000 --- a/examples/Console/Panels/Program.cs +++ /dev/null @@ -1,41 +0,0 @@ -using Spectre.Console; - -namespace Panels; - -public static class Program -{ - public static void Main() - { - var content = new Markup( - "[underline]I[/] heard [underline on blue]you[/] like panels\n\n\n\n" + - "So I put a panel in a panel").Centered(); - - AnsiConsole.Write( - new Panel( - new Panel(content) - .Border(BoxBorder.Rounded))); - - // Left adjusted panel with text - AnsiConsole.Write( - new Panel(new Text("Left adjusted\nLeft").LeftJustified()) - .Expand() - .SquareBorder() - .Header("[red]Left[/]")); - - // Centered ASCII panel with text - AnsiConsole.Write( - new Panel(new Text("Centered\nCenter").Centered()) - .Expand() - .AsciiBorder() - .Header("[green]Center[/]") - .HeaderAlignment(Justify.Center)); - - // Right adjusted, rounded panel with text - AnsiConsole.Write( - new Panel(new Text("Right adjusted\nRight").RightJustified()) - .Expand() - .RoundedBorder() - .Header("[blue]Right[/]") - .HeaderAlignment(Justify.Right)); - } -} diff --git a/examples/Console/Paths/Paths.csproj b/examples/Console/Paths/Paths.csproj deleted file mode 100644 index cad7fccfa..000000000 --- a/examples/Console/Paths/Paths.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Paths - Demonstrates how to render paths. - Widgets - - - - - - - diff --git a/examples/Console/Paths/Program.cs b/examples/Console/Paths/Program.cs deleted file mode 100644 index ff88429c1..000000000 --- a/examples/Console/Paths/Program.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System; -using System.Threading; -using Spectre.Console; - -namespace Paths; - -public static class Program -{ - public static void Main() - { - var windowsPath = @"C:\This is\A\Super Long\Windows\Path\That\Goes\On And On\And\Never\Seems\To\Stop\But\At\Some\Point\It\Must\I\Guess.txt"; - var unixPath = @"//This is/A/Super Long/Unix/Path/That/Goes/On And On/And/Never/Seems/To/Stop/But/At/Some/Point/It/Must/I/Guess.txt"; - - AnsiConsole.WriteLine(); - WritePlain(windowsPath, unixPath); - - AnsiConsole.WriteLine(); - WriteColorized(windowsPath, unixPath); - - AnsiConsole.WriteLine(); - WriteAligned(windowsPath); - } - - private static void WritePlain(string windowsPath, string unixPath) - { - var table = new Table().BorderColor(Color.Grey).Title("Plain").RoundedBorder(); - table.AddColumns("[grey]OS[/]", "[grey]Path[/]"); - table.AddRow(new Text("Windows"), new TextPath(windowsPath)); - table.AddRow(new Text("Unix"), new TextPath(unixPath)); - - AnsiConsole.Write(table); - } - - private static void WriteColorized(string windowsPath, string unixPath) - { - var table = new Table().BorderColor(Color.Grey).Title("Colorized").RoundedBorder(); - table.AddColumns("[grey]OS[/]", "[grey]Path[/]"); - - table.AddRow(new Text("Windows"), - new TextPath(windowsPath) - .RootColor(Color.Blue) - .SeparatorColor(Color.Yellow) - .StemColor(Color.Red) - .LeafColor(Color.Green)); - - table.AddRow(new Text("Unix"), - new TextPath(unixPath) - .RootColor(Color.Blue) - .SeparatorColor(Color.Yellow) - .StemColor(Color.Red) - .LeafColor(Color.Green)); - - AnsiConsole.Write(table); - } - - private static void WriteAligned(string path) - { - var table = new Table().BorderColor(Color.Grey).Title("Aligned").RoundedBorder(); - table.AddColumns("[grey]Alignment[/]", "[grey]Path[/]"); - - table.AddRow(new Text("Left"), new TextPath(path).LeftJustified()); - table.AddRow(new Text("Center"), new TextPath(path).Centered()); - table.AddRow(new Text("Right"), new TextPath(path).RightJustified()); - - AnsiConsole.Write(table); - } -} diff --git a/examples/Console/Progress/DescriptionGenerator.cs b/examples/Console/Progress/DescriptionGenerator.cs deleted file mode 100644 index 0bdb06431..000000000 --- a/examples/Console/Progress/DescriptionGenerator.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Progress; - -public static class DescriptionGenerator -{ - private static readonly string[] _verbs = new[] { "Downloading", "Rerouting", "Retriculating", "Collapsing", "Folding", "Solving", "Colliding", "Measuring" }; - private static readonly string[] _nouns = new[] { "internet", "splines", "space", "capacitators", "quarks", "algorithms", "data structures", "spacetime" }; - - private static readonly Random _random; - private static readonly HashSet _used; - - static DescriptionGenerator() - { - _random = new Random(DateTime.Now.Millisecond); - _used = new HashSet(); - } - - public static bool TryGenerate(out string name) - { - var iterations = 0; - while (iterations < 25) - { - name = Generate(); - if (!_used.Contains(name)) - { - _used.Add(name); - return true; - } - - iterations++; - } - - name = Generate(); - return false; - } - - public static string Generate() - { - return _verbs[_random.Next(0, _verbs.Length)] - + " " + _nouns[_random.Next(0, _nouns.Length)]; - } -} diff --git a/examples/Console/Progress/Program.cs b/examples/Console/Progress/Program.cs deleted file mode 100644 index 268c826e0..000000000 --- a/examples/Console/Progress/Program.cs +++ /dev/null @@ -1,121 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using Spectre.Console; -using Spectre.Console.Rendering; - -namespace Progress; - -public static class Program -{ - public static void Main() - { - AnsiConsole.MarkupLine("[yellow]Initializing warp drive[/]..."); - - // Show progress - AnsiConsole.Progress() - .AutoClear(false) - .Columns(new ProgressColumn[] - { - new TaskDescriptionColumn(), // Task description - new ProgressBarColumn(), // Progress bar - new PercentageColumn(), // Percentage - new RemainingTimeColumn(), // Remaining time - new SpinnerColumn(), // Spinner - }) - .UseRenderHook((renderable, tasks) => RenderHook(tasks, renderable)) - .Start(ctx => - { - var random = new Random(DateTime.Now.Millisecond); - - // Create some tasks - var tasks = CreateTasks(ctx, random); - var warpTask = ctx.AddTask("Going to warp", autoStart: false).IsIndeterminate(); - - // Wait for all tasks (except the indeterminate one) to complete - while (!ctx.IsFinished) - { - // Increment progress - foreach (var (task, increment) in tasks) - { - task.Increment(random.NextDouble() * increment); - } - - // Write some random things to the terminal - if (random.NextDouble() < 0.1) - { - WriteLogMessage(); - } - - // Simulate some delay - Thread.Sleep(100); - } - - // Now start the "warp" task - warpTask.StartTask(); - warpTask.IsIndeterminate(false); - while (!ctx.IsFinished) - { - warpTask.Increment(12 * random.NextDouble()); - - // Simulate some delay - Thread.Sleep(100); - } - }); - - // Done - AnsiConsole.MarkupLine("[green]Done![/]"); - } - - private static IRenderable RenderHook(IReadOnlyList tasks, IRenderable renderable) - { - var header = new Panel("Going on a :rocket:, we're going to the :crescent_moon:").Expand().RoundedBorder(); - var footer = new Rows( - new Rule(), - new Markup( - $"[blue]{tasks.Count}[/] total tasks. [green]{tasks.Count(i => i.IsFinished)}[/] complete.") - ); - - const string ESC = "\u001b"; - string escapeSequence; - if (tasks.All(i => i.IsFinished)) - { - escapeSequence = $"{ESC}]]9;4;0;100{ESC}\\"; - } - else - { - var total = tasks.Sum(i => i.MaxValue); - var done = tasks.Sum(i => i.Value); - var percent = (int)(done / total * 100); - escapeSequence = $"{ESC}]]9;4;1;{percent}{ESC}\\"; - } - - var middleContent = new Grid().AddColumns(new GridColumn(), new GridColumn().Width(20)); - middleContent.AddRow(renderable, new FigletText(tasks.Count(i => i.IsFinished == false).ToString())); - - return new Rows(header, middleContent, footer, new ControlCode(escapeSequence)); - } - - private static List<(ProgressTask Task, int Delay)> CreateTasks(ProgressContext progress, Random random) - { - var tasks = new List<(ProgressTask, int)>(); - while (tasks.Count < 5) - { - if (DescriptionGenerator.TryGenerate(out var name)) - { - tasks.Add((progress.AddTask(name), random.Next(2, 10))); - } - } - - return tasks; - } - - private static void WriteLogMessage() - { - AnsiConsole.MarkupLine( - "[grey]LOG:[/] " + - DescriptionGenerator.Generate() + - "[grey]...[/]"); - } -} diff --git a/examples/Console/Progress/Progress.csproj b/examples/Console/Progress/Progress.csproj deleted file mode 100644 index d231a4bb1..000000000 --- a/examples/Console/Progress/Progress.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - Exe - net8.0 - Progress - Demonstrates how to show progress bars. - Status - - - - - - - - - - - diff --git a/examples/Console/Prompt/Program.cs b/examples/Console/Prompt/Program.cs deleted file mode 100644 index 216d029f3..000000000 --- a/examples/Console/Prompt/Program.cs +++ /dev/null @@ -1,182 +0,0 @@ -using Spectre.Console; - -namespace Prompt -{ - public static class Program - { - public static void Main(string[] args) - { - // Check if we can accept key strokes - if (!AnsiConsole.Profile.Capabilities.Interactive) - { - AnsiConsole.MarkupLine("[red]Environment does not support interaction.[/]"); - return; - } - - // Confirmation - if (!AskConfirmation()) - { - return; - } - - // Ask the user for some different things - WriteDivider("Strings"); - var name = AskName(); - - WriteDivider("Lists"); - var fruit = AskFruit(); - - WriteDivider("Choices"); - var sport = AskSport(); - - WriteDivider("Integers"); - var age = AskAge(); - - WriteDivider("Secrets"); - var password = AskPassword(); - - WriteDivider("Mask"); - var mask = AskPasswordWithCustomMask(); - - WriteDivider("Null Mask"); - var nullMask = AskPasswordWithNullMask(); - - WriteDivider("Optional"); - var color = AskColor(); - - // Summary - AnsiConsole.WriteLine(); - AnsiConsole.Write(new Rule("[yellow]Results[/]").RuleStyle("grey").LeftJustified()); - AnsiConsole.Write(new Table().AddColumns("[grey]Question[/]", "[grey]Answer[/]") - .RoundedBorder() - .BorderColor(Color.Grey) - .AddRow("[grey]Name[/]", name) - .AddRow("[grey]Favorite fruit[/]", fruit) - .AddRow("[grey]Favorite sport[/]", sport) - .AddRow("[grey]Age[/]", age.ToString()) - .AddRow("[grey]Password[/]", password) - .AddRow("[grey]Mask[/]", mask) - .AddRow("[grey]Null Mask[/]", nullMask) - .AddRow("[grey]Favorite color[/]", string.IsNullOrEmpty(color) ? "Unknown" : color)); - } - - private static void WriteDivider(string text) - { - AnsiConsole.WriteLine(); - AnsiConsole.Write(new Rule($"[yellow]{text}[/]").RuleStyle("grey").LeftJustified()); - } - - public static bool AskConfirmation() - { - if (!AnsiConsole.Confirm("Run prompt example?")) - { - AnsiConsole.MarkupLine("Ok... :("); - return false; - } - - return true; - } - - public static string AskName() - { - var name = AnsiConsole.Ask("What's your [green]name[/]?"); - return name; - } - - public static string AskFruit() - { - var favorites = AnsiConsole.Prompt( - new MultiSelectionPrompt() - .PageSize(10) - .Title("What are your [green]favorite fruits[/]?") - .MoreChoicesText("[grey](Move up and down to reveal more fruits)[/]") - .InstructionsText("[grey](Press [blue][/] to toggle a fruit, [green][/] to accept)[/]") - .AddChoiceGroup("Berries", new[] - { - "Blackcurrant", "Blueberry", "Cloudberry", - "Elderberry", "Honeyberry", "Mulberry" - }) - .AddChoices(new[] - { - "Apple", "Apricot", "Avocado", "Banana", - "Cherry", "Cocunut", "Date", "Dragonfruit", "Durian", - "Egg plant", "Fig", "Grape", "Guava", - "Jackfruit", "Jambul", "Kiwano", "Kiwifruit", "Lime", "Lylo", - "Lychee", "Melon", "Nectarine", "Orange", "Olive" - })); - - var fruit = favorites.Count == 1 ? favorites[0] : null; - if (string.IsNullOrWhiteSpace(fruit)) - { - fruit = AnsiConsole.Prompt( - new SelectionPrompt() - .EnableSearch() - .Title("Ok, but if you could only choose [green]one[/]?") - .MoreChoicesText("[grey](Move up and down to reveal more fruits)[/]") - .AddChoices(favorites)); - } - - AnsiConsole.MarkupLine("You selected: [yellow]{0}[/]", fruit); - return fruit; - } - - public static string AskSport() - { - return AnsiConsole.Prompt( - new TextPrompt("What's your [green]favorite sport[/]?") - .InvalidChoiceMessage("[red]That's not a sport![/]") - .DefaultValue("Sport?") - .AddChoice("Soccer") - .AddChoice("Hockey") - .AddChoice("Basketball")); - } - - public static int AskAge() - { - return AnsiConsole.Prompt( - new TextPrompt("How [green]old[/] are you?") - .PromptStyle("green") - .ValidationErrorMessage("[red]That's not a valid age[/]") - .Validate(age => - { - return age switch - { - <= 0 => ValidationResult.Error("[red]You must at least be 1 years old[/]"), - >= 123 => ValidationResult.Error("[red]You must be younger than the oldest person alive[/]"), - _ => ValidationResult.Success(), - }; - })); - } - - public static string AskPassword() - { - return AnsiConsole.Prompt( - new TextPrompt("Enter [green]password[/]?") - .PromptStyle("red") - .Secret()); - } - - public static string AskPasswordWithCustomMask() - { - return AnsiConsole.Prompt( - new TextPrompt("Enter [green]password[/]?") - .PromptStyle("red") - .Secret('-')); - } - - public static string AskPasswordWithNullMask() - { - return AnsiConsole.Prompt( - new TextPrompt("Enter [green]password[/]?") - .PromptStyle("red") - .Secret(null)); - } - - public static string AskColor() - { - return AnsiConsole.Prompt( - new TextPrompt("[grey][[Optional]][/] What is your [green]favorite color[/]?") - .AllowEmpty()); - } - } -} \ No newline at end of file diff --git a/examples/Console/Prompt/Prompt.csproj b/examples/Console/Prompt/Prompt.csproj deleted file mode 100644 index 137ee6104..000000000 --- a/examples/Console/Prompt/Prompt.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net8.0 - 9 - Prompt - Demonstrates how to get input from a user. - Misc - - - - - - - diff --git a/examples/Console/Rules/Program.cs b/examples/Console/Rules/Program.cs deleted file mode 100644 index 442ed3fa4..000000000 --- a/examples/Console/Rules/Program.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Spectre.Console; - -namespace Rules; - -public static class Program -{ - public static void Main(string[] args) - { - // No title - Render( - new Rule() - .RuleStyle(Style.Parse("yellow")) - .AsciiBorder() - .LeftJustified()); - - // Left aligned title - Render( - new Rule("[blue]Left aligned[/]") - .RuleStyle(Style.Parse("red")) - .DoubleBorder() - .LeftJustified()); - - // Centered title - Render( - new Rule("[green]Centered[/]") - .RuleStyle(Style.Parse("green")) - .HeavyBorder() - .Centered()); - - // Right aligned title - Render( - new Rule("[red]Right aligned[/]") - .RuleStyle(Style.Parse("blue")) - .RightJustified()); - } - - private static void Render(Rule rule) - { - AnsiConsole.Write(rule); - AnsiConsole.WriteLine(); - } -} diff --git a/examples/Console/Rules/Rules.csproj b/examples/Console/Rules/Rules.csproj deleted file mode 100644 index 8d0660f30..000000000 --- a/examples/Console/Rules/Rules.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Rules - Demonstrates how to render horizontal rules (lines). - Widgets - - - - - - - diff --git a/examples/Console/Showcase/ExceptionGenerator.cs b/examples/Console/Showcase/ExceptionGenerator.cs deleted file mode 100644 index f3ddd991f..000000000 --- a/examples/Console/Showcase/ExceptionGenerator.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; - -namespace Showcase; - -public static class ExceptionGenerator -{ - public static Exception GenerateException() - { - try - { - SomeOperation(); - throw new InvalidOperationException(); - } - catch (Exception ex) - { - return ex; - } - } - - private static void SomeOperation() - { - SomeOperationGoingWrong(); - } - - private static void SomeOperationGoingWrong() - { - throw new InvalidOperationException("Something went very wrong!"); - } -} diff --git a/examples/Console/Showcase/Program.cs b/examples/Console/Showcase/Program.cs deleted file mode 100644 index abb1e239a..000000000 --- a/examples/Console/Showcase/Program.cs +++ /dev/null @@ -1,154 +0,0 @@ -using Spectre.Console; -using Spectre.Console.Examples; -using Spectre.Console.Rendering; - -namespace Showcase; - -public static partial class Program -{ - public static void Main() - { - var table = new Table().HideHeaders().NoBorder(); - table.Title("[u][yellow]Spectre.Console[/] [b]Features[/][/]"); - table.AddColumn("Feature", c => c.NoWrap().RightAligned().Width(10).PadRight(3)); - table.AddColumn("Demonstration", c => c.PadRight(0)); - table.AddEmptyRow(); - - // Colors - table.AddRow( - new Markup("[red]Colors[/]"), - GetColorTable()); - - // Styles - table.AddEmptyRow(); - table.AddRow( - new Markup("[red]OS[/]"), - new Grid().Expand().AddColumns(3) - .AddRow( - "[bold green]Windows[/]", - "[bold blue]macOS[/]", - "[bold yellow]Linux[/]")); - - // Styles - table.AddEmptyRow(); - table.AddRow( - "[red]Styles[/]", - "All ansi styles: [bold]bold[/], [dim]dim[/], [italic]italic[/], [underline]underline[/], " - + "[strikethrough]strikethrough[/], [reverse]reverse[/], and even [blink]blink[/]."); - - // Text - table.AddEmptyRow(); - table.AddRow( - new Markup("[red]Text[/]"), - new Markup("Word wrap text. Justify [green]left[/], [yellow]center[/] or [blue]right[/].")); - - table.AddEmptyRow(); - table.AddRow( - Text.Empty, - GetTextGrid()); - - // Markup - table.AddEmptyRow(); - table.AddRow( - "[red]Markup[/]", - "[bold purple]Spectre.Console[/] supports a simple [i]bbcode[/] like " - + "[b]markup[/] for [yellow]color[/], [underline]style[/], and emoji! " - + ":thumbs_up: :red_apple: :ant: :bear: :baguette_bread: :bus:"); - - // Trees and tables - table.AddEmptyRow(); - table.AddRow( - new Markup("[red]Tables and Trees[/]"), - GetTreeTable()); - - // Charts - table.AddRow( - new Markup("[red]Charts[/]"), - new Grid().Collapse().AddColumns(2).AddRow( - new Panel(GetBreakdownChart()).BorderColor(Color.Grey), - new Panel(GetBarChart()).BorderColor(Color.Grey))); - - - // Exceptions - table.AddEmptyRow(); - table.AddRow( - new Markup("[red]Exceptions[/]"), - ExceptionGenerator.GenerateException().GetRenderable()); - - // Much more - table.AddEmptyRow(); - table.AddRow( - "[red]+ Much more![/]", - "Tables, Grids, Trees, Progress bars, Status, Bar charts, Calendars, Figlet, Images, Text prompts, " - + "List boxes, Separators, Pretty exceptions, Canvas, CLI parsing"); - table.AddEmptyRow(); - - // Render the table - AnsiConsole.WriteLine(); - AnsiConsole.Write(table); - } - - private static IRenderable GetColorTable() - { - var colorTable = new Table().Collapse().HideHeaders().NoBorder(); - colorTable.AddColumn("Desc", c => c.PadRight(3)).AddColumn("Colors", c => c.PadRight(0)); - colorTable.AddRow( - new Markup( - "✓ [bold grey]NO_COLOR support[/]\n" + - "✓ [bold green]3-bit color[/]\n" + - "✓ [bold blue]4-bit color[/]\n" + - "✓ [bold purple]8-bit color[/]\n" + - "✓ [bold yellow]Truecolor (16.7 million)[/]\n" + - "✓ [bold aqua]Automatic color conversion[/]"), - new ColorBox(height: 6)); - - return colorTable; - } - - private static IRenderable GetTextGrid() - { - var loremTable = new Grid(); - var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque in metus sed sapien ultricies pretium a at justo. Maecenas luctus velit et auctor maximus."; - loremTable.AddColumn(new GridColumn().LeftAligned()); - loremTable.AddColumn(new GridColumn().Centered()); - loremTable.AddColumn(new GridColumn().RightAligned()); - loremTable.AddRow($"[green]{lorem}[/]", $"[yellow]{lorem}[/]", $"[blue]{lorem}[/]"); - return loremTable; - } - - private static IRenderable GetTreeTable() - { - var tree = new Tree("📁 src"); - tree.AddNode("📁 foo").AddNode("📄 bar.cs"); - tree.AddNode("📁 baz").AddNode("📁 qux").AddNode("📄 corgi.txt"); - tree.AddNode("📄 waldo.xml"); - - var table = new Table().SimpleBorder().BorderColor(Color.Grey); - table.AddColumn(new TableColumn("Overview")); - table.AddColumn(new TableColumn("").Footer("[grey]3 Files, 225 KiB[/]")); - table.AddRow(new Markup("[yellow]Files[/]"), tree); - - return new Table().RoundedBorder().Collapse().BorderColor(Color.Yellow) - .AddColumn("Foo").AddColumn("Bar") - .AddRow(new Text("Baz"), table) - .AddRow("Qux", "Corgi"); - } - - private static IRenderable GetBarChart() - { - return new BarChart() - .AddItem("Apple", 32, Color.Green) - .AddItem("Oranges", 13, Color.Orange1) - .AddItem("Bananas", 22, Color.Yellow); - } - - private static IRenderable GetBreakdownChart() - { - return new BreakdownChart() - .ShowPercentage() - .FullSize() - .AddItem("C#", 82, Color.Green) - .AddItem("PowerShell", 13, Color.Red) - .AddItem("Bash", 5, Color.Blue); - } -} diff --git a/examples/Console/Showcase/Showcase.csproj b/examples/Console/Showcase/Showcase.csproj deleted file mode 100644 index f624fbee3..000000000 --- a/examples/Console/Showcase/Showcase.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Showcase - Demonstration of Spectre.Console. - Misc - - - - - - - diff --git a/examples/Console/Status/Program.cs b/examples/Console/Status/Program.cs deleted file mode 100644 index ee28916f4..000000000 --- a/examples/Console/Status/Program.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System.Threading; -using Spectre.Console; - -namespace Status; - -public static class Program -{ - public static void Main() - { - AnsiConsole.Status() - .AutoRefresh(true) - .Spinner(Spinner.Known.Default) - .Start("[yellow]Initializing warp drive[/]", ctx => - { - // Initialize - Thread.Sleep(3000); - WriteLogMessage("Starting gravimetric field displacement manifold"); - Thread.Sleep(1000); - WriteLogMessage("Warming up deuterium chamber"); - Thread.Sleep(2000); - WriteLogMessage("Generating antideuterium"); - - // Warp nacelles - Thread.Sleep(3000); - ctx.Spinner(Spinner.Known.BouncingBar); - ctx.Status("[bold blue]Unfolding warp nacelles[/]"); - WriteLogMessage("Unfolding left warp nacelle"); - Thread.Sleep(2000); - WriteLogMessage("Left warp nacelle [green]online[/]"); - WriteLogMessage("Unfolding right warp nacelle"); - Thread.Sleep(1000); - WriteLogMessage("Right warp nacelle [green]online[/]"); - - // Warp bubble - Thread.Sleep(3000); - ctx.Spinner(Spinner.Known.Star2); - ctx.Status("[bold blue]Generating warp bubble[/]"); - Thread.Sleep(3000); - ctx.Spinner(Spinner.Known.Star); - ctx.Status("[bold blue]Stabilizing warp bubble[/]"); - - // Safety - ctx.Spinner(Spinner.Known.Monkey); - ctx.Status("[bold blue]Performing safety checks[/]"); - WriteLogMessage("Enabling interior dampening"); - Thread.Sleep(2000); - WriteLogMessage("Interior dampening [green]enabled[/]"); - - // Warp! - Thread.Sleep(3000); - ctx.Spinner(Spinner.Known.Moon); - WriteLogMessage("Preparing for warp"); - Thread.Sleep(1000); - for (var warp = 1; warp < 10; warp++) - { - ctx.Status($"[bold blue]Warp {warp}[/]"); - Thread.Sleep(500); - } - }); - - // Done - AnsiConsole.MarkupLine("[bold green]Crusing at Warp 9.8[/]"); - } - - private static void WriteLogMessage(string message) - { - AnsiConsole.MarkupLine($"[grey]LOG:[/] {message}[grey]...[/]"); - } -} diff --git a/examples/Console/Status/Status.csproj b/examples/Console/Status/Status.csproj deleted file mode 100644 index df43d6caf..000000000 --- a/examples/Console/Status/Status.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - Exe - net8.0 - Status - Demonstrates how to show status updates. - Status - - - - - - - - - - - diff --git a/examples/Console/Tables/Program.cs b/examples/Console/Tables/Program.cs deleted file mode 100644 index 751477ccb..000000000 --- a/examples/Console/Tables/Program.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Spectre.Console; - -namespace Tables; - -public static class Program -{ - public static void Main() - { - AnsiConsole.Write(CreateTable()); - } - - private static Table CreateTable() - { - var simple = new Table() - .Border(TableBorder.Square) - .BorderColor(Color.Red) - .AddColumn(new TableColumn("[u]CDE[/]").Footer("EDC").Centered()) - .AddColumn(new TableColumn("[u]FED[/]").Footer("DEF")) - .AddColumn(new TableColumn("[u]IHG[/]").Footer("GHI")) - .AddRow("Hello", "[red]World![/]", "") - .AddRow("[blue]Bonjour[/]", "[white]le[/]", "[red]monde![/]") - .AddRow("[blue]Hej[/]", "[yellow]Världen![/]", ""); - - var second = new Table() - .Border(TableBorder.Rounded) - .BorderColor(Color.Green) - .AddColumn(new TableColumn("[u]Foo[/]")) - .AddColumn(new TableColumn("[u]Bar[/]")) - .AddColumn(new TableColumn("[u]Baz[/]")) - .AddRow("Hello", "[red]World![/]", "") - .AddRow(simple, new Text("Whaaat"), new Text("Lolz")) - .AddRow("[blue]Hej[/]", "[yellow]Världen![/]", ""); - - return new Table() - .Centered() - .Border(TableBorder.DoubleEdge) - .Title("TABLE [yellow]TITLE[/]") - .Caption("TABLE [yellow]CAPTION[/]") - .AddColumn(new TableColumn(new Panel("[u]ABC[/]").BorderColor(Color.Red)).Footer("[u]FOOTER 1[/]")) - .AddColumn(new TableColumn(new Panel("[u]DEF[/]").BorderColor(Color.Green)).Footer("[u]FOOTER 2[/]")) - .AddColumn(new TableColumn(new Panel("[u]GHI[/]").BorderColor(Color.Blue)).Footer("[u]FOOTER 3[/]")) - .AddRow(new Text("Hello").Centered(), new Markup("[red]World![/]"), Text.Empty) - .AddRow(second, new Text("Whaaat"), new Text("Lol")) - .AddRow(new Markup("[blue]Hej[/]").Centered(), new Markup("[yellow]Världen![/]"), Text.Empty); - } -} diff --git a/examples/Console/Tables/Tables.csproj b/examples/Console/Tables/Tables.csproj deleted file mode 100644 index 9dd65f370..000000000 --- a/examples/Console/Tables/Tables.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Tables - Demonstrates how to render tables in a console. - Widgets - - - - - - - diff --git a/examples/Console/Trees/Program.cs b/examples/Console/Trees/Program.cs deleted file mode 100644 index 7e5506641..000000000 --- a/examples/Console/Trees/Program.cs +++ /dev/null @@ -1,44 +0,0 @@ -using Spectre.Console; - -namespace Trees; - -public static class Program -{ - public static void Main() - { - AnsiConsole.WriteLine(); - - // Render the tree - var tree = BuildTree(); - AnsiConsole.Write(tree); - } - - private static Tree BuildTree() - { - // Create the tree - var tree = new Tree("Root") - .Style(Style.Parse("red")) - .Guide(TreeGuide.Line); - - // Add some nodes - var foo = tree.AddNode("[yellow]Foo[/]"); - var table = foo.AddNode(new Table() - .RoundedBorder() - .AddColumn("First") - .AddColumn("Second") - .AddRow("1", "2") - .AddRow("3", "4") - .AddRow("5", "6")); - - table.AddNode("[blue]Baz[/]"); - foo.AddNode("Qux"); - - var bar = tree.AddNode("[yellow]Bar[/]"); - bar.AddNode(new Calendar(2020, 12) - .AddCalendarEvent(2020, 12, 12) - .HideHeader()); - - // Return the tree - return tree; - } -} diff --git a/examples/Console/Trees/Trees.csproj b/examples/Console/Trees/Trees.csproj deleted file mode 100644 index 901141144..000000000 --- a/examples/Console/Trees/Trees.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - Trees - Demonstrates how to render trees in a console. - Widgets - - - - - - - diff --git a/examples/Directory.Build.props b/examples/Directory.Build.props deleted file mode 100644 index 3080093ef..000000000 --- a/examples/Directory.Build.props +++ /dev/null @@ -1,5 +0,0 @@ - - - false - - \ No newline at end of file diff --git a/examples/Examples.sln b/examples/Examples.sln deleted file mode 100644 index 316646633..000000000 --- a/examples/Examples.sln +++ /dev/null @@ -1,600 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{2571F1BD-6556-4F96-B27B-B6190E1BF13A}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Cli", "Cli", "{4682E9B7-B54C-419D-B92F-470DA4E5674C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Delegates", "Cli\Delegates\Delegates.csproj", "{E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Demo", "Cli\Demo\Demo.csproj", "{7FC2594D-55D6-4688-AB7D-C9C903414448}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dynamic", "Cli\Dynamic\Dynamic.csproj", "{6EA8F935-A230-4171-8618-FDFABA553292}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Injection", "Cli\Injection\Injection.csproj", "{DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Logging", "Cli\Logging\Logging.csproj", "{37024E79-A857-4EB2-9B50-F724ED34E5EB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Shared", "Shared\Shared.csproj", "{DD8EC1B0-F50C-44E4-8399-2D560F95E572}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Borders", "Console\Borders\Borders.csproj", "{036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Calendars", "Console\Calendars\Calendars.csproj", "{C64ADBA3-AED2-4938-8E26-8D6679C395CB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Canvas", "Console\Canvas\Canvas.csproj", "{B3393919-26F1-4200-88CD-B71EEAF0EA51}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Charts", "Console\Charts\Charts.csproj", "{0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Colors", "Console\Colors\Colors.csproj", "{18562660-BF70-4EF3-A765-22713BDE2EB1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Columns", "Console\Columns\Columns.csproj", "{264EBC5A-B897-4DA8-9C9E-9A445B1E368C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cursor", "Console\Cursor\Cursor.csproj", "{95BE948B-6102-4453-982D-C7B21E51B582}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Emojis", "Console\Emojis\Emojis.csproj", "{6272C7ED-432E-4286-914C-898304A1880E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Exceptions", "Console\Exceptions\Exceptions.csproj", "{20766F18-AEC7-4382-BDE2-0C846F2857AA}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Figlet", "Console\Figlet\Figlet.csproj", "{1C374C51-6C82-4E71-9701-5F378BC0356C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Grids", "Console\Grids\Grids.csproj", "{6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Info", "Console\Info\Info.csproj", "{FBCCBA12-9DBF-403C-9FA4-222CBB080955}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Links", "Console\Links\Links.csproj", "{B9414195-69A2-40E6-B071-751DCCE95AF0}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Live", "Console\Live\Live.csproj", "{4AE3AC67-A927-42CC-B286-E0A0735DC7A2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Panels", "Console\Panels\Panels.csproj", "{12E7F2CE-E91B-446F-A269-F88FB546B6A8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Progress", "Console\Progress\Progress.csproj", "{4554BDF3-0723-4076-B054-616D830942D4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prompt", "Console\Prompt\Prompt.csproj", "{85A37D38-54D9-4FA2-B311-CA48BD7AF916}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Rules", "Console\Rules\Rules.csproj", "{305E2CE7-9D64-43D7-A26C-11036ACE2A89}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Showcase", "Console\Showcase\Showcase.csproj", "{5BEE8076-59A0-47BB-9CC6-222EC978AE16}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Status", "Console\Status\Status.csproj", "{FCE2405B-A215-434B-A47C-32053E27A907}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tables", "Console\Tables\Tables.csproj", "{3D16490A-9EBA-488C-9B3E-6A11FC1E0300}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Trees", "Console\Trees\Trees.csproj", "{2BD88288-E05D-4978-B045-17937078E63C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LiveTable", "Console\LiveTable\LiveTable.csproj", "{E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Minimal", "Console\Minimal\Minimal.csproj", "{1780A30A-397A-4CC3-B2A0-A385D9081FA2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AlternateScreen", "Console\AlternateScreen\AlternateScreen.csproj", "{8A3B636E-5828-438B-A8F4-83811D2704CD}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console", "..\src\Spectre.Console\Spectre.Console.csproj", "{0C58FB17-F60A-47AB-84BF-961EC8C06AE6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.ImageSharp", "..\src\Spectre.Console.ImageSharp\Spectre.Console.ImageSharp.csproj", "{A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Paths", "Console\Paths\Paths.csproj", "{65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Cli", "..\src\Spectre.Console.Cli\Spectre.Console.Cli.csproj", "{EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Layout", "Console\Layout\Layout.csproj", "{A9FDE73A-8452-4CA3-B366-3F900597E132}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Json", "Console\Json\Json.csproj", "{ABE3E734-0756-4D5A-B28A-E6E526D9927D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Json", "..\src\Spectre.Console.Json\Spectre.Console.Json.csproj", "{91A5637F-1F89-48B3-A0BA-6CC629807393}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Help", "Cli\Help\Help.csproj", "{BAB490D6-FF8D-462B-B2B0-933384D629DB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Decorations", "Console\Decorations\Decorations.csproj", "{FC5852F1-E01F-4DF7-9B49-CA19A9EE670F}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|x64.ActiveCfg = Debug|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|x64.Build.0 = Debug|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|x86.ActiveCfg = Debug|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|x86.Build.0 = Debug|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|Any CPU.Build.0 = Release|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|x64.ActiveCfg = Release|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|x64.Build.0 = Release|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|x86.ActiveCfg = Release|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|x86.Build.0 = Release|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|x64.ActiveCfg = Debug|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|x64.Build.0 = Debug|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|x86.ActiveCfg = Debug|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|x86.Build.0 = Debug|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|Any CPU.Build.0 = Release|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|x64.ActiveCfg = Release|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|x64.Build.0 = Release|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|x86.ActiveCfg = Release|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|x86.Build.0 = Release|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|x64.ActiveCfg = Debug|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|x64.Build.0 = Debug|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|x86.ActiveCfg = Debug|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|x86.Build.0 = Debug|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Release|Any CPU.Build.0 = Release|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Release|x64.ActiveCfg = Release|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Release|x64.Build.0 = Release|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Release|x86.ActiveCfg = Release|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Release|x86.Build.0 = Release|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|x64.ActiveCfg = Debug|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|x64.Build.0 = Debug|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|x86.ActiveCfg = Debug|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|x86.Build.0 = Debug|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|Any CPU.Build.0 = Release|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|x64.ActiveCfg = Release|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|x64.Build.0 = Release|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|x86.ActiveCfg = Release|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|x86.Build.0 = Release|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|x64.ActiveCfg = Debug|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|x64.Build.0 = Debug|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|x86.ActiveCfg = Debug|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|x86.Build.0 = Debug|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|Any CPU.Build.0 = Release|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|x64.ActiveCfg = Release|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|x64.Build.0 = Release|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|x86.ActiveCfg = Release|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|x86.Build.0 = Release|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|x64.ActiveCfg = Debug|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|x64.Build.0 = Debug|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|x86.ActiveCfg = Debug|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|x86.Build.0 = Debug|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|Any CPU.Build.0 = Release|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|x64.ActiveCfg = Release|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|x64.Build.0 = Release|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|x86.ActiveCfg = Release|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|x86.Build.0 = Release|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|Any CPU.Build.0 = Debug|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|x64.ActiveCfg = Debug|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|x64.Build.0 = Debug|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|x86.ActiveCfg = Debug|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|x86.Build.0 = Debug|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|Any CPU.ActiveCfg = Release|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|Any CPU.Build.0 = Release|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|x64.ActiveCfg = Release|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|x64.Build.0 = Release|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|x86.ActiveCfg = Release|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|x86.Build.0 = Release|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|x64.ActiveCfg = Debug|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|x64.Build.0 = Debug|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|x86.ActiveCfg = Debug|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|x86.Build.0 = Debug|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|Any CPU.Build.0 = Release|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|x64.ActiveCfg = Release|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|x64.Build.0 = Release|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|x86.ActiveCfg = Release|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|x86.Build.0 = Release|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|x64.ActiveCfg = Debug|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|x64.Build.0 = Debug|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|x86.ActiveCfg = Debug|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|x86.Build.0 = Debug|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|Any CPU.Build.0 = Release|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|x64.ActiveCfg = Release|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|x64.Build.0 = Release|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|x86.ActiveCfg = Release|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|x86.Build.0 = Release|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|x64.ActiveCfg = Debug|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|x64.Build.0 = Debug|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|x86.ActiveCfg = Debug|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|x86.Build.0 = Debug|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|Any CPU.Build.0 = Release|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|x64.ActiveCfg = Release|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|x64.Build.0 = Release|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|x86.ActiveCfg = Release|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|x86.Build.0 = Release|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|x64.ActiveCfg = Debug|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|x64.Build.0 = Debug|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|x86.ActiveCfg = Debug|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|x86.Build.0 = Debug|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|Any CPU.Build.0 = Release|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|x64.ActiveCfg = Release|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|x64.Build.0 = Release|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|x86.ActiveCfg = Release|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|x86.Build.0 = Release|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|x64.ActiveCfg = Debug|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|x64.Build.0 = Debug|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|x86.ActiveCfg = Debug|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|x86.Build.0 = Debug|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|Any CPU.Build.0 = Release|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|x64.ActiveCfg = Release|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|x64.Build.0 = Release|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|x86.ActiveCfg = Release|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|x86.Build.0 = Release|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|Any CPU.Build.0 = Debug|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|x64.ActiveCfg = Debug|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|x64.Build.0 = Debug|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|x86.ActiveCfg = Debug|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|x86.Build.0 = Debug|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Release|Any CPU.ActiveCfg = Release|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Release|Any CPU.Build.0 = Release|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Release|x64.ActiveCfg = Release|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Release|x64.Build.0 = Release|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Release|x86.ActiveCfg = Release|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Release|x86.Build.0 = Release|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Debug|x64.ActiveCfg = Debug|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Debug|x64.Build.0 = Debug|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Debug|x86.ActiveCfg = Debug|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Debug|x86.Build.0 = Debug|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Release|Any CPU.Build.0 = Release|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Release|x64.ActiveCfg = Release|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Release|x64.Build.0 = Release|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Release|x86.ActiveCfg = Release|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Release|x86.Build.0 = Release|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|x64.ActiveCfg = Debug|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|x64.Build.0 = Debug|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|x86.ActiveCfg = Debug|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|x86.Build.0 = Debug|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|Any CPU.Build.0 = Release|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|x64.ActiveCfg = Release|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|x64.Build.0 = Release|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|x86.ActiveCfg = Release|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|x86.Build.0 = Release|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|x64.ActiveCfg = Debug|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|x64.Build.0 = Debug|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|x86.ActiveCfg = Debug|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|x86.Build.0 = Debug|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|Any CPU.Build.0 = Release|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|x64.ActiveCfg = Release|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|x64.Build.0 = Release|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|x86.ActiveCfg = Release|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|x86.Build.0 = Release|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|x64.ActiveCfg = Debug|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|x64.Build.0 = Debug|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|x86.ActiveCfg = Debug|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|x86.Build.0 = Debug|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|Any CPU.Build.0 = Release|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|x64.ActiveCfg = Release|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|x64.Build.0 = Release|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|x86.ActiveCfg = Release|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|x86.Build.0 = Release|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|x64.ActiveCfg = Debug|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|x64.Build.0 = Debug|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|x86.ActiveCfg = Debug|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|x86.Build.0 = Debug|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|Any CPU.Build.0 = Release|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|x64.ActiveCfg = Release|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|x64.Build.0 = Release|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|x86.ActiveCfg = Release|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|x86.Build.0 = Release|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|x64.ActiveCfg = Debug|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|x64.Build.0 = Debug|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|x86.ActiveCfg = Debug|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|x86.Build.0 = Debug|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|Any CPU.Build.0 = Release|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|x64.ActiveCfg = Release|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|x64.Build.0 = Release|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|x86.ActiveCfg = Release|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|x86.Build.0 = Release|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|x64.ActiveCfg = Debug|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|x64.Build.0 = Debug|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|x86.ActiveCfg = Debug|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|x86.Build.0 = Debug|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|Any CPU.Build.0 = Release|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|x64.ActiveCfg = Release|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|x64.Build.0 = Release|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|x86.ActiveCfg = Release|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|x86.Build.0 = Release|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|x64.ActiveCfg = Debug|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|x64.Build.0 = Debug|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|x86.ActiveCfg = Debug|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|x86.Build.0 = Debug|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|Any CPU.Build.0 = Release|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|x64.ActiveCfg = Release|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|x64.Build.0 = Release|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|x86.ActiveCfg = Release|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|x86.Build.0 = Release|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Debug|x64.ActiveCfg = Debug|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Debug|x64.Build.0 = Debug|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Debug|x86.ActiveCfg = Debug|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Debug|x86.Build.0 = Debug|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Release|Any CPU.Build.0 = Release|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Release|x64.ActiveCfg = Release|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Release|x64.Build.0 = Release|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Release|x86.ActiveCfg = Release|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Release|x86.Build.0 = Release|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|x64.ActiveCfg = Debug|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|x64.Build.0 = Debug|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|x86.ActiveCfg = Debug|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|x86.Build.0 = Debug|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|Any CPU.Build.0 = Release|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|x64.ActiveCfg = Release|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|x64.Build.0 = Release|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|x86.ActiveCfg = Release|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|x86.Build.0 = Release|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|Any CPU.Build.0 = Debug|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|x64.ActiveCfg = Debug|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|x64.Build.0 = Debug|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|x86.ActiveCfg = Debug|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|x86.Build.0 = Debug|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|Any CPU.ActiveCfg = Release|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|Any CPU.Build.0 = Release|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|x64.ActiveCfg = Release|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|x64.Build.0 = Release|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|x86.ActiveCfg = Release|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|x86.Build.0 = Release|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|x64.ActiveCfg = Debug|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|x64.Build.0 = Debug|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|x86.ActiveCfg = Debug|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|x86.Build.0 = Debug|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|Any CPU.Build.0 = Release|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|x64.ActiveCfg = Release|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|x64.Build.0 = Release|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|x86.ActiveCfg = Release|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|x86.Build.0 = Release|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|x64.ActiveCfg = Debug|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|x64.Build.0 = Debug|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|x86.ActiveCfg = Debug|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|x86.Build.0 = Debug|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Release|Any CPU.Build.0 = Release|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Release|x64.ActiveCfg = Release|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Release|x64.Build.0 = Release|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Release|x86.ActiveCfg = Release|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Release|x86.Build.0 = Release|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|x64.ActiveCfg = Debug|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|x64.Build.0 = Debug|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|x86.ActiveCfg = Debug|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|x86.Build.0 = Debug|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|Any CPU.Build.0 = Release|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|x64.ActiveCfg = Release|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|x64.Build.0 = Release|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|x86.ActiveCfg = Release|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|x86.Build.0 = Release|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Debug|x64.ActiveCfg = Debug|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Debug|x64.Build.0 = Debug|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Debug|x86.ActiveCfg = Debug|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Debug|x86.Build.0 = Debug|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Release|Any CPU.Build.0 = Release|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Release|x64.ActiveCfg = Release|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Release|x64.Build.0 = Release|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Release|x86.ActiveCfg = Release|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Release|x86.Build.0 = Release|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|x64.ActiveCfg = Debug|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|x64.Build.0 = Debug|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|x86.ActiveCfg = Debug|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|x86.Build.0 = Debug|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|Any CPU.Build.0 = Release|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|x64.ActiveCfg = Release|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|x64.Build.0 = Release|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|x86.ActiveCfg = Release|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|x86.Build.0 = Release|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|x64.ActiveCfg = Debug|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|x64.Build.0 = Debug|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|x86.ActiveCfg = Debug|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|x86.Build.0 = Debug|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|Any CPU.Build.0 = Release|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|x64.ActiveCfg = Release|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|x64.Build.0 = Release|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|x86.ActiveCfg = Release|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|x86.Build.0 = Release|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|x64.ActiveCfg = Debug|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|x64.Build.0 = Debug|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|x86.ActiveCfg = Debug|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|x86.Build.0 = Debug|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|Any CPU.Build.0 = Release|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|x64.ActiveCfg = Release|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|x64.Build.0 = Release|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|x86.ActiveCfg = Release|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|x86.Build.0 = Release|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|x64.ActiveCfg = Debug|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|x64.Build.0 = Debug|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|x86.ActiveCfg = Debug|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|x86.Build.0 = Debug|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|Any CPU.Build.0 = Release|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|x64.ActiveCfg = Release|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|x64.Build.0 = Release|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|x86.ActiveCfg = Release|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|x86.Build.0 = Release|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|x64.ActiveCfg = Debug|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|x64.Build.0 = Debug|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|x86.ActiveCfg = Debug|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|x86.Build.0 = Debug|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|Any CPU.Build.0 = Release|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|x64.ActiveCfg = Release|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|x64.Build.0 = Release|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|x86.ActiveCfg = Release|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|x86.Build.0 = Release|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|x64.ActiveCfg = Debug|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|x64.Build.0 = Debug|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|x86.ActiveCfg = Debug|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|x86.Build.0 = Debug|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|Any CPU.Build.0 = Release|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|x64.ActiveCfg = Release|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|x64.Build.0 = Release|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|x86.ActiveCfg = Release|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|x86.Build.0 = Release|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|x64.ActiveCfg = Debug|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|x64.Build.0 = Debug|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|x86.ActiveCfg = Debug|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|x86.Build.0 = Debug|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|Any CPU.Build.0 = Release|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|x64.ActiveCfg = Release|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|x64.Build.0 = Release|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|x86.ActiveCfg = Release|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|x86.Build.0 = Release|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|x64.ActiveCfg = Debug|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|x64.Build.0 = Debug|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|x86.ActiveCfg = Debug|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|x86.Build.0 = Debug|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|Any CPU.Build.0 = Release|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|x64.ActiveCfg = Release|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|x64.Build.0 = Release|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|x86.ActiveCfg = Release|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|x86.Build.0 = Release|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|x64.ActiveCfg = Debug|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|x64.Build.0 = Debug|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|x86.ActiveCfg = Debug|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|x86.Build.0 = Debug|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|Any CPU.Build.0 = Release|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|x64.ActiveCfg = Release|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|x64.Build.0 = Release|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|x86.ActiveCfg = Release|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|x86.Build.0 = Release|Any CPU - {91A5637F-1F89-48B3-A0BA-6CC629807393}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {91A5637F-1F89-48B3-A0BA-6CC629807393}.Debug|Any CPU.Build.0 = Debug|Any CPU - {91A5637F-1F89-48B3-A0BA-6CC629807393}.Debug|x64.ActiveCfg = Debug|Any CPU - {91A5637F-1F89-48B3-A0BA-6CC629807393}.Debug|x64.Build.0 = Debug|Any CPU - {91A5637F-1F89-48B3-A0BA-6CC629807393}.Debug|x86.ActiveCfg = Debug|Any CPU - {91A5637F-1F89-48B3-A0BA-6CC629807393}.Debug|x86.Build.0 = Debug|Any CPU - {91A5637F-1F89-48B3-A0BA-6CC629807393}.Release|Any CPU.ActiveCfg = Release|Any CPU - {91A5637F-1F89-48B3-A0BA-6CC629807393}.Release|Any CPU.Build.0 = Release|Any CPU - {91A5637F-1F89-48B3-A0BA-6CC629807393}.Release|x64.ActiveCfg = Release|Any CPU - {91A5637F-1F89-48B3-A0BA-6CC629807393}.Release|x64.Build.0 = Release|Any CPU - {91A5637F-1F89-48B3-A0BA-6CC629807393}.Release|x86.ActiveCfg = Release|Any CPU - {91A5637F-1F89-48B3-A0BA-6CC629807393}.Release|x86.Build.0 = Release|Any CPU - {BAB490D6-FF8D-462B-B2B0-933384D629DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BAB490D6-FF8D-462B-B2B0-933384D629DB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BAB490D6-FF8D-462B-B2B0-933384D629DB}.Debug|x64.ActiveCfg = Debug|Any CPU - {BAB490D6-FF8D-462B-B2B0-933384D629DB}.Debug|x64.Build.0 = Debug|Any CPU - {BAB490D6-FF8D-462B-B2B0-933384D629DB}.Debug|x86.ActiveCfg = Debug|Any CPU - {BAB490D6-FF8D-462B-B2B0-933384D629DB}.Debug|x86.Build.0 = Debug|Any CPU - {BAB490D6-FF8D-462B-B2B0-933384D629DB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BAB490D6-FF8D-462B-B2B0-933384D629DB}.Release|Any CPU.Build.0 = Release|Any CPU - {BAB490D6-FF8D-462B-B2B0-933384D629DB}.Release|x64.ActiveCfg = Release|Any CPU - {BAB490D6-FF8D-462B-B2B0-933384D629DB}.Release|x64.Build.0 = Release|Any CPU - {BAB490D6-FF8D-462B-B2B0-933384D629DB}.Release|x86.ActiveCfg = Release|Any CPU - {BAB490D6-FF8D-462B-B2B0-933384D629DB}.Release|x86.Build.0 = Release|Any CPU - {FC5852F1-E01F-4DF7-9B49-CA19A9EE670F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FC5852F1-E01F-4DF7-9B49-CA19A9EE670F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FC5852F1-E01F-4DF7-9B49-CA19A9EE670F}.Debug|x64.ActiveCfg = Debug|Any CPU - {FC5852F1-E01F-4DF7-9B49-CA19A9EE670F}.Debug|x64.Build.0 = Debug|Any CPU - {FC5852F1-E01F-4DF7-9B49-CA19A9EE670F}.Debug|x86.ActiveCfg = Debug|Any CPU - {FC5852F1-E01F-4DF7-9B49-CA19A9EE670F}.Debug|x86.Build.0 = Debug|Any CPU - {FC5852F1-E01F-4DF7-9B49-CA19A9EE670F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FC5852F1-E01F-4DF7-9B49-CA19A9EE670F}.Release|Any CPU.Build.0 = Release|Any CPU - {FC5852F1-E01F-4DF7-9B49-CA19A9EE670F}.Release|x64.ActiveCfg = Release|Any CPU - {FC5852F1-E01F-4DF7-9B49-CA19A9EE670F}.Release|x64.Build.0 = Release|Any CPU - {FC5852F1-E01F-4DF7-9B49-CA19A9EE670F}.Release|x86.ActiveCfg = Release|Any CPU - {FC5852F1-E01F-4DF7-9B49-CA19A9EE670F}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} - {7FC2594D-55D6-4688-AB7D-C9C903414448} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} - {6EA8F935-A230-4171-8618-FDFABA553292} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} - {37024E79-A857-4EB2-9B50-F724ED34E5EB} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} - {DD8EC1B0-F50C-44E4-8399-2D560F95E572} = {2571F1BD-6556-4F96-B27B-B6190E1BF13A} - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6} = {2571F1BD-6556-4F96-B27B-B6190E1BF13A} - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7} = {2571F1BD-6556-4F96-B27B-B6190E1BF13A} - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7} = {2571F1BD-6556-4F96-B27B-B6190E1BF13A} - {91A5637F-1F89-48B3-A0BA-6CC629807393} = {2571F1BD-6556-4F96-B27B-B6190E1BF13A} - {BAB490D6-FF8D-462B-B2B0-933384D629DB} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {3EE724C5-CAB4-410D-AC63-8D4260EF83ED} - EndGlobalSection -EndGlobal diff --git a/examples/Shared/ColorBox.cs b/examples/Shared/ColorBox.cs deleted file mode 100644 index 7438c9dca..000000000 --- a/examples/Shared/ColorBox.cs +++ /dev/null @@ -1,123 +0,0 @@ -using System; -using System.Collections.Generic; -using Spectre.Console.Rendering; - -namespace Spectre.Console.Examples; - -public sealed class ColorBox : Renderable -{ - private readonly int _height; - private int? _width; - - public ColorBox(int height) - { - _height = height; - } - - public ColorBox(int width, int height) - : this(height) - { - _width = width; - } - - protected override Measurement Measure(RenderOptions options, int maxWidth) - { - return new Measurement(1, GetWidth(maxWidth)); - } - - protected override IEnumerable Render(RenderOptions options, int maxWidth) - { - maxWidth = GetWidth(maxWidth); - - for (var y = 0; y < _height; y++) - { - for (var x = 0; x < maxWidth; x++) - { - var h = x / (float)maxWidth; - var l = 0.1f + ((y / (float)_height) * 0.7f); - var (r1, g1, b1) = ColorFromHSL(h, l, 1.0f); - var (r2, g2, b2) = ColorFromHSL(h, l + (0.7f / 10), 1.0f); - - var background = new Color((byte)(r1 * 255), (byte)(g1 * 255), (byte)(b1 * 255)); - var foreground = new Color((byte)(r2 * 255), (byte)(g2 * 255), (byte)(b2 * 255)); - - yield return new Segment("▄", new Style(foreground, background)); - } - - yield return Segment.LineBreak; - } - } - - private int GetWidth(int maxWidth) - { - var width = maxWidth; - if (_width != null) - { - width = Math.Min(_width.Value, width); - } - - return width; - } - - private static (float, float, float) ColorFromHSL(double h, double l, double s) - { - double r = 0, g = 0, b = 0; - if (l != 0) - { - if (s == 0) - { - r = g = b = l; - } - else - { - double temp2; - if (l < 0.5) - { - temp2 = l * (1.0 + s); - } - else - { - temp2 = l + s - (l * s); - } - - var temp1 = 2.0 * l - temp2; - - r = GetColorComponent(temp1, temp2, h + 1.0 / 3.0); - g = GetColorComponent(temp1, temp2, h); - b = GetColorComponent(temp1, temp2, h - 1.0 / 3.0); - } - } - - return ((float)r, (float)g, (float)b); - - } - - private static double GetColorComponent(double temp1, double temp2, double temp3) - { - if (temp3 < 0.0) - { - temp3 += 1.0; - } - else if (temp3 > 1.0) - { - temp3 -= 1.0; - } - - if (temp3 < 1.0 / 6.0) - { - return temp1 + (temp2 - temp1) * 6.0 * temp3; - } - else if (temp3 < 0.5) - { - return temp2; - } - else if (temp3 < 2.0 / 3.0) - { - return temp1 + ((temp2 - temp1) * ((2.0 / 3.0) - temp3) * 6.0); - } - else - { - return temp1; - } - } -} diff --git a/examples/Shared/Extensions/ColorExtensions.cs b/examples/Shared/Extensions/ColorExtensions.cs deleted file mode 100644 index cdc6657a5..000000000 --- a/examples/Shared/Extensions/ColorExtensions.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Spectre.Console.Examples; - -public static class ColorExtensions -{ - public static Color GetInvertedColor(this Color color) - { - return GetLuminance(color) < 140 ? Color.White : Color.Black; - } - - private static float GetLuminance(this Color color) - { - return (float)((0.2126 * color.R) + (0.7152 * color.G) + (0.0722 * color.B)); - } -} diff --git a/examples/Shared/Shared.csproj b/examples/Shared/Shared.csproj deleted file mode 100644 index 811bcd78c..000000000 --- a/examples/Shared/Shared.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - net8.0 - false - enable - - - - - - - - diff --git a/resources/nuget/Spectre.Console.Cli.md b/resources/nuget/Spectre.Console.Cli.md new file mode 100644 index 000000000..898df57f4 --- /dev/null +++ b/resources/nuget/Spectre.Console.Cli.md @@ -0,0 +1,5 @@ +# `Spectre.Console.Cli` + +`Spectre.Console.Cli` is a modern library for parsing command line arguments. While it's extremely opinionated in what it does, it tries to follow established industry conventions, and draws its inspiration from applications you use everyday. + +Detailed instructions for using this library is located on the project website, https://spectreconsole.net \ No newline at end of file diff --git a/resources/nuget/Spectre.Console.ImageSharp.md b/resources/nuget/Spectre.Console.ImageSharp.md new file mode 100644 index 000000000..2203159dc --- /dev/null +++ b/resources/nuget/Spectre.Console.ImageSharp.md @@ -0,0 +1,5 @@ +# `Spectre.Console.ImageSharp` + +A .NET library that extends [Spectre.Console](https://github.com/spectreconsole/spectre.console) with ImageSharp superpowers. + +Detailed instructions for using `Spectre.Console.ImageSharp` are located on the project website, https://spectreconsole.net/widgets/canvas-image \ No newline at end of file diff --git a/resources/nuget/Spectre.Console.Json.md b/resources/nuget/Spectre.Console.Json.md new file mode 100644 index 000000000..e03bf9fe1 --- /dev/null +++ b/resources/nuget/Spectre.Console.Json.md @@ -0,0 +1,5 @@ +# `Spectre.Console.Json` + +A .NET library that extends [Spectre.Console](https://github.com/spectreconsole/spectre.console) with JSON superpowers. + +Detailed instructions for using this library is located on the project website, https://spectreconsole.net/widgets/json \ No newline at end of file diff --git a/resources/nuget/Spectre.Console.Testing.md b/resources/nuget/Spectre.Console.Testing.md new file mode 100644 index 000000000..7dc3537d0 --- /dev/null +++ b/resources/nuget/Spectre.Console.Testing.md @@ -0,0 +1,5 @@ +# `Spectre.Console.Testing` + +A .NET library that makes it easier to write unit tests for [Spectre.Console](https://github.com/spectreconsole/spectre.console) applications. + +Detailed instructions for using this library is located on the project website, https://spectreconsole.net \ No newline at end of file diff --git a/resources/nuget/Spectre.Console.md b/resources/nuget/Spectre.Console.md new file mode 100644 index 000000000..a46f26cb5 --- /dev/null +++ b/resources/nuget/Spectre.Console.md @@ -0,0 +1,5 @@ +# `Spectre.Console` + +A .NET library that makes it easier to create beautiful, cross platform, console applications. It is heavily inspired by the excellent Python library, [Rich](https://github.com/willmcgugan/rich). + +Detailed instructions for using this library is located on the project website, https://spectreconsole.net \ No newline at end of file diff --git a/resources/nuget/logo.png b/resources/nuget/logo.png new file mode 100644 index 000000000..eebe8db61 Binary files /dev/null and b/resources/nuget/logo.png differ diff --git a/resources/scripts/Generator/Generator.csproj b/resources/scripts/Generator/Generator.csproj index 64be45be3..d2c43aa4c 100644 --- a/resources/scripts/Generator/Generator.csproj +++ b/resources/scripts/Generator/Generator.csproj @@ -43,17 +43,17 @@ - - + + - - + + - - + + diff --git a/resources/scripts/Generator/Generator.sln b/resources/scripts/Generator/Generator.sln index daea4307d..894e13072 100644 --- a/resources/scripts/Generator/Generator.sln +++ b/resources/scripts/Generator/Generator.sln @@ -7,13 +7,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Generator", "Generator.cspr EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console", "..\..\..\src\Spectre.Console\Spectre.Console.csproj", "{F75B882A-06DB-426B-9580-A7302D32E684}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.ImageSharp", "..\..\..\src\Spectre.Console.ImageSharp\Spectre.Console.ImageSharp.csproj", "{112A37CB-1EFE-4A90-BD5B-5437038BE276}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.ImageSharp", "..\..\..\src\Extensions\Spectre.Console.ImageSharp\Spectre.Console.ImageSharp.csproj", "{112A37CB-1EFE-4A90-BD5B-5437038BE276}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Library", "Library", "{CFE7445D-F971-429D-B6E6-9E68456AE00F}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Cli", "..\..\..\src\Spectre.Console.Cli\Spectre.Console.Cli.csproj", "{18A3F32D-FECD-463B-A194-6EE74EA9E5EC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spectre.Console.Json", "..\..\..\src\Spectre.Console.Json\Spectre.Console.Json.csproj", "{6C96C268-CEEE-478A-A36F-E1450AC33B73}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spectre.Console.Json", "..\..\..\src\Extensions\Spectre.Console.Json\Spectre.Console.Json.csproj", "{6C96C268-CEEE-478A-A36F-E1450AC33B73}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/.editorconfig b/src/.editorconfig index a28cf1d18..e01b77d55 100644 --- a/src/.editorconfig +++ b/src/.editorconfig @@ -98,4 +98,7 @@ dotnet_diagnostic.IDE0044.severity = warning dotnet_diagnostic.RCS1047.severity = none # RCS1090: Call 'ConfigureAwait(false)'. -dotnet_diagnostic.RCS1090.severity = warning \ No newline at end of file +dotnet_diagnostic.RCS1090.severity = warning + +# The file header is missing or not located at the top of the file +dotnet_diagnostic.SA1633.severity = none \ No newline at end of file diff --git a/src/Directory.Build.props b/src/Directory.Build.props index d8f66cadb..a3df95487 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -7,19 +7,35 @@ true true false + enable + $(NoWarn);SA1633 true + + + true + \ + Properties/Package/Logo.png + + + true + \README.md + Properties/Package/README.md + + + A library that makes it easier to create beautiful console applications. Patrik Svensson, Phil Scott, Nils Andresen, Cédric Luthi, Frank Ray Patrik Svensson, Phil Scott, Nils Andresen, Cédric Luthi, Frank Ray git https://github.com/spectreconsole/spectre.console - small-logo.png + logo.png + README.md True https://github.com/spectreconsole/spectre.console MIT @@ -31,14 +47,18 @@ true + + + + - - - + + + All - + All diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props new file mode 100644 index 000000000..b98339b97 --- /dev/null +++ b/src/Directory.Packages.props @@ -0,0 +1,30 @@ + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Spectre.Console.ImageSharp/CanvasImage.cs b/src/Extensions/Spectre.Console.ImageSharp/CanvasImage.cs similarity index 100% rename from src/Spectre.Console.ImageSharp/CanvasImage.cs rename to src/Extensions/Spectre.Console.ImageSharp/CanvasImage.cs diff --git a/src/Spectre.Console.ImageSharp/CanvasImageExtensions.cs b/src/Extensions/Spectre.Console.ImageSharp/CanvasImageExtensions.cs similarity index 100% rename from src/Spectre.Console.ImageSharp/CanvasImageExtensions.cs rename to src/Extensions/Spectre.Console.ImageSharp/CanvasImageExtensions.cs diff --git a/src/Extensions/Spectre.Console.ImageSharp/Spectre.Console.ImageSharp.csproj b/src/Extensions/Spectre.Console.ImageSharp/Spectre.Console.ImageSharp.csproj new file mode 100644 index 000000000..024122772 --- /dev/null +++ b/src/Extensions/Spectre.Console.ImageSharp/Spectre.Console.ImageSharp.csproj @@ -0,0 +1,17 @@ + + + + net8.0;net7.0;net6.0 + true + A library that extends Spectre.Console with ImageSharp superpowers. + + + + + + + + + + + diff --git a/src/Spectre.Console.Json/IJsonParser.cs b/src/Extensions/Spectre.Console.Json/IJsonParser.cs similarity index 100% rename from src/Spectre.Console.Json/IJsonParser.cs rename to src/Extensions/Spectre.Console.Json/IJsonParser.cs diff --git a/src/Spectre.Console.Json/JsonBuilder.cs b/src/Extensions/Spectre.Console.Json/JsonBuilder.cs similarity index 100% rename from src/Spectre.Console.Json/JsonBuilder.cs rename to src/Extensions/Spectre.Console.Json/JsonBuilder.cs diff --git a/src/Spectre.Console.Json/JsonParser.cs b/src/Extensions/Spectre.Console.Json/JsonParser.cs similarity index 100% rename from src/Spectre.Console.Json/JsonParser.cs rename to src/Extensions/Spectre.Console.Json/JsonParser.cs diff --git a/src/Spectre.Console.Json/JsonText.cs b/src/Extensions/Spectre.Console.Json/JsonText.cs similarity index 100% rename from src/Spectre.Console.Json/JsonText.cs rename to src/Extensions/Spectre.Console.Json/JsonText.cs diff --git a/src/Spectre.Console.Json/JsonTextExtensions.cs b/src/Extensions/Spectre.Console.Json/JsonTextExtensions.cs similarity index 100% rename from src/Spectre.Console.Json/JsonTextExtensions.cs rename to src/Extensions/Spectre.Console.Json/JsonTextExtensions.cs diff --git a/src/Spectre.Console.Json/JsonTextStyles.cs b/src/Extensions/Spectre.Console.Json/JsonTextStyles.cs similarity index 100% rename from src/Spectre.Console.Json/JsonTextStyles.cs rename to src/Extensions/Spectre.Console.Json/JsonTextStyles.cs diff --git a/src/Spectre.Console.Json/JsonToken.cs b/src/Extensions/Spectre.Console.Json/JsonToken.cs similarity index 100% rename from src/Spectre.Console.Json/JsonToken.cs rename to src/Extensions/Spectre.Console.Json/JsonToken.cs diff --git a/src/Spectre.Console.Json/JsonTokenReader.cs b/src/Extensions/Spectre.Console.Json/JsonTokenReader.cs similarity index 100% rename from src/Spectre.Console.Json/JsonTokenReader.cs rename to src/Extensions/Spectre.Console.Json/JsonTokenReader.cs diff --git a/src/Spectre.Console.Json/JsonTokenType.cs b/src/Extensions/Spectre.Console.Json/JsonTokenType.cs similarity index 100% rename from src/Spectre.Console.Json/JsonTokenType.cs rename to src/Extensions/Spectre.Console.Json/JsonTokenType.cs diff --git a/src/Spectre.Console.Json/JsonTokenizer.cs b/src/Extensions/Spectre.Console.Json/JsonTokenizer.cs similarity index 100% rename from src/Spectre.Console.Json/JsonTokenizer.cs rename to src/Extensions/Spectre.Console.Json/JsonTokenizer.cs diff --git a/src/Spectre.Console.Json/Properties/Usings.cs b/src/Extensions/Spectre.Console.Json/Properties/Usings.cs similarity index 100% rename from src/Spectre.Console.Json/Properties/Usings.cs rename to src/Extensions/Spectre.Console.Json/Properties/Usings.cs diff --git a/src/Extensions/Spectre.Console.Json/Spectre.Console.Json.csproj b/src/Extensions/Spectre.Console.Json/Spectre.Console.Json.csproj new file mode 100644 index 000000000..1c75fef8d --- /dev/null +++ b/src/Extensions/Spectre.Console.Json/Spectre.Console.Json.csproj @@ -0,0 +1,20 @@ + + + + net8.0;net7.0;net6.0;netstandard2.0 + true + true + A library that extends Spectre.Console with JSON superpowers. + + + + + + + + + + + + + diff --git a/src/Spectre.Console.Json/Syntax/JsonArray.cs b/src/Extensions/Spectre.Console.Json/Syntax/JsonArray.cs similarity index 100% rename from src/Spectre.Console.Json/Syntax/JsonArray.cs rename to src/Extensions/Spectre.Console.Json/Syntax/JsonArray.cs diff --git a/src/Spectre.Console.Json/Syntax/JsonBoolean.cs b/src/Extensions/Spectre.Console.Json/Syntax/JsonBoolean.cs similarity index 100% rename from src/Spectre.Console.Json/Syntax/JsonBoolean.cs rename to src/Extensions/Spectre.Console.Json/Syntax/JsonBoolean.cs diff --git a/src/Spectre.Console.Json/Syntax/JsonMember.cs b/src/Extensions/Spectre.Console.Json/Syntax/JsonMember.cs similarity index 100% rename from src/Spectre.Console.Json/Syntax/JsonMember.cs rename to src/Extensions/Spectre.Console.Json/Syntax/JsonMember.cs diff --git a/src/Spectre.Console.Json/Syntax/JsonNull.cs b/src/Extensions/Spectre.Console.Json/Syntax/JsonNull.cs similarity index 100% rename from src/Spectre.Console.Json/Syntax/JsonNull.cs rename to src/Extensions/Spectre.Console.Json/Syntax/JsonNull.cs diff --git a/src/Spectre.Console.Json/Syntax/JsonNumber.cs b/src/Extensions/Spectre.Console.Json/Syntax/JsonNumber.cs similarity index 100% rename from src/Spectre.Console.Json/Syntax/JsonNumber.cs rename to src/Extensions/Spectre.Console.Json/Syntax/JsonNumber.cs diff --git a/src/Spectre.Console.Json/Syntax/JsonObject.cs b/src/Extensions/Spectre.Console.Json/Syntax/JsonObject.cs similarity index 100% rename from src/Spectre.Console.Json/Syntax/JsonObject.cs rename to src/Extensions/Spectre.Console.Json/Syntax/JsonObject.cs diff --git a/src/Spectre.Console.Json/Syntax/JsonString.cs b/src/Extensions/Spectre.Console.Json/Syntax/JsonString.cs similarity index 100% rename from src/Spectre.Console.Json/Syntax/JsonString.cs rename to src/Extensions/Spectre.Console.Json/Syntax/JsonString.cs diff --git a/src/Spectre.Console.Json/Syntax/JsonSyntax.cs b/src/Extensions/Spectre.Console.Json/Syntax/JsonSyntax.cs similarity index 100% rename from src/Spectre.Console.Json/Syntax/JsonSyntax.cs rename to src/Extensions/Spectre.Console.Json/Syntax/JsonSyntax.cs diff --git a/src/Spectre.Console.Json/Syntax/JsonSyntaxVisitor.cs b/src/Extensions/Spectre.Console.Json/Syntax/JsonSyntaxVisitor.cs similarity index 100% rename from src/Spectre.Console.Json/Syntax/JsonSyntaxVisitor.cs rename to src/Extensions/Spectre.Console.Json/Syntax/JsonSyntaxVisitor.cs diff --git a/src/Spectre.Console.Analyzer.Sandbox/Program.cs b/src/Spectre.Console.Analyzer.Sandbox/Program.cs deleted file mode 100644 index 65463c464..000000000 --- a/src/Spectre.Console.Analyzer.Sandbox/Program.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Spectre.Console.Analyzer.Sandbox; - -/// -/// Sample sandbox for testing out analyzers. -/// -public static class Program -{ - /// - /// The program's entry point. - /// - public static void Main() - { - AnsiConsole.WriteLine("Project is set up with a reference to Spectre.Console.Analyzer"); - } -} \ No newline at end of file diff --git a/src/Spectre.Console.Analyzer.Sandbox/Spectre.Console.Analyzer.Sandbox.csproj b/src/Spectre.Console.Analyzer.Sandbox/Spectre.Console.Analyzer.Sandbox.csproj deleted file mode 100644 index fe8527431..000000000 --- a/src/Spectre.Console.Analyzer.Sandbox/Spectre.Console.Analyzer.Sandbox.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - net8.0 - - - - - - - - - - diff --git a/src/Spectre.Console.Analyzer.sln b/src/Spectre.Console.Analyzer.sln deleted file mode 100644 index 0d2c821e7..000000000 --- a/src/Spectre.Console.Analyzer.sln +++ /dev/null @@ -1,79 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30114.105 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Analyzer", "Spectre.Console.Analyzer\Spectre.Console.Analyzer.csproj", "{18178142-A80D-424F-882D-DB0F787210BD}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Analyzer.Sandbox", "Spectre.Console.Analyzer.Sandbox\Spectre.Console.Analyzer.Sandbox.csproj", "{44D2E280-8FCD-4FC1-9133-F61E344FD6A6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Analyzer.Tests", "..\test\Spectre.Console.Analyzer.Tests\Spectre.Console.Analyzer.Tests.csproj", "{609D5D1B-D904-4A31-B237-A04B49910166}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console", "Spectre.Console\Spectre.Console.csproj", "{6BFF310F-9601-4E5D-BC80-118AC708D72A}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {18178142-A80D-424F-882D-DB0F787210BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {18178142-A80D-424F-882D-DB0F787210BD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {18178142-A80D-424F-882D-DB0F787210BD}.Debug|x64.ActiveCfg = Debug|Any CPU - {18178142-A80D-424F-882D-DB0F787210BD}.Debug|x64.Build.0 = Debug|Any CPU - {18178142-A80D-424F-882D-DB0F787210BD}.Debug|x86.ActiveCfg = Debug|Any CPU - {18178142-A80D-424F-882D-DB0F787210BD}.Debug|x86.Build.0 = Debug|Any CPU - {18178142-A80D-424F-882D-DB0F787210BD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {18178142-A80D-424F-882D-DB0F787210BD}.Release|Any CPU.Build.0 = Release|Any CPU - {18178142-A80D-424F-882D-DB0F787210BD}.Release|x64.ActiveCfg = Release|Any CPU - {18178142-A80D-424F-882D-DB0F787210BD}.Release|x64.Build.0 = Release|Any CPU - {18178142-A80D-424F-882D-DB0F787210BD}.Release|x86.ActiveCfg = Release|Any CPU - {18178142-A80D-424F-882D-DB0F787210BD}.Release|x86.Build.0 = Release|Any CPU - {44D2E280-8FCD-4FC1-9133-F61E344FD6A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {44D2E280-8FCD-4FC1-9133-F61E344FD6A6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {44D2E280-8FCD-4FC1-9133-F61E344FD6A6}.Debug|x64.ActiveCfg = Debug|Any CPU - {44D2E280-8FCD-4FC1-9133-F61E344FD6A6}.Debug|x64.Build.0 = Debug|Any CPU - {44D2E280-8FCD-4FC1-9133-F61E344FD6A6}.Debug|x86.ActiveCfg = Debug|Any CPU - {44D2E280-8FCD-4FC1-9133-F61E344FD6A6}.Debug|x86.Build.0 = Debug|Any CPU - {44D2E280-8FCD-4FC1-9133-F61E344FD6A6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {44D2E280-8FCD-4FC1-9133-F61E344FD6A6}.Release|Any CPU.Build.0 = Release|Any CPU - {44D2E280-8FCD-4FC1-9133-F61E344FD6A6}.Release|x64.ActiveCfg = Release|Any CPU - {44D2E280-8FCD-4FC1-9133-F61E344FD6A6}.Release|x64.Build.0 = Release|Any CPU - {44D2E280-8FCD-4FC1-9133-F61E344FD6A6}.Release|x86.ActiveCfg = Release|Any CPU - {44D2E280-8FCD-4FC1-9133-F61E344FD6A6}.Release|x86.Build.0 = Release|Any CPU - {609D5D1B-D904-4A31-B237-A04B49910166}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {609D5D1B-D904-4A31-B237-A04B49910166}.Debug|Any CPU.Build.0 = Debug|Any CPU - {609D5D1B-D904-4A31-B237-A04B49910166}.Debug|x64.ActiveCfg = Debug|Any CPU - {609D5D1B-D904-4A31-B237-A04B49910166}.Debug|x64.Build.0 = Debug|Any CPU - {609D5D1B-D904-4A31-B237-A04B49910166}.Debug|x86.ActiveCfg = Debug|Any CPU - {609D5D1B-D904-4A31-B237-A04B49910166}.Debug|x86.Build.0 = Debug|Any CPU - {609D5D1B-D904-4A31-B237-A04B49910166}.Release|Any CPU.ActiveCfg = Release|Any CPU - {609D5D1B-D904-4A31-B237-A04B49910166}.Release|Any CPU.Build.0 = Release|Any CPU - {609D5D1B-D904-4A31-B237-A04B49910166}.Release|x64.ActiveCfg = Release|Any CPU - {609D5D1B-D904-4A31-B237-A04B49910166}.Release|x64.Build.0 = Release|Any CPU - {609D5D1B-D904-4A31-B237-A04B49910166}.Release|x86.ActiveCfg = Release|Any CPU - {609D5D1B-D904-4A31-B237-A04B49910166}.Release|x86.Build.0 = Release|Any CPU - {6BFF310F-9601-4E5D-BC80-118AC708D72A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6BFF310F-9601-4E5D-BC80-118AC708D72A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6BFF310F-9601-4E5D-BC80-118AC708D72A}.Debug|x64.ActiveCfg = Debug|Any CPU - {6BFF310F-9601-4E5D-BC80-118AC708D72A}.Debug|x64.Build.0 = Debug|Any CPU - {6BFF310F-9601-4E5D-BC80-118AC708D72A}.Debug|x86.ActiveCfg = Debug|Any CPU - {6BFF310F-9601-4E5D-BC80-118AC708D72A}.Debug|x86.Build.0 = Debug|Any CPU - {6BFF310F-9601-4E5D-BC80-118AC708D72A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6BFF310F-9601-4E5D-BC80-118AC708D72A}.Release|Any CPU.Build.0 = Release|Any CPU - {6BFF310F-9601-4E5D-BC80-118AC708D72A}.Release|x64.ActiveCfg = Release|Any CPU - {6BFF310F-9601-4E5D-BC80-118AC708D72A}.Release|x64.Build.0 = Release|Any CPU - {6BFF310F-9601-4E5D-BC80-118AC708D72A}.Release|x86.ActiveCfg = Release|Any CPU - {6BFF310F-9601-4E5D-BC80-118AC708D72A}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {3BABBA82-B60D-45CE-9C56-8B833474DD3C} - EndGlobalSection -EndGlobal diff --git a/src/Spectre.Console.Analyzer.v3.ncrunchsolution b/src/Spectre.Console.Analyzer.v3.ncrunchsolution deleted file mode 100644 index 10420ac91..000000000 --- a/src/Spectre.Console.Analyzer.v3.ncrunchsolution +++ /dev/null @@ -1,6 +0,0 @@ - - - True - True - - \ No newline at end of file diff --git a/src/Spectre.Console.Analyzer/Analyzers/FavorInstanceAnsiConsoleOverStaticAnalyzer.cs b/src/Spectre.Console.Analyzer/Analyzers/FavorInstanceAnsiConsoleOverStaticAnalyzer.cs deleted file mode 100644 index 379103b0b..000000000 --- a/src/Spectre.Console.Analyzer/Analyzers/FavorInstanceAnsiConsoleOverStaticAnalyzer.cs +++ /dev/null @@ -1,90 +0,0 @@ -namespace Spectre.Console.Analyzer; - -/// -/// Analyzer to suggest using available instances of AnsiConsole over the static methods. -/// -[DiagnosticAnalyzer(LanguageNames.CSharp)] -public class FavorInstanceAnsiConsoleOverStaticAnalyzer : SpectreAnalyzer -{ - private static readonly DiagnosticDescriptor _diagnosticDescriptor = - Descriptors.S1010_FavorInstanceAnsiConsoleOverStatic; - - /// - public override ImmutableArray SupportedDiagnostics => - ImmutableArray.Create(_diagnosticDescriptor); - - /// - protected override void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartContext) - { - var ansiConsoleType = compilationStartContext.Compilation.GetTypeByMetadataName("Spectre.Console.AnsiConsole"); - if (ansiConsoleType == null) - { - return; - } - - compilationStartContext.RegisterOperationAction( - context => - { - // if this operation isn't an invocation against one of the System.Console methods - // defined in _methods then we can safely stop analyzing and return; - var invocationOperation = (IInvocationOperation)context.Operation; - if (!SymbolEqualityComparer.Default.Equals(invocationOperation.TargetMethod.ContainingType, ansiConsoleType)) - { - return; - } - - // if we aren't in a method then it might be too complex for us to handle. - if (!invocationOperation.Syntax.Ancestors().OfType().Any()) - { - return; - } - - if (!HasFieldAnsiConsole(invocationOperation.Syntax) && - !HasParameterAnsiConsole(invocationOperation.Syntax)) - { - return; - } - - var methodSymbol = invocationOperation.TargetMethod; - - var displayString = SymbolDisplay.ToDisplayString( - methodSymbol, - SymbolDisplayFormat.CSharpShortErrorMessageFormat - .WithParameterOptions(SymbolDisplayParameterOptions.None) - .WithGenericsOptions(SymbolDisplayGenericsOptions.None)); - - context.ReportDiagnostic( - Diagnostic.Create( - _diagnosticDescriptor, - invocationOperation.Syntax.GetLocation(), - displayString)); - }, OperationKind.Invocation); - } - - private static bool HasParameterAnsiConsole(SyntaxNode syntaxNode) - { - return syntaxNode - .Ancestors().OfType() - .First() - .ParameterList.Parameters - .Any(i => i.Type?.NormalizeWhitespace()?.ToString() == "IAnsiConsole"); - } - - private static bool HasFieldAnsiConsole(SyntaxNode syntaxNode) - { - var isStatic = syntaxNode - .Ancestors() - .OfType() - .First() - .Modifiers.Any(i => i.IsKind(SyntaxKind.StaticKeyword)); - - return syntaxNode - .Ancestors().OfType() - .First() - .Members - .OfType() - .Any(i => - i.Declaration.Type.NormalizeWhitespace().ToString() == "IAnsiConsole" && - (!isStatic ^ i.Modifiers.Any(modifier => modifier.IsKind(SyntaxKind.StaticKeyword)))); - } -} \ No newline at end of file diff --git a/src/Spectre.Console.Analyzer/Analyzers/NoConcurrentLiveRenderablesAnalyzer.cs b/src/Spectre.Console.Analyzer/Analyzers/NoConcurrentLiveRenderablesAnalyzer.cs deleted file mode 100644 index bae736379..000000000 --- a/src/Spectre.Console.Analyzer/Analyzers/NoConcurrentLiveRenderablesAnalyzer.cs +++ /dev/null @@ -1,74 +0,0 @@ -namespace Spectre.Console.Analyzer; - -/// -/// Analyzer to detect calls to live renderables within a live renderable context. -/// -[DiagnosticAnalyzer(LanguageNames.CSharp)] -[Shared] -public class NoConcurrentLiveRenderablesAnalyzer : SpectreAnalyzer -{ - private static readonly DiagnosticDescriptor _diagnosticDescriptor = - Descriptors.S1020_AvoidConcurrentCallsToMultipleLiveRenderables; - - /// - public override ImmutableArray SupportedDiagnostics => - ImmutableArray.Create(_diagnosticDescriptor); - - /// - protected override void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartContext) - { - var liveTypes = Constants.LiveRenderables - .Select(i => compilationStartContext.Compilation.GetTypeByMetadataName(i)) - .Where(i => i != null) - .ToImmutableArray(); - - if (liveTypes.Length == 0) - { - return; - } - - compilationStartContext.RegisterOperationAction( - context => - { - var invocationOperation = (IInvocationOperation)context.Operation; - var methodSymbol = invocationOperation.TargetMethod; - - const string StartMethod = "Start"; - if (methodSymbol.Name != StartMethod) - { - return; - } - - if (liveTypes.All(i => !SymbolEqualityComparer.Default.Equals(i, methodSymbol.ContainingType))) - { - return; - } - - var model = context.Operation.SemanticModel!; - var parentInvocations = invocationOperation - .Syntax.Ancestors() - .OfType() - .Select(i => model.GetOperation(i, context.CancellationToken)) - .OfType() - .ToList(); - - if (parentInvocations.All(parent => - parent.TargetMethod.Name != StartMethod || !liveTypes.Contains(parent.TargetMethod.ContainingType, SymbolEqualityComparer.Default))) - { - return; - } - - var displayString = SymbolDisplay.ToDisplayString( - methodSymbol, - SymbolDisplayFormat.CSharpShortErrorMessageFormat - .WithParameterOptions(SymbolDisplayParameterOptions.None) - .WithGenericsOptions(SymbolDisplayGenericsOptions.None)); - - context.ReportDiagnostic( - Diagnostic.Create( - _diagnosticDescriptor, - invocationOperation.Syntax.GetLocation(), - displayString)); - }, OperationKind.Invocation); - } -} \ No newline at end of file diff --git a/src/Spectre.Console.Analyzer/Analyzers/NoPromptsDuringLiveRenderablesAnalyzer.cs b/src/Spectre.Console.Analyzer/Analyzers/NoPromptsDuringLiveRenderablesAnalyzer.cs deleted file mode 100644 index 749716ead..000000000 --- a/src/Spectre.Console.Analyzer/Analyzers/NoPromptsDuringLiveRenderablesAnalyzer.cs +++ /dev/null @@ -1,80 +0,0 @@ -namespace Spectre.Console.Analyzer; - -/// -/// Analyzer to detect calls to live renderables within a live renderable context. -/// -[DiagnosticAnalyzer(LanguageNames.CSharp)] -[Shared] -public class NoPromptsDuringLiveRenderablesAnalyzer : SpectreAnalyzer -{ - private static readonly DiagnosticDescriptor _diagnosticDescriptor = - Descriptors.S1021_AvoidPromptCallsDuringLiveRenderables; - - /// - public override ImmutableArray SupportedDiagnostics => - ImmutableArray.Create(_diagnosticDescriptor); - - /// - protected override void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartContext) - { - var ansiConsoleType = compilationStartContext.Compilation.GetTypeByMetadataName("Spectre.Console.AnsiConsole"); - var ansiConsoleExtensionsType = compilationStartContext.Compilation.GetTypeByMetadataName("Spectre.Console.AnsiConsoleExtensions"); - - if (ansiConsoleType is null && ansiConsoleExtensionsType is null) - { - return; - } - - compilationStartContext.RegisterOperationAction( - context => - { - // if this operation isn't an invocation against one of the System.Console methods - // defined in _methods then we can safely stop analyzing and return; - var invocationOperation = (IInvocationOperation)context.Operation; - var methodSymbol = invocationOperation.TargetMethod; - - var promptMethods = ImmutableArray.Create("Ask", "Confirm", "Prompt"); - if (!promptMethods.Contains(methodSymbol.Name)) - { - return; - } - - if (!SymbolEqualityComparer.Default.Equals(methodSymbol.ContainingType, ansiConsoleType) && - !SymbolEqualityComparer.Default.Equals(methodSymbol.ContainingType, ansiConsoleExtensionsType)) - { - return; - } - - var model = context.Operation.SemanticModel!; - var parentInvocations = invocationOperation - .Syntax.Ancestors() - .OfType() - .Select(i => model.GetOperation(i, context.CancellationToken)) - .OfType() - .ToList(); - - var liveTypes = Constants.LiveRenderables - .Select(i => context.Compilation.GetTypeByMetadataName(i)) - .ToImmutableArray(); - - if (parentInvocations.All(parent => - parent.TargetMethod.Name != "Start" || - !liveTypes.Contains(parent.TargetMethod.ContainingType, SymbolEqualityComparer.Default))) - { - return; - } - - var displayString = SymbolDisplay.ToDisplayString( - methodSymbol, - SymbolDisplayFormat.CSharpShortErrorMessageFormat - .WithParameterOptions(SymbolDisplayParameterOptions.None) - .WithGenericsOptions(SymbolDisplayGenericsOptions.None)); - - context.ReportDiagnostic( - Diagnostic.Create( - _diagnosticDescriptor, - invocationOperation.Syntax.GetLocation(), - displayString)); - }, OperationKind.Invocation); - } -} \ No newline at end of file diff --git a/src/Spectre.Console.Analyzer/Analyzers/SpectreAnalyzer.cs b/src/Spectre.Console.Analyzer/Analyzers/SpectreAnalyzer.cs deleted file mode 100644 index 54436c8a6..000000000 --- a/src/Spectre.Console.Analyzer/Analyzers/SpectreAnalyzer.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Spectre.Console.Analyzer; - -/// -/// Base class for Spectre analyzers. -/// -public abstract class SpectreAnalyzer : DiagnosticAnalyzer -{ - /// - public override void Initialize(AnalysisContext context) - { - context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.Analyze | GeneratedCodeAnalysisFlags.ReportDiagnostics); - context.EnableConcurrentExecution(); - - context.RegisterCompilationStartAction(AnalyzeCompilation); - } - - /// - /// Analyze compilation. - /// - /// Compilation Start Analysis Context. - protected abstract void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartContext); -} \ No newline at end of file diff --git a/src/Spectre.Console.Analyzer/Analyzers/UseSpectreInsteadOfSystemConsoleAnalyzer.cs b/src/Spectre.Console.Analyzer/Analyzers/UseSpectreInsteadOfSystemConsoleAnalyzer.cs deleted file mode 100644 index 9f0273932..000000000 --- a/src/Spectre.Console.Analyzer/Analyzers/UseSpectreInsteadOfSystemConsoleAnalyzer.cs +++ /dev/null @@ -1,61 +0,0 @@ -namespace Spectre.Console.Analyzer; - -/// -/// Analyzer to enforce the use of AnsiConsole over System.Console for known methods. -/// -[DiagnosticAnalyzer(LanguageNames.CSharp)] -public class UseSpectreInsteadOfSystemConsoleAnalyzer : SpectreAnalyzer -{ - private static readonly DiagnosticDescriptor _diagnosticDescriptor = - Descriptors.S1000_UseAnsiConsoleOverSystemConsole; - - private static readonly string[] _methods = { "WriteLine", "Write" }; - - /// - public override ImmutableArray SupportedDiagnostics => - ImmutableArray.Create(_diagnosticDescriptor); - - /// - protected override void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartContext) - { - var systemConsoleType = compilationStartContext.Compilation.GetTypeByMetadataName("System.Console"); - var spectreConsoleType = compilationStartContext.Compilation.GetTypeByMetadataName("Spectre.Console.AnsiConsole"); - if (systemConsoleType == null || spectreConsoleType == null) - { - return; - } - - compilationStartContext.RegisterOperationAction( - context => - { - // if this operation isn't an invocation against one of the System.Console methods - // defined in _methods then we can safely stop analyzing and return; - var invocationOperation = (IInvocationOperation)context.Operation; - - var methodName = System.Array.Find(_methods, i => i.Equals(invocationOperation.TargetMethod.Name)); - if (methodName == null) - { - return; - } - - if (!SymbolEqualityComparer.Default.Equals(invocationOperation.TargetMethod.ContainingType, systemConsoleType)) - { - return; - } - - var methodSymbol = invocationOperation.TargetMethod; - - var displayString = SymbolDisplay.ToDisplayString( - methodSymbol, - SymbolDisplayFormat.CSharpShortErrorMessageFormat - .WithParameterOptions(SymbolDisplayParameterOptions.None) - .WithGenericsOptions(SymbolDisplayGenericsOptions.None)); - - context.ReportDiagnostic( - Diagnostic.Create( - _diagnosticDescriptor, - invocationOperation.Syntax.GetLocation(), - displayString)); - }, OperationKind.Invocation); - } -} \ No newline at end of file diff --git a/src/Spectre.Console.Analyzer/Constants.cs b/src/Spectre.Console.Analyzer/Constants.cs deleted file mode 100644 index e61707165..000000000 --- a/src/Spectre.Console.Analyzer/Constants.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Spectre.Console.Analyzer; - -internal static class Constants -{ - internal const string StaticInstance = "AnsiConsole"; - internal const string SpectreConsole = "Spectre.Console"; - - internal static readonly string[] LiveRenderables = - { - "Spectre.Console.LiveDisplay", - "Spectre.Console.Progress", - "Spectre.Console.Status", - }; -} \ No newline at end of file diff --git a/src/Spectre.Console.Analyzer/Descriptors.cs b/src/Spectre.Console.Analyzer/Descriptors.cs deleted file mode 100644 index 592a6df52..000000000 --- a/src/Spectre.Console.Analyzer/Descriptors.cs +++ /dev/null @@ -1,76 +0,0 @@ -using static Microsoft.CodeAnalysis.DiagnosticSeverity; -using static Spectre.Console.Analyzer.Descriptors.Category; - -namespace Spectre.Console.Analyzer; - -/// -/// Code analysis descriptors. -/// -public static class Descriptors -{ - internal enum Category - { - Usage, // 1xxx - } - - private static readonly ConcurrentDictionary _categoryMapping = new(); - - private static DiagnosticDescriptor Rule(string id, string title, Category category, DiagnosticSeverity defaultSeverity, string messageFormat, string? description = null) - { - var helpLink = $"https://spectreconsole.net/analyzer/rules/{id.ToLowerInvariant()}"; - const bool IsEnabledByDefault = true; - return new DiagnosticDescriptor( - id, - title, - messageFormat, - _categoryMapping.GetOrAdd(category, c => c.ToString()), - defaultSeverity, - IsEnabledByDefault, - description, - helpLink); - } - - /// - /// Gets definitions of diagnostics Spectre1000. - /// - public static DiagnosticDescriptor S1000_UseAnsiConsoleOverSystemConsole { get; } = - Rule( - "Spectre1000", - "Use AnsiConsole instead of System.Console", - Usage, - Warning, - "Use AnsiConsole instead of System.Console"); - - /// - /// Gets definitions of diagnostics Spectre1010. - /// - public static DiagnosticDescriptor S1010_FavorInstanceAnsiConsoleOverStatic { get; } = - Rule( - "Spectre1010", - "Favor the use of the instance of AnsiConsole over the static helper.", - Usage, - Info, - "Favor the use of the instance of AnsiConsole over the static helper."); - - /// - /// Gets definitions of diagnostics Spectre1020. - /// - public static DiagnosticDescriptor S1020_AvoidConcurrentCallsToMultipleLiveRenderables { get; } = - Rule( - "Spectre1020", - "Avoid calling other live renderables while a current renderable is running.", - Usage, - Warning, - "Avoid calling other live renderables while a current renderable is running."); - - /// - /// Gets definitions of diagnostics Spectre1020. - /// - public static DiagnosticDescriptor S1021_AvoidPromptCallsDuringLiveRenderables { get; } = - Rule( - "Spectre1021", - "Avoid prompting for input while a current renderable is running.", - Usage, - Warning, - "Avoid prompting for input while a current renderable is running."); -} \ No newline at end of file diff --git a/src/Spectre.Console.Analyzer/Fixes/CodeActions/SwitchToAnsiConsoleAction.cs b/src/Spectre.Console.Analyzer/Fixes/CodeActions/SwitchToAnsiConsoleAction.cs deleted file mode 100644 index 922524fa6..000000000 --- a/src/Spectre.Console.Analyzer/Fixes/CodeActions/SwitchToAnsiConsoleAction.cs +++ /dev/null @@ -1,202 +0,0 @@ -using Microsoft.CodeAnalysis.Editing; -using Microsoft.CodeAnalysis.Simplification; - -namespace Spectre.Console.Analyzer.CodeActions; - -/// -/// Code action to change calls to System.Console to AnsiConsole. -/// -public class SwitchToAnsiConsoleAction : CodeAction -{ - private readonly Document _document; - private readonly InvocationExpressionSyntax _originalInvocation; - - /// - /// Initializes a new instance of the class. - /// - /// Document to change. - /// The method to change. - /// Title of the fix. - public SwitchToAnsiConsoleAction(Document document, InvocationExpressionSyntax originalInvocation, string title) - { - _document = document; - _originalInvocation = originalInvocation; - Title = title; - } - - /// - public override string Title { get; } - - /// - public override string EquivalenceKey => Title; - - /// - protected override async Task GetChangedDocumentAsync(CancellationToken cancellationToken) - { - var editor = await DocumentEditor.CreateAsync(_document, cancellationToken).ConfigureAwait(false); - var compilation = editor.SemanticModel.Compilation; - - var operation = editor.SemanticModel.GetOperation(_originalInvocation, cancellationToken) as IInvocationOperation; - if (operation == null) - { - return _document; - } - - // If there is an IAnsiConsole passed into the method then we'll use it. - // otherwise we'll check for a field level instance. - // if neither of those exist we'll fall back to the static param. - var spectreConsoleSymbol = compilation.GetTypeByMetadataName("Spectre.Console.AnsiConsole"); - var iansiConsoleSymbol = compilation.GetTypeByMetadataName("Spectre.Console.IAnsiConsole"); - - ISymbol? accessibleConsoleSymbol = spectreConsoleSymbol; - if (iansiConsoleSymbol != null) - { - var isInStaticContext = IsInStaticContext(operation, cancellationToken, out var parentStaticMemberStartPosition); - - foreach (var symbol in editor.SemanticModel.LookupSymbols(operation.Syntax.GetLocation().SourceSpan.Start)) - { - // LookupSymbols check the accessibility of the symbol, but it can - // suggest instance members when the current context is static. - var symbolType = symbol switch - { - IParameterSymbol parameter => parameter.Type, - IFieldSymbol field when !isInStaticContext || field.IsStatic => field.Type, - IPropertySymbol { GetMethod: not null } property when !isInStaticContext || property.IsStatic => property.Type, - ILocalSymbol local => local.Type, - _ => null, - }; - - // Locals can be returned even if there are not valid in the current context. For instance, - // it can return locals declared after the current location. Or it can return locals that - // should not be accessible in a static local function. - // - // void Sample() - // { - // int local = 0; - // static void LocalFunction() => local; <-- local is invalid here but LookupSymbols suggests it - // } - // - // Parameters from the ancestor methods or local functions are also returned even if the operation is in a static local function. - if (symbol.Kind is SymbolKind.Local or SymbolKind.Parameter) - { - var localPosition = symbol.DeclaringSyntaxReferences.FirstOrDefault()?.GetSyntax(cancellationToken).GetLocation().SourceSpan.Start; - - // The local is not part of the source tree - if (localPosition == null) - { - break; - } - - // The local is declared after the current expression - if (localPosition > _originalInvocation.Span.Start) - { - break; - } - - // The local is declared outside the static local function - if (isInStaticContext && localPosition < parentStaticMemberStartPosition) - { - break; - } - } - - if (IsOrImplementSymbol(symbolType, iansiConsoleSymbol)) - { - accessibleConsoleSymbol = symbol; - break; - } - } - } - - if (accessibleConsoleSymbol == null) - { - return _document; - } - - // Replace the original invocation - var generator = editor.Generator; - var consoleExpression = accessibleConsoleSymbol switch - { - ITypeSymbol typeSymbol => generator.TypeExpression(typeSymbol, addImport: true).WithAdditionalAnnotations(Simplifier.AddImportsAnnotation), - _ => generator.IdentifierName(accessibleConsoleSymbol.Name), - }; - - var newExpression = generator.InvocationExpression(generator.MemberAccessExpression(consoleExpression, operation.TargetMethod.Name), _originalInvocation.ArgumentList.Arguments) - .WithLeadingTrivia(_originalInvocation.GetLeadingTrivia()) - .WithTrailingTrivia(_originalInvocation.GetTrailingTrivia()); - - editor.ReplaceNode(_originalInvocation, newExpression); - - return editor.GetChangedDocument(); - } - - private static bool IsOrImplementSymbol(ITypeSymbol? symbol, ITypeSymbol interfaceSymbol) - { - if (symbol == null) - { - return false; - } - - if (SymbolEqualityComparer.Default.Equals(symbol, interfaceSymbol)) - { - return true; - } - - foreach (var iface in symbol.AllInterfaces) - { - if (SymbolEqualityComparer.Default.Equals(iface, interfaceSymbol)) - { - return true; - } - } - - return false; - } - - private static bool IsInStaticContext(IOperation operation, CancellationToken cancellationToken, out int parentStaticMemberStartPosition) - { - // Local functions can be nested, and an instance local function can be declared - // in a static local function. So, you need to continue to check ancestors when a - // local function is not static. - foreach (var member in operation.Syntax.Ancestors()) - { - if (member is LocalFunctionStatementSyntax localFunction) - { - var symbol = operation.SemanticModel!.GetDeclaredSymbol(localFunction, cancellationToken); - if (symbol != null && symbol.IsStatic) - { - parentStaticMemberStartPosition = localFunction.GetLocation().SourceSpan.Start; - return true; - } - } - else if (member is LambdaExpressionSyntax lambdaExpression) - { - var symbol = operation.SemanticModel!.GetSymbolInfo(lambdaExpression, cancellationToken).Symbol; - if (symbol != null && symbol.IsStatic) - { - parentStaticMemberStartPosition = lambdaExpression.GetLocation().SourceSpan.Start; - return true; - } - } - else if (member is AnonymousMethodExpressionSyntax anonymousMethod) - { - var symbol = operation.SemanticModel!.GetSymbolInfo(anonymousMethod, cancellationToken).Symbol; - if (symbol != null && symbol.IsStatic) - { - parentStaticMemberStartPosition = anonymousMethod.GetLocation().SourceSpan.Start; - return true; - } - } - else if (member is MethodDeclarationSyntax methodDeclaration) - { - parentStaticMemberStartPosition = methodDeclaration.GetLocation().SourceSpan.Start; - - var symbol = operation.SemanticModel!.GetDeclaredSymbol(methodDeclaration, cancellationToken); - return symbol != null && symbol.IsStatic; - } - } - - parentStaticMemberStartPosition = -1; - return false; - } -} \ No newline at end of file diff --git a/src/Spectre.Console.Analyzer/Fixes/FixProviders/StaticAnsiConsoleToInstanceFix.cs b/src/Spectre.Console.Analyzer/Fixes/FixProviders/StaticAnsiConsoleToInstanceFix.cs deleted file mode 100644 index d930d5ccf..000000000 --- a/src/Spectre.Console.Analyzer/Fixes/FixProviders/StaticAnsiConsoleToInstanceFix.cs +++ /dev/null @@ -1,35 +0,0 @@ -namespace Spectre.Console.Analyzer.FixProviders; - -/// -/// Fix provider to change System.Console calls to AnsiConsole calls. -/// -[ExportCodeFixProvider(LanguageNames.CSharp)] -[Shared] -public class StaticAnsiConsoleToInstanceFix : CodeFixProvider -{ - /// - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create( - Descriptors.S1010_FavorInstanceAnsiConsoleOverStatic.Id); - - /// - public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; - - /// - public override async Task RegisterCodeFixesAsync(CodeFixContext context) - { - var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false); - if (root != null) - { - var methodDeclaration = root.FindNode(context.Span, getInnermostNodeForTie: true).FirstAncestorOrSelf(); - if (methodDeclaration != null) - { - context.RegisterCodeFix( - new SwitchToAnsiConsoleAction( - context.Document, - methodDeclaration, - "Convert static AnsiConsole calls to local instance."), - context.Diagnostics); - } - } - } -} \ No newline at end of file diff --git a/src/Spectre.Console.Analyzer/Fixes/FixProviders/SystemConsoleToAnsiConsoleFix.cs b/src/Spectre.Console.Analyzer/Fixes/FixProviders/SystemConsoleToAnsiConsoleFix.cs deleted file mode 100644 index a90d99daa..000000000 --- a/src/Spectre.Console.Analyzer/Fixes/FixProviders/SystemConsoleToAnsiConsoleFix.cs +++ /dev/null @@ -1,35 +0,0 @@ -namespace Spectre.Console.Analyzer.FixProviders; - -/// -/// Fix provider to change System.Console calls to AnsiConsole calls. -/// -[ExportCodeFixProvider(LanguageNames.CSharp)] -[Shared] -public class SystemConsoleToAnsiConsoleFix : CodeFixProvider -{ - /// - public sealed override ImmutableArray FixableDiagnosticIds => ImmutableArray.Create( - Descriptors.S1000_UseAnsiConsoleOverSystemConsole.Id); - - /// - public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; - - /// - public override async Task RegisterCodeFixesAsync(CodeFixContext context) - { - var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false); - if (root != null) - { - var methodDeclaration = root.FindNode(context.Span).FirstAncestorOrSelf(); - if (methodDeclaration != null) - { - context.RegisterCodeFix( - new SwitchToAnsiConsoleAction( - context.Document, - methodDeclaration, - "Convert static call to AnsiConsole to Spectre.Console.AnsiConsole"), - context.Diagnostics); - } - } - } -} \ No newline at end of file diff --git a/src/Spectre.Console.Analyzer/Fixes/Syntax.cs b/src/Spectre.Console.Analyzer/Fixes/Syntax.cs deleted file mode 100644 index 6cedc6884..000000000 --- a/src/Spectre.Console.Analyzer/Fixes/Syntax.cs +++ /dev/null @@ -1,8 +0,0 @@ -using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; - -namespace Spectre.Console.Analyzer; - -internal static class Syntax -{ - public static readonly UsingDirectiveSyntax SpectreUsing = UsingDirective(QualifiedName(IdentifierName("Spectre"), IdentifierName("Console"))); -} \ No newline at end of file diff --git a/src/Spectre.Console.Analyzer/Properties/Usings.cs b/src/Spectre.Console.Analyzer/Properties/Usings.cs deleted file mode 100644 index b48e0f2d9..000000000 --- a/src/Spectre.Console.Analyzer/Properties/Usings.cs +++ /dev/null @@ -1,14 +0,0 @@ -global using System.Collections.Concurrent; -global using System.Collections.Immutable; -global using System.Composition; -global using System.Linq; -global using System.Threading; -global using System.Threading.Tasks; -global using Microsoft.CodeAnalysis; -global using Microsoft.CodeAnalysis.CodeActions; -global using Microsoft.CodeAnalysis.CodeFixes; -global using Microsoft.CodeAnalysis.CSharp; -global using Microsoft.CodeAnalysis.CSharp.Syntax; -global using Microsoft.CodeAnalysis.Diagnostics; -global using Microsoft.CodeAnalysis.Operations; -global using Spectre.Console.Analyzer.CodeActions; \ No newline at end of file diff --git a/src/Spectre.Console.Analyzer/Spectre.Console.Analyzer.csproj b/src/Spectre.Console.Analyzer/Spectre.Console.Analyzer.csproj deleted file mode 100644 index c25a8e1fc..000000000 --- a/src/Spectre.Console.Analyzer/Spectre.Console.Analyzer.csproj +++ /dev/null @@ -1,33 +0,0 @@ - - - - Best practice analyzers for Spectre.Console. - netstandard2.0 - true - true - false - enable - true - true - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Spectre.Console.Cli/Spectre.Console.Cli.csproj b/src/Spectre.Console.Cli/Spectre.Console.Cli.csproj index 9d8573175..4eab38555 100644 --- a/src/Spectre.Console.Cli/Spectre.Console.Cli.csproj +++ b/src/Spectre.Console.Cli/Spectre.Console.Cli.csproj @@ -2,19 +2,15 @@ net8.0;net7.0;net6.0;netstandard2.0 - enable true - SA1633 - - + + - - - + @@ -23,9 +19,9 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Spectre.Console.ImageSharp/Spectre.Console.ImageSharp.csproj b/src/Spectre.Console.ImageSharp/Spectre.Console.ImageSharp.csproj deleted file mode 100644 index 73a306d56..000000000 --- a/src/Spectre.Console.ImageSharp/Spectre.Console.ImageSharp.csproj +++ /dev/null @@ -1,23 +0,0 @@ - - - - net8.0;net7.0;net6.0 - enable - true - A library that extends Spectre.Console with ImageSharp superpowers. - - - - - - - - - - - - - - - - diff --git a/src/Spectre.Console.Json/Spectre.Console.Json.csproj b/src/Spectre.Console.Json/Spectre.Console.Json.csproj deleted file mode 100644 index 03e23d987..000000000 --- a/src/Spectre.Console.Json/Spectre.Console.Json.csproj +++ /dev/null @@ -1,26 +0,0 @@ - - - - net8.0;net7.0;net6.0;netstandard2.0 - enable - true - true - A library that extends Spectre.Console with JSON superpowers. - - - - - - - - - - - - - - - - - - diff --git a/src/Spectre.Console.Testing/Spectre.Console.Testing.csproj b/src/Spectre.Console.Testing/Spectre.Console.Testing.csproj index 3dd0bacd7..4b65da974 100644 --- a/src/Spectre.Console.Testing/Spectre.Console.Testing.csproj +++ b/src/Spectre.Console.Testing/Spectre.Console.Testing.csproj @@ -3,21 +3,15 @@ net8.0;net7.0;net6.0 false - enable true Contains testing utilities for Spectre.Console. - + - - - - - diff --git a/src/Spectre.Console.sln b/src/Spectre.Console.sln index 5b772532e..756d7c138 100644 --- a/src/Spectre.Console.sln +++ b/src/Spectre.Console.sln @@ -5,7 +5,7 @@ VisualStudioVersion = 17.1.32414.318 MinimumVisualStudioVersion = 15.0.26124.0 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console", "Spectre.Console\Spectre.Console.csproj", "{80DCBEF3-99D6-46C0-9C5B-42B4534D9113}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Meta", "Meta", "{20595AD4-8D75-4AF8-B6BC-9C38C160423F}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{20595AD4-8D75-4AF8-B6BC-9C38C160423F}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig Directory.Build.props = Directory.Build.props @@ -13,28 +13,34 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Meta", "Meta", "{20595AD4-8 ..\dotnet-tools.json = ..\dotnet-tools.json ..\global.json = ..\global.json stylecop.json = stylecop.json + Directory.Packages.props = Directory.Packages.props EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "GitHub", "GitHub", "{C3E2CB5C-1517-4C75-B59A-93D4E22BEC8D}" ProjectSection(SolutionItems) = preProject ..\.github\workflows\ci.yaml = ..\.github\workflows\ci.yaml - ..\.github\workflows\docs.yaml = ..\.github\workflows\docs.yaml ..\.github\workflows\publish.yaml = ..\.github\workflows\publish.yaml EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.ImageSharp", "Spectre.Console.ImageSharp\Spectre.Console.ImageSharp.csproj", "{0EFE694D-0770-4E71-BF4E-EC2B41362F79}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.ImageSharp", "Extensions\Spectre.Console.ImageSharp\Spectre.Console.ImageSharp.csproj", "{0EFE694D-0770-4E71-BF4E-EC2B41362F79}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Testing", "Spectre.Console.Testing\Spectre.Console.Testing.csproj", "{7D5F6704-8249-46DD-906C-9E66419F215F}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{E0E45070-123C-4A4D-AA98-2A780308876C}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions", "Extensions", "{E0E45070-123C-4A4D-AA98-2A780308876C}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Tests", "..\test\Spectre.Console.Tests\Spectre.Console.Tests.csproj", "{60A4CADD-2B3D-48ED-89C0-1637A1F111AE}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Tests", "Tests\Spectre.Console.Tests\Spectre.Console.Tests.csproj", "{60A4CADD-2B3D-48ED-89C0-1637A1F111AE}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Cli", "Spectre.Console.Cli\Spectre.Console.Cli.csproj", "{1B67B74F-1243-4381-9A2B-86EA66D135C5}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Cli.Tests", "..\test\Spectre.Console.Cli.Tests\Spectre.Console.Cli.Tests.csproj", "{E07C46D2-714F-4116-BADD-FEE09617A9C4}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Cli.Tests", "Tests\Spectre.Console.Cli.Tests\Spectre.Console.Cli.Tests.csproj", "{E07C46D2-714F-4116-BADD-FEE09617A9C4}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Json", "Spectre.Console.Json\Spectre.Console.Json.csproj", "{579E6E31-1E2F-4FE1-8F8C-9770878993E9}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Json", "Extensions\Spectre.Console.Json\Spectre.Console.Json.csproj", "{579E6E31-1E2F-4FE1-8F8C-9770878993E9}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{F34EFD87-6CEA-453F-858B-094EA413578C}" + ProjectSection(SolutionItems) = preProject + Tests\Directory.Build.props = Tests\Directory.Build.props + Tests\.editorconfig = Tests\.editorconfig + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -138,6 +144,8 @@ Global {C3E2CB5C-1517-4C75-B59A-93D4E22BEC8D} = {20595AD4-8D75-4AF8-B6BC-9C38C160423F} {0EFE694D-0770-4E71-BF4E-EC2B41362F79} = {E0E45070-123C-4A4D-AA98-2A780308876C} {579E6E31-1E2F-4FE1-8F8C-9770878993E9} = {E0E45070-123C-4A4D-AA98-2A780308876C} + {60A4CADD-2B3D-48ED-89C0-1637A1F111AE} = {F34EFD87-6CEA-453F-858B-094EA413578C} + {E07C46D2-714F-4116-BADD-FEE09617A9C4} = {F34EFD87-6CEA-453F-858B-094EA413578C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {5729B071-67A0-48FB-8B1B-275E6822086C} diff --git a/src/Spectre.Console.sln.DotSettings b/src/Spectre.Console.sln.DotSettings deleted file mode 100644 index 5b8822215..000000000 --- a/src/Spectre.Console.sln.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - DO_NOT_SHOW \ No newline at end of file diff --git a/src/Spectre.Console.v3.ncrunchsolution b/src/Spectre.Console.v3.ncrunchsolution deleted file mode 100644 index 10420ac91..000000000 --- a/src/Spectre.Console.v3.ncrunchsolution +++ /dev/null @@ -1,6 +0,0 @@ - - - True - True - - \ No newline at end of file diff --git a/src/Spectre.Console/Spectre.Console.csproj b/src/Spectre.Console/Spectre.Console.csproj index 4805f895b..49a550499 100644 --- a/src/Spectre.Console/Spectre.Console.csproj +++ b/src/Spectre.Console/Spectre.Console.csproj @@ -2,22 +2,22 @@ net8.0;net7.0;net6.0;netstandard2.0 - enable true - SA1633 + $(DefineConstants)TRACE;WCWIDTH_VISIBILITY_INTERNAL - - - - - - + + + + + + + - - - + + + all @@ -28,17 +28,12 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - $(DefineConstants)TRACE;WCWIDTH_VISIBILITY_INTERNAL - - diff --git a/test/.editorconfig b/src/Tests/.editorconfig similarity index 100% rename from test/.editorconfig rename to src/Tests/.editorconfig diff --git a/src/Tests/Directory.Build.props b/src/Tests/Directory.Build.props new file mode 100644 index 000000000..2f818b035 --- /dev/null +++ b/src/Tests/Directory.Build.props @@ -0,0 +1,11 @@ + + + 12 + false + true + + + + + + \ No newline at end of file diff --git a/test/Spectre.Console.Cli.Tests/Constants.cs b/src/Tests/Spectre.Console.Cli.Tests/Constants.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Constants.cs rename to src/Tests/Spectre.Console.Cli.Tests/Constants.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/AnimalCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/AnimalCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/AnimalCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/AnimalCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/AsynchronousCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/AsynchronousCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/AsynchronousCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/AsynchronousCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/CatCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/CatCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/CatCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/CatCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/DogCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/DogCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/DogCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/DogCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/DumpRemainingCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/DumpRemainingCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/DumpRemainingCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/DumpRemainingCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/EmptyCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/EmptyCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/EmptyCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/EmptyCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/GenericCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/GenericCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/GenericCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/GenericCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/GiraffeCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/GiraffeCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/GiraffeCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/GiraffeCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/GreeterCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/GreeterCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/GreeterCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/GreeterCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/HiddenOptionsCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/HiddenOptionsCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/HiddenOptionsCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/HiddenOptionsCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/HorseCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/HorseCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/HorseCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/HorseCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/InvalidCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/InvalidCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/InvalidCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/InvalidCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/LionCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/LionCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/LionCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/LionCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/NoDescriptionCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/NoDescriptionCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/NoDescriptionCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/NoDescriptionCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/OptionVectorCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/OptionVectorCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/OptionVectorCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/OptionVectorCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/ThrowingCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/ThrowingCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/ThrowingCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/ThrowingCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/TurtleCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/TurtleCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/TurtleCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/TurtleCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Commands/VersionCommand.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Commands/VersionCommand.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Commands/VersionCommand.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Commands/VersionCommand.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Converters/CatAgilityConverter.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Converters/CatAgilityConverter.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Converters/CatAgilityConverter.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Converters/CatAgilityConverter.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Converters/StringToIntegerConverter.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Converters/StringToIntegerConverter.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Converters/StringToIntegerConverter.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Converters/StringToIntegerConverter.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Help/CustomHelpProvider.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Help/CustomHelpProvider.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Help/CustomHelpProvider.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Help/CustomHelpProvider.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Help/RedirectHelpProvider.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Help/RedirectHelpProvider.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Help/RedirectHelpProvider.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Help/RedirectHelpProvider.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Help/RenderMarkupHelpProvider.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Help/RenderMarkupHelpProvider.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Help/RenderMarkupHelpProvider.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Help/RenderMarkupHelpProvider.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/AnimalSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/AnimalSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/AnimalSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/AnimalSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/ArgumentOrderSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/ArgumentOrderSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/ArgumentOrderSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/ArgumentOrderSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/ArgumentVectorSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/ArgumentVectorSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/ArgumentVectorSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/ArgumentVectorSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/AsynchronousCommandSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/AsynchronousCommandSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/AsynchronousCommandSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/AsynchronousCommandSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/BarCommandSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/BarCommandSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/BarCommandSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/BarCommandSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/CatSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/CatSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/CatSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/CatSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/DogSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/DogSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/DogSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/DogSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/FooSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/FooSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/FooSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/FooSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/GiraffeSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/GiraffeSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/GiraffeSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/GiraffeSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/HiddenOptionSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/HiddenOptionSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/HiddenOptionSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/HiddenOptionSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/HorseSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/HorseSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/HorseSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/HorseSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/InvalidSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/InvalidSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/InvalidSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/InvalidSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/LionSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/LionSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/LionSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/LionSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/MammalSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/MammalSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/MammalSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/MammalSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/MultipleArgumentVectorSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/MultipleArgumentVectorSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/MultipleArgumentVectorSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/MultipleArgumentVectorSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/OptionVectorSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/OptionVectorSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/OptionVectorSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/OptionVectorSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/OptionalArgumentWithDefaultValueSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/OptionalArgumentWithDefaultValueSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/OptionalArgumentWithDefaultValueSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/OptionalArgumentWithDefaultValueSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/ReptileSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/ReptileSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/ReptileSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/ReptileSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/StringOptionSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/StringOptionSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/StringOptionSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/StringOptionSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/ThrowingCommandSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/ThrowingCommandSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/ThrowingCommandSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/ThrowingCommandSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/TurtleSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/TurtleSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/TurtleSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/TurtleSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Settings/VersionSettings.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Settings/VersionSettings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Settings/VersionSettings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Settings/VersionSettings.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Validators/EvenNumberValidatorAttribute.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Validators/EvenNumberValidatorAttribute.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Validators/EvenNumberValidatorAttribute.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Validators/EvenNumberValidatorAttribute.cs diff --git a/test/Spectre.Console.Cli.Tests/Data/Validators/PositiveNumberValidatorAttribute.cs b/src/Tests/Spectre.Console.Cli.Tests/Data/Validators/PositiveNumberValidatorAttribute.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Data/Validators/PositiveNumberValidatorAttribute.cs rename to src/Tests/Spectre.Console.Cli.Tests/Data/Validators/PositiveNumberValidatorAttribute.cs diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Arguments/ArgumentCannotContainOptions.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/ArgumentCannotContainOptions.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Arguments/ArgumentCannotContainOptions.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/ArgumentCannotContainOptions.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Arguments/InvalidCharacterInOptionName.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/InvalidCharacterInOptionName.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Arguments/InvalidCharacterInOptionName.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/InvalidCharacterInOptionName.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Arguments/InvalidCharacterInValueName.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/InvalidCharacterInValueName.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Arguments/InvalidCharacterInValueName.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/InvalidCharacterInValueName.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Arguments/LongOptionMustHaveMoreThanOneCharacter.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/LongOptionMustHaveMoreThanOneCharacter.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Arguments/LongOptionMustHaveMoreThanOneCharacter.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/LongOptionMustHaveMoreThanOneCharacter.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Arguments/MissingLongAndShortName.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/MissingLongAndShortName.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Arguments/MissingLongAndShortName.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/MissingLongAndShortName.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Arguments/MultipleOptionValuesAreNotSupported.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/MultipleOptionValuesAreNotSupported.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Arguments/MultipleOptionValuesAreNotSupported.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/MultipleOptionValuesAreNotSupported.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Arguments/MultipleValuesAreNotSupported.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/MultipleValuesAreNotSupported.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Arguments/MultipleValuesAreNotSupported.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/MultipleValuesAreNotSupported.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Arguments/OptionNamesCannotStartWithDigit.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/OptionNamesCannotStartWithDigit.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Arguments/OptionNamesCannotStartWithDigit.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/OptionNamesCannotStartWithDigit.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Arguments/OptionsMustHaveName.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/OptionsMustHaveName.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Arguments/OptionsMustHaveName.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/OptionsMustHaveName.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Arguments/ShortOptionMustOnlyBeOneCharacter.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/ShortOptionMustOnlyBeOneCharacter.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Arguments/ShortOptionMustOnlyBeOneCharacter.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/ShortOptionMustOnlyBeOneCharacter.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Arguments/UnexpectedCharacter.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/UnexpectedCharacter.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Arguments/UnexpectedCharacter.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/UnexpectedCharacter.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Arguments/UnterminatedValueName.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/UnterminatedValueName.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Arguments/UnterminatedValueName.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/UnterminatedValueName.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Arguments/ValuesMustHaveName.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/ValuesMustHaveName.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Arguments/ValuesMustHaveName.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Arguments/ValuesMustHaveName.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/ArgumentOrder.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/ArgumentOrder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/ArgumentOrder.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/ArgumentOrder.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Branch.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Branch.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Branch.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Branch.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Branch_Called_Without_Help.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Branch_Called_Without_Help.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Branch_Called_Without_Help.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Branch_Called_Without_Help.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Branch_Default_Greeter.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Branch_Default_Greeter.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Branch_Default_Greeter.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Branch_Default_Greeter.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Branch_Examples.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Branch_Examples.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Branch_Examples.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Branch_Examples.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Command_Hide_Default.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Command_Hide_Default.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Command_Hide_Default.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Command_Hide_Default.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Configured_By_Instance.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Configured_By_Instance.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Configured_By_Instance.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Configured_By_Instance.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Configured_By_Type.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Configured_By_Type.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Configured_By_Type.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Configured_By_Type.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Registered_By_Instance.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Registered_By_Instance.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Registered_By_Instance.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Registered_By_Instance.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Registered_By_Type.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Registered_By_Type.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Registered_By_Type.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Custom_Help_Registered_By_Type.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Default.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Default.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Custom_Help_Provider.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Custom_Help_Provider.Output.verified.txt similarity index 95% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Custom_Help_Provider.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Custom_Help_Provider.Output.verified.txt index e4a56cd59..ad99fbb63 100644 --- a/test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Custom_Help_Provider.Output.verified.txt +++ b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Custom_Help_Provider.Output.verified.txt @@ -1,15 +1,15 @@ --------------------------------------- ---- CUSTOM HELP PROVIDER --- --------------------------------------- - -USAGE: - myapp [OPTIONS] - -OPTIONS: - -h, --help Prints help information - -v, --version Prints version information - -COMMANDS: - dog The dog command - +-------------------------------------- +--- CUSTOM HELP PROVIDER --- +-------------------------------------- + +USAGE: + myapp [OPTIONS] + +OPTIONS: + -h, --help Prints help information + -v, --version Prints version information + +COMMANDS: + dog The dog command + Version 1.0 \ No newline at end of file diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Examples.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Examples.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Examples.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Examples.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Greeter.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Greeter.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Greeter.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Greeter.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_DE.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_DE.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_DE.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_DE.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_EN.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_EN.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_EN.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_EN.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_FR.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_FR.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_FR.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_FR.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_SV.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_SV.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_SV.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional.Output_SV.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional_Style_BoldHeadings.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional_Style_BoldHeadings.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional_Style_BoldHeadings.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional_Style_BoldHeadings.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional_Style_Default.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional_Style_Default.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional_Style_Default.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional_Style_Default.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional_Style_None.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional_Style_None.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional_Style_None.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Default_Without_Args_Additional_Style_None.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Description_No_Trailing_Period.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Description_No_Trailing_Period.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Description_No_Trailing_Period.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Description_No_Trailing_Period.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Hidden_Command_Options.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Hidden_Command_Options.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Hidden_Command_Options.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Hidden_Command_Options.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Hidden_Commands.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Hidden_Commands.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Hidden_Commands.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Hidden_Commands.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Leaf.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Leaf.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Leaf.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Leaf.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/NoDescription.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/NoDescription.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/NoDescription.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/NoDescription.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/NoVersion.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/NoVersion.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/NoVersion.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/NoVersion.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Root.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Root.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Root.QuestionMark.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root.QuestionMark.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Root.QuestionMark.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root.QuestionMark.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Command.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Command.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Command.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Command.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Command.QuestionMark.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Command.QuestionMark.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Command.QuestionMark.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Command.QuestionMark.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children_Eight.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children_Eight.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children_Eight.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children_Eight.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children_None.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children_None.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children_None.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children_None.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children_Twelve.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children_Twelve.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children_Twelve.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Children_Twelve.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs_Eight.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs_Eight.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs_Eight.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs_Eight.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs_None.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs_None.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs_None.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs_None.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs_Twelve.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs_Twelve.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs_Twelve.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Root_Examples_Leafs_Twelve.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Help/Version.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Version.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Help/Version.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Help/Version.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/CannotAssignValueToFlag/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/CannotAssignValueToFlag/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/CannotAssignValueToFlag/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/CannotAssignValueToFlag/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/CannotAssignValueToFlag/Test_2.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/CannotAssignValueToFlag/Test_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/CannotAssignValueToFlag/Test_2.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/CannotAssignValueToFlag/Test_2.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/InvalidShortOptionName/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/InvalidShortOptionName/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/InvalidShortOptionName/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/InvalidShortOptionName/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameContainSymbol/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameContainSymbol/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameContainSymbol/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameContainSymbol/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameIsMissing/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameIsMissing/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameIsMissing/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameIsMissing/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameIsOneCharacter/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameIsOneCharacter/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameIsOneCharacter/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameIsOneCharacter/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameStartWithDigit/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameStartWithDigit/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameStartWithDigit/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/LongOptionNameStartWithDigit/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/NoMatchingArgument/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/NoMatchingArgument/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/NoMatchingArgument/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/NoMatchingArgument/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/NoValueForOption/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/NoValueForOption/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/NoValueForOption/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/NoValueForOption/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/NoValueForOption/Test_2.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/NoValueForOption/Test_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/NoValueForOption/Test_2.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/NoValueForOption/Test_2.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_2.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_2.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_2.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_3.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_3.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_3.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_3.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_4.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_4.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_4.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_4.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_5.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_5.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_5.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/OptionWithoutName/Test_5.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnexpectedOption/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnexpectedOption/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnexpectedOption/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnexpectedOption/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnexpectedOption/Test_2.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnexpectedOption/Test_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnexpectedOption/Test_2.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnexpectedOption/Test_2.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_2.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_2.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_2.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_3.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_3.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_3.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_3.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_4.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_4.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_4.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_4.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_5.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_5.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_5.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_5.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_6.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_6.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_6.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_6.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_7.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_7.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_7.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_7.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_8.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_8.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_8.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownCommand/Test_8.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownOption/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownOption/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownOption/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownOption/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownOption/Test_2.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownOption/Test_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownOption/Test_2.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Parsing/UnknownOption/Test_2.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Xml/Hidden_Command_Options.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Hidden_Command_Options.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Xml/Hidden_Command_Options.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Hidden_Command_Options.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_10.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_10.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_10.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_10.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_2.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_2.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_2.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_3.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_3.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_3.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_3.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_4.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_4.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_4.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_4.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_5.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_5.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_5.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_5.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_6.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_6.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_6.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_6.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_7.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_7.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_7.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_7.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_8.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_8.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_8.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_8.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_9.Output.verified.txt b/src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_9.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Cli.Tests/Expectations/Xml/Test_9.Output.verified.txt rename to src/Tests/Spectre.Console.Cli.Tests/Expectations/Xml/Test_9.Output.verified.txt diff --git a/test/Spectre.Console.Cli.Tests/Properties/Usings.cs b/src/Tests/Spectre.Console.Cli.Tests/Properties/Usings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Properties/Usings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Properties/Usings.cs diff --git a/src/Tests/Spectre.Console.Cli.Tests/Spectre.Console.Cli.Tests.csproj b/src/Tests/Spectre.Console.Cli.Tests/Spectre.Console.Cli.Tests.csproj new file mode 100644 index 000000000..10e189c73 --- /dev/null +++ b/src/Tests/Spectre.Console.Cli.Tests/Spectre.Console.Cli.Tests.csproj @@ -0,0 +1,27 @@ + + + + net8.0;net7.0;net6.0 + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + diff --git a/test/Spectre.Console.Cli.Tests/Unit/Annotations/CommandArgumentAttributeTests.Rendering.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/Annotations/CommandArgumentAttributeTests.Rendering.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/Annotations/CommandArgumentAttributeTests.Rendering.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/Annotations/CommandArgumentAttributeTests.Rendering.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/Annotations/CommandArgumentAttributeTests.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/Annotations/CommandArgumentAttributeTests.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/Annotations/CommandArgumentAttributeTests.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/Annotations/CommandArgumentAttributeTests.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/Annotations/CommandOptionAttributeTests.Rendering.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/Annotations/CommandOptionAttributeTests.Rendering.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/Annotations/CommandOptionAttributeTests.Rendering.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/Annotations/CommandOptionAttributeTests.Rendering.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/Annotations/CommandOptionAttributeTests.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/Annotations/CommandOptionAttributeTests.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/Annotations/CommandOptionAttributeTests.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/Annotations/CommandOptionAttributeTests.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Async.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Async.cs similarity index 90% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Async.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Async.cs index 8fe902023..8ce3ee141 100644 --- a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Async.cs +++ b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Async.cs @@ -5,7 +5,7 @@ public sealed partial class CommandAppTests public sealed class Async { [Fact] - public async void Should_Execute_Command_Asynchronously() + public async Task Should_Execute_Command_Asynchronously() { // Given var app = new CommandAppTester(); @@ -24,7 +24,7 @@ public async void Should_Execute_Command_Asynchronously() } [Fact] - public async void Should_Handle_Exception_Asynchronously() + public async Task Should_Handle_Exception_Asynchronously() { // Given var app = new CommandAppTester(); @@ -42,7 +42,7 @@ public async void Should_Handle_Exception_Asynchronously() } [Fact] - public async void Should_Throw_Exception_Asynchronously() + public async Task Should_Throw_Exception_Asynchronously() { // Given var app = new CommandAppTester(); diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Branches.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Branches.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Branches.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Branches.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Constructor.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Constructor.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Constructor.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Constructor.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Context.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Context.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Context.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Context.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Exceptions.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Exceptions.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Exceptions.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Exceptions.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.FlagValues.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.FlagValues.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.FlagValues.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.FlagValues.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Help.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Help.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Help.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Help.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Injection.Settings.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Injection.Settings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Injection.Settings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Injection.Settings.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Injection.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Injection.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Injection.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Injection.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Interceptor.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Interceptor.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Interceptor.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Interceptor.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Pairs.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Pairs.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Pairs.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Pairs.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Parsing.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Parsing.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Parsing.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Parsing.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Remaining.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Remaining.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Remaining.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Remaining.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Sensitivity.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Sensitivity.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Sensitivity.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Sensitivity.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Settings.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Settings.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Settings.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Settings.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.TypeConverters.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.TypeConverters.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.TypeConverters.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.TypeConverters.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Unsafe.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Unsafe.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Unsafe.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Unsafe.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Validation.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Validation.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Validation.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Validation.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.ValueProviders.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.ValueProviders.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.ValueProviders.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.ValueProviders.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Vectors.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Vectors.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Vectors.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Vectors.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Version.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Version.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Version.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Version.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Xml.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Xml.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Xml.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Xml.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.cs similarity index 98% rename from test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.cs index 082ca6682..34d852001 100644 --- a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.cs +++ b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.cs @@ -1145,11 +1145,7 @@ public void Should_Execute_Nested_Delegate_Empty_Command() { cfg.AddBranch("a", d => { - d.AddDelegate("b", _ => - { - AnsiConsole.MarkupLine("[red]Complete[/]"); - return 0; - }); + d.AddDelegate("b", _ => 0); }); }); @@ -1169,11 +1165,7 @@ public void Should_Execute_Delegate_Empty_Command_At_Root_Level() var app = new CommandAppTester(); app.Configure(cfg => { - cfg.AddDelegate("a", _ => - { - AnsiConsole.MarkupLine("[red]Complete[/]"); - return 0; - }); + cfg.AddDelegate("a", _ => 0); }); // When @@ -1186,7 +1178,7 @@ public void Should_Execute_Delegate_Empty_Command_At_Root_Level() } [Fact] - public async void Should_Execute_Async_Delegate_Command_At_Root_Level() + public async Task Should_Execute_Async_Delegate_Command_At_Root_Level() { // Given var dog = default(DogSettings); @@ -1251,7 +1243,7 @@ public void Should_Execute_Nested_Delegate_Command() } [Fact] - public async void Should_Execute_Nested_Async_Delegate_Command() + public async Task Should_Execute_Nested_Async_Delegate_Command() { // Given var dog = default(DogSettings); diff --git a/test/Spectre.Console.Cli.Tests/Unit/DefaultTypeRegistrarTests.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/DefaultTypeRegistrarTests.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/DefaultTypeRegistrarTests.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/DefaultTypeRegistrarTests.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/Parsing/CommandTreeTokenizerTests.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/Parsing/CommandTreeTokenizerTests.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/Parsing/CommandTreeTokenizerTests.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/Parsing/CommandTreeTokenizerTests.cs diff --git a/test/Spectre.Console.Cli.Tests/Unit/Testing/FakeTypeRegistrarTests.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/Testing/FakeTypeRegistrarTests.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Unit/Testing/FakeTypeRegistrarTests.cs rename to src/Tests/Spectre.Console.Cli.Tests/Unit/Testing/FakeTypeRegistrarTests.cs diff --git a/test/Spectre.Console.Cli.Tests/Utilities/CommandContextExtensions.cs b/src/Tests/Spectre.Console.Cli.Tests/Utilities/CommandContextExtensions.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Utilities/CommandContextExtensions.cs rename to src/Tests/Spectre.Console.Cli.Tests/Utilities/CommandContextExtensions.cs diff --git a/test/Spectre.Console.Cli.Tests/Utilities/ModuleInitializerAttribute.cs b/src/Tests/Spectre.Console.Cli.Tests/Utilities/ModuleInitializerAttribute.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/Utilities/ModuleInitializerAttribute.cs rename to src/Tests/Spectre.Console.Cli.Tests/Utilities/ModuleInitializerAttribute.cs diff --git a/test/Spectre.Console.Cli.Tests/VerifyConfiguration.cs b/src/Tests/Spectre.Console.Cli.Tests/VerifyConfiguration.cs similarity index 100% rename from test/Spectre.Console.Cli.Tests/VerifyConfiguration.cs rename to src/Tests/Spectre.Console.Cli.Tests/VerifyConfiguration.cs diff --git a/test/Spectre.Console.Tests/Data/Exceptions.cs b/src/Tests/Spectre.Console.Tests/Data/Exceptions.cs similarity index 100% rename from test/Spectre.Console.Tests/Data/Exceptions.cs rename to src/Tests/Spectre.Console.Tests/Data/Exceptions.cs diff --git a/test/Spectre.Console.Tests/Data/example.json b/src/Tests/Spectre.Console.Tests/Data/example.json similarity index 100% rename from test/Spectre.Console.Tests/Data/example.json rename to src/Tests/Spectre.Console.Tests/Data/example.json diff --git a/test/Spectre.Console.Tests/Data/poison.flf b/src/Tests/Spectre.Console.Tests/Data/poison.flf similarity index 100% rename from test/Spectre.Console.Tests/Data/poison.flf rename to src/Tests/Spectre.Console.Tests/Data/poison.flf diff --git a/test/Spectre.Console.Tests/Data/starwars.flf b/src/Tests/Spectre.Console.Tests/Data/starwars.flf similarity index 100% rename from test/Spectre.Console.Tests/Data/starwars.flf rename to src/Tests/Spectre.Console.Tests/Data/starwars.flf diff --git a/test/Spectre.Console.Tests/Expectations/AlternateScreen/Show.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/AlternateScreen/Show.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/AlternateScreen/Show.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/AlternateScreen/Show.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Arguments/ArgumentCannotContainOptions.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/ArgumentCannotContainOptions.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Arguments/ArgumentCannotContainOptions.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/ArgumentCannotContainOptions.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Arguments/InvalidCharacterInOptionName.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/InvalidCharacterInOptionName.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Arguments/InvalidCharacterInOptionName.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/InvalidCharacterInOptionName.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Arguments/InvalidCharacterInValueName.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/InvalidCharacterInValueName.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Arguments/InvalidCharacterInValueName.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/InvalidCharacterInValueName.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Arguments/LongOptionMustHaveMoreThanOneCharacter.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/LongOptionMustHaveMoreThanOneCharacter.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Arguments/LongOptionMustHaveMoreThanOneCharacter.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/LongOptionMustHaveMoreThanOneCharacter.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Arguments/MissingLongAndShortName.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/MissingLongAndShortName.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Arguments/MissingLongAndShortName.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/MissingLongAndShortName.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Arguments/MultipleOptionValuesAreNotSupported.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/MultipleOptionValuesAreNotSupported.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Arguments/MultipleOptionValuesAreNotSupported.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/MultipleOptionValuesAreNotSupported.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Arguments/MultipleValuesAreNotSupported.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/MultipleValuesAreNotSupported.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Arguments/MultipleValuesAreNotSupported.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/MultipleValuesAreNotSupported.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Arguments/OptionNamesCannotStartWithDigit.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/OptionNamesCannotStartWithDigit.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Arguments/OptionNamesCannotStartWithDigit.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/OptionNamesCannotStartWithDigit.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Arguments/OptionsMustHaveName.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/OptionsMustHaveName.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Arguments/OptionsMustHaveName.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/OptionsMustHaveName.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Arguments/ShortOptionMustOnlyBeOneCharacter.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/ShortOptionMustOnlyBeOneCharacter.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Arguments/ShortOptionMustOnlyBeOneCharacter.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/ShortOptionMustOnlyBeOneCharacter.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Arguments/UnexpectedCharacter.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/UnexpectedCharacter.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Arguments/UnexpectedCharacter.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/UnexpectedCharacter.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Arguments/UnterminatedValueName.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/UnterminatedValueName.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Arguments/UnterminatedValueName.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/UnterminatedValueName.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Arguments/ValuesMustHaveName.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/ValuesMustHaveName.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Arguments/ValuesMustHaveName.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Arguments/ValuesMustHaveName.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Help/ArgumentOrder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/ArgumentOrder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Help/ArgumentOrder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/ArgumentOrder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Help/Command.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/Command.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Help/Command.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/Command.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Help/CommandExamples.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/CommandExamples.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Help/CommandExamples.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/CommandExamples.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Help/Default.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/Default.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Help/Default.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/Default.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Help/DefaultExamples.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/DefaultExamples.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Help/DefaultExamples.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/DefaultExamples.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Help/Hidden_Command_Options.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/Hidden_Command_Options.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Help/Hidden_Command_Options.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/Hidden_Command_Options.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Help/Hidden_Commands.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/Hidden_Commands.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Help/Hidden_Commands.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/Hidden_Commands.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Help/Leaf.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/Leaf.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Help/Leaf.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/Leaf.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Help/NoDescription.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/NoDescription.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Help/NoDescription.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/NoDescription.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Help/Root.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/Root.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Help/Root.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/Root.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Help/RootExamples.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/RootExamples.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Help/RootExamples.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/RootExamples.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Help/RootExamples_Children.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/RootExamples_Children.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Help/RootExamples_Children.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/RootExamples_Children.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Help/RootExamples_Leafs.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/RootExamples_Leafs.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Help/RootExamples_Leafs.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Help/RootExamples_Leafs.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/CannotAssignValueToFlag/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/CannotAssignValueToFlag/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/CannotAssignValueToFlag/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/CannotAssignValueToFlag/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/CannotAssignValueToFlag/Test_2.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/CannotAssignValueToFlag/Test_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/CannotAssignValueToFlag/Test_2.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/CannotAssignValueToFlag/Test_2.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/InvalidShortOptionName/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/InvalidShortOptionName/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/InvalidShortOptionName/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/InvalidShortOptionName/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameContainSymbol/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameContainSymbol/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameContainSymbol/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameContainSymbol/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameIsMissing/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameIsMissing/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameIsMissing/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameIsMissing/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameIsOneCharacter/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameIsOneCharacter/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameIsOneCharacter/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameIsOneCharacter/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameStartWithDigit/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameStartWithDigit/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameStartWithDigit/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/LongOptionNameStartWithDigit/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/NoMatchingArgument/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/NoMatchingArgument/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/NoMatchingArgument/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/NoMatchingArgument/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/NoValueForOption/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/NoValueForOption/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/NoValueForOption/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/NoValueForOption/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/NoValueForOption/Test_2.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/NoValueForOption/Test_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/NoValueForOption/Test_2.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/NoValueForOption/Test_2.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_2.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_2.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_2.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_3.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_3.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_3.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_3.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_4.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_4.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_4.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_4.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_5.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_5.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_5.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/OptionWithoutName/Test_5.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnexpectedOption/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnexpectedOption/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnexpectedOption/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnexpectedOption/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnexpectedOption/Test_2.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnexpectedOption/Test_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnexpectedOption/Test_2.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnexpectedOption/Test_2.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_2.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_2.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_2.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_3.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_3.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_3.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_3.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_4.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_4.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_4.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_4.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_5.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_5.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_5.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_5.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_6.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_6.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_6.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_6.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_7.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_7.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_7.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_7.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_8.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_8.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_8.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownCommand/Test_8.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownOption/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownOption/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownOption/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownOption/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownOption/Test_2.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownOption/Test_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownOption/Test_2.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Parsing/UnknownOption/Test_2.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Xml/Hidden_Command_Options.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Xml/Hidden_Command_Options.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Xml/Hidden_Command_Options.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Xml/Hidden_Command_Options.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Xml/Test_1.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Xml/Test_1.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Xml/Test_1.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Xml/Test_1.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Xml/Test_2.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Xml/Test_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Xml/Test_2.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Xml/Test_2.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Xml/Test_3.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Xml/Test_3.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Xml/Test_3.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Xml/Test_3.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Xml/Test_4.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Xml/Test_4.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Xml/Test_4.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Xml/Test_4.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Xml/Test_5.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Xml/Test_5.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Xml/Test_5.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Xml/Test_5.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Cli/Xml/Test_6.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Cli/Xml/Test_6.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Cli/Xml/Test_6.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Cli/Xml/Test_6.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Exception/CallSite.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Exception/CallSite.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Exception/CallSite.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Exception/CallSite.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Exception/Default.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Exception/Default.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Exception/Default.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Exception/Default.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Exception/InnerException.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Exception/InnerException.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Exception/InnerException.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Exception/InnerException.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Exception/NoStackTrace.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Exception/NoStackTrace.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Exception/NoStackTrace.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Exception/NoStackTrace.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Exception/OutParam.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Exception/OutParam.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Exception/OutParam.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Exception/OutParam.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Exception/ShortenedMethods.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Exception/ShortenedMethods.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Exception/ShortenedMethods.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Exception/ShortenedMethods.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Exception/ShortenedTypes.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Exception/ShortenedTypes.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Exception/ShortenedTypes.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Exception/ShortenedTypes.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Exception/Tuple.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Exception/Tuple.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Exception/Tuple.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Exception/Tuple.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Live/Progress/Render_ReduceWidth.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Live/Progress/Render_ReduceWidth.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Live/Progress/Render_ReduceWidth.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Live/Progress/Render_ReduceWidth.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Live/Status/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Live/Status/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Live/Status/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Live/Status/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/AcceptChoice.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/AcceptChoice.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/AcceptChoice.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/AcceptChoice.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_BestMatch.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_BestMatch.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_BestMatch.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_BestMatch.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_Empty.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_Empty.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_Empty.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_Empty.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_NextChoice.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_NextChoice.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_NextChoice.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_NextChoice.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_PreviousChoice.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_PreviousChoice.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_PreviousChoice.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_PreviousChoice.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/ChoicesStyleNotSet.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/ChoicesStyleNotSet.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/ChoicesStyleNotSet.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/ChoicesStyleNotSet.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/ChoicesStyleSet.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/ChoicesStyleSet.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/ChoicesStyleSet.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/ChoicesStyleSet.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/ConversionError.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/ConversionError.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/ConversionError.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/ConversionError.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/CustomConverter.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/CustomConverter.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/CustomConverter.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/CustomConverter.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/CustomValidation.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/CustomValidation.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/CustomValidation.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/CustomValidation.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/DefaultValue.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/DefaultValue.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/DefaultValue.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/DefaultValue.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/DefaultValueStyleNotSet.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/DefaultValueStyleNotSet.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/DefaultValueStyleNotSet.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/DefaultValueStyleNotSet.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/DefaultValueStyleSet.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/DefaultValueStyleSet.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/DefaultValueStyleSet.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/DefaultValueStyleSet.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/InvalidChoice.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/InvalidChoice.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/InvalidChoice.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/InvalidChoice.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/NoSuffix.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/NoSuffix.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/NoSuffix.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/NoSuffix.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/SecretDefaultValue.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/SecretDefaultValue.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/SecretDefaultValue.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/SecretDefaultValue.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/SecretDefaultValueCustomMask.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/SecretDefaultValueCustomMask.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/SecretDefaultValueCustomMask.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/SecretDefaultValueCustomMask.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/SecretDefaultValueNullMask.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/SecretDefaultValueNullMask.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/SecretDefaultValueNullMask.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/SecretDefaultValueNullMask.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/SecretValueBackspaceNullMask.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/SecretValueBackspaceNullMask.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Prompts/Text/SecretValueBackspaceNullMask.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Prompts/Text/SecretValueBackspaceNullMask.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/AsciiBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/AsciiBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/AsciiBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/AsciiBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/DoubleBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/DoubleBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/DoubleBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/DoubleBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/HeavyBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/HeavyBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/HeavyBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/HeavyBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/NoBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/NoBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/NoBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/NoBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/NoBorder_With_Header.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/NoBorder_With_Header.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/NoBorder_With_Header.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/NoBorder_With_Header.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/RoundedBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/RoundedBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/RoundedBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/RoundedBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/SquareBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/SquareBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/SquareBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Box/SquareBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/Ascii2Border.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/Ascii2Border.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/Ascii2Border.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/Ascii2Border.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/AsciiBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/AsciiBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/AsciiBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/AsciiBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/AsciiDoubleHeadBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/AsciiDoubleHeadBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/AsciiDoubleHeadBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/AsciiDoubleHeadBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/DoubleBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/DoubleBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/DoubleBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/DoubleBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/DoubleEdgeBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/DoubleEdgeBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/DoubleEdgeBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/DoubleEdgeBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HeavyBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HeavyBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HeavyBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HeavyBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HeavyEdgeBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HeavyEdgeBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HeavyEdgeBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HeavyEdgeBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HeavyHeadBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HeavyHeadBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HeavyHeadBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HeavyHeadBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HorizontalBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HorizontalBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HorizontalBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/HorizontalBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder_Centered.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder_Centered.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder_Centered.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder_Centered.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder_LeftAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder_LeftAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder_LeftAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder_LeftAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder_RightAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder_RightAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder_RightAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MarkdownBorder_RightAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MinimalBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MinimalBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MinimalBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MinimalBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MinimalDoubleHeadBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MinimalDoubleHeadBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MinimalDoubleHeadBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MinimalDoubleHeadBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MinimalHeavyHeadBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MinimalHeavyHeadBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MinimalHeavyHeadBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/MinimalHeavyHeadBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/NoBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/NoBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/NoBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/NoBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/RoundedBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/RoundedBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/RoundedBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/RoundedBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/SimpleBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/SimpleBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/SimpleBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/SimpleBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/SimpleHeavyBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/SimpleHeavyBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/SimpleHeavyBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/SimpleHeavyBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/SquareBorder.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/SquareBorder.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/SquareBorder.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Rendering/Borders/Table/SquareBorder.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/TableRowCollectionTests.TheUpdateMethod.Should_Update_Row.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/TableRowCollectionTests.TheUpdateMethod.Should_Update_Row.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/TableRowCollectionTests.TheUpdateMethod.Should_Update_Row.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/TableRowCollectionTests.TheUpdateMethod.Should_Update_Row.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/TableRowCollectionTests.TheUpdateMethod.Should_Update_Row_With_Renderable.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/TableRowCollectionTests.TheUpdateMethod.Should_Update_Row_With_Renderable.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/TableRowCollectionTests.TheUpdateMethod.Should_Update_Row_With_Renderable.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/TableRowCollectionTests.TheUpdateMethod.Should_Update_Row_With_Renderable.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/TableRowCollectionTests.TheUpdateMethod.Should_Update_Row_With_String.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/TableRowCollectionTests.TheUpdateMethod.Should_Update_Row_With_String.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/TableRowCollectionTests.TheUpdateMethod.Should_Update_Row_With_String.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/TableRowCollectionTests.TheUpdateMethod.Should_Update_Row_With_String.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Align/Center_Bottom.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Center_Bottom.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Align/Center_Bottom.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Center_Bottom.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Align/Center_Middle.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Center_Middle.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Align/Center_Middle.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Center_Middle.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Align/Center_Top.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Center_Top.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Align/Center_Top.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Center_Top.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Align/Left_Bottom.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Left_Bottom.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Align/Left_Bottom.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Left_Bottom.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Align/Left_Middle.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Left_Middle.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Align/Left_Middle.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Left_Middle.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Align/Left_Top.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Left_Top.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Align/Left_Top.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Left_Top.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Align/Right_Bottom.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Right_Bottom.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Align/Right_Bottom.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Right_Bottom.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Align/Right_Middle.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Right_Middle.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Align/Right_Middle.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Right_Middle.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Align/Right_Top.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Right_Top.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Align/Right_Top.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Align/Right_Top.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/BarChart/Fixed_Max_Value.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/BarChart/Fixed_Max_Value.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/BarChart/Fixed_Max_Value.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/BarChart/Fixed_Max_Value.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/BarChart/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/BarChart/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/BarChart/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/BarChart/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/BarChart/Zero_Value.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/BarChart/Zero_Value.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/BarChart/Zero_Value.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/BarChart/Zero_Value.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Ansi.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Ansi.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Ansi.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Ansi.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Culture.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Culture.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Culture.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Culture.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Default.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Default.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Default.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Default.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/FullSize.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/FullSize.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/FullSize.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/FullSize.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/HideTagValues.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/HideTagValues.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/HideTagValues.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/HideTagValues.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/HideTags.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/HideTags.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/HideTags.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/HideTags.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/TagFormat.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/TagFormat.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/TagFormat.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/TagFormat.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/ValueColor.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/ValueColor.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/ValueColor.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/ValueColor.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Width.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Width.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Width.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/BreakdownChart/Width.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Calendar/Centered.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Calendar/Centered.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Calendar/Centered.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Calendar/Centered.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Calendar/Culture.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Calendar/Culture.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Calendar/Culture.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Calendar/Culture.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Calendar/LeftAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Calendar/LeftAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Calendar/LeftAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Calendar/LeftAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Calendar/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Calendar/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Calendar/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Calendar/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Calendar/RightAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Calendar/RightAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Calendar/RightAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Calendar/RightAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render_MaxWidth.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render_MaxWidth.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render_MaxWidth.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render_MaxWidth.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render_NarrowTerminal.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render_NarrowTerminal.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render_NarrowTerminal.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render_NarrowTerminal.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render_Nested.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render_Nested.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render_Nested.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Canvas/Render_Nested.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Columns/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Columns/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Columns/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Columns/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Figlet/Load_Stream.Output_fontfile=poison.flf.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Figlet/Load_Stream.Output_fontfile=poison.flf.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Figlet/Load_Stream.Output_fontfile=poison.flf.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Figlet/Load_Stream.Output_fontfile=poison.flf.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Figlet/Load_Stream.Output_fontfile=starwars.flf.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Figlet/Load_Stream.Output_fontfile=starwars.flf.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Figlet/Load_Stream.Output_fontfile=starwars.flf.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Figlet/Load_Stream.Output_fontfile=starwars.flf.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_Centered.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_Centered.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_Centered.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_Centered.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_LeftAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_LeftAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_LeftAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_LeftAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_RightAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_RightAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_RightAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_RightAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_Wrapped.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_Wrapped.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_Wrapped.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Figlet/Render_Wrapped.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Grid/AddEmptyRow/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Grid/AddEmptyRow/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Grid/AddEmptyRow/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Grid/AddEmptyRow/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Grid/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Grid/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Grid/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Grid/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_2.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_2.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_2.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_2.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_Alignment.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_Alignment.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_Alignment.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_Alignment.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_ExplicitPadding.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_ExplicitPadding.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_ExplicitPadding.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_ExplicitPadding.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_Padding.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_Padding.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_Padding.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Grid/Render_Padding.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Json/Render_Json.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Json/Render_Json.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Json/Render_Json.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Json/Render_Json.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Empty_Layout.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Empty_Layout.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Empty_Layout.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Empty_Layout.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Fallback_Layout.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Fallback_Layout.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Fallback_Layout.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Fallback_Layout.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Columns.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Columns.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Columns.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Columns.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Nested_Columns.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Nested_Columns.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Nested_Columns.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Nested_Columns.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Nested_Rows.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Nested_Rows.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Nested_Rows.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Nested_Rows.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Nested_Rows_And_Columns.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Nested_Rows_And_Columns.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Nested_Rows_And_Columns.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Nested_Rows_And_Columns.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Respect_To_Minimum_Size.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Respect_To_Minimum_Size.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Respect_To_Minimum_Size.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Respect_To_Minimum_Size.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Respect_To_Ratio.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Respect_To_Ratio.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Respect_To_Ratio.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Respect_To_Ratio.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Respect_To_Size.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Respect_To_Size.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Respect_To_Size.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Respect_To_Size.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Rows.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Rows.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Rows.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_With_Rows.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_Without_Invisible_Children.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_Without_Invisible_Children.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_Without_Invisible_Children.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Layout/Render_Layout_Without_Invisible_Children.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Padder/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Padder/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Padder/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Padder/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Padder/Render_Expanded.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Padder/Render_Expanded.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Padder/Render_Expanded.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Padder/Render_Expanded.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Padder/Render_Nested.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Padder/Render_Nested.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Padder/Render_Nested.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Padder/Render_Nested.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_CJK.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_CJK.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_CJK.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_CJK.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Child_Centered.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Child_Centered.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Child_Centered.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Child_Centered.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Child_Panel.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Child_Panel.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Child_Panel.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Child_Panel.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Child_RightAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Child_RightAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Child_RightAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Child_RightAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Expand.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Expand.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Expand.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Expand.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_Centered.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_Centered.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_Centered.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_Centered.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_Collapse.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_Collapse.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_Collapse.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_Collapse.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_LeftAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_LeftAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_LeftAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_LeftAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_RightAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_RightAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_RightAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Header_RightAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Height.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Height.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Height.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Height.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_LineEndings.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_LineEndings.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_LineEndings.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_LineEndings.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Multiline.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Multiline.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Multiline.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Multiline.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Padding.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Padding.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Padding.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Padding.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Unicode.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Unicode.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Unicode.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Unicode.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Width.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Width.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Width.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Width.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Width_Height.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Width_Height.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Width_Height.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Width_Height.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Width_MaxWidth.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Width_MaxWidth.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Width_MaxWidth.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Width_MaxWidth.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Wrap.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Wrap.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Wrap.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_Wrap.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_ZeroPadding.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_ZeroPadding.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_ZeroPadding.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Panel/Render_ZeroPadding.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/ProgressBar/Formatted.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/ProgressBar/Formatted.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/ProgressBar/Formatted.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/ProgressBar/Formatted.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/ProgressBar/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/ProgressBar/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/ProgressBar/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/ProgressBar/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Recorder/Html.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Recorder/Html.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Recorder/Html.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Recorder/Html.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Recorder/Text.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Recorder/Text.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Recorder/Text.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Recorder/Text.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Rows/GH-1188-Rows.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rows/GH-1188-Rows.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Rows/GH-1188-Rows.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rows/GH-1188-Rows.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Rows/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rows/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Rows/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rows/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Rows/Render_Empty.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rows/Render_Empty.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Rows/Render_Empty.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rows/Render_Empty.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Rows/Render_Expanded_And_Nested.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rows/Render_Expanded_And_Nested.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Rows/Render_Expanded_And_Nested.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rows/Render_Expanded_And_Nested.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Rows/Render_Nested.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rows/Render_Nested.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Rows/Render_Nested.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rows/Render_Nested.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Border_Header.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Border_Header.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Border_Header.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Border_Header.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Border_NoHeader.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Border_NoHeader.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Border_NoHeader.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Border_NoHeader.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Header_DefaultAlignment.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Header_DefaultAlignment.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Header_DefaultAlignment.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Header_DefaultAlignment.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Header_LeftAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Header_LeftAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Header_LeftAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Header_LeftAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Header_RightAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Header_RightAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Header_RightAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Header_RightAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Linebreaks.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Linebreaks.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Linebreaks.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Linebreaks.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Truncate.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Truncate.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Truncate.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Rule/Render_Truncate.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/AddEmptyRow.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/AddEmptyRow.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/AddEmptyRow.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/AddEmptyRow.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_CellPadding.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_CellPadding.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_CellPadding.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_CellPadding.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Centered.Align_Widget.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Centered.Align_Widget.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Centered.Align_Widget.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Centered.Align_Widget.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Centered.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Centered.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Centered.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Centered.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_ColumnJustification.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_ColumnJustification.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_ColumnJustification.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_ColumnJustification.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_EA_Character.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_EA_Character.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_EA_Character.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_EA_Character.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Empty_Column.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Empty_Column.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Empty_Column.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Empty_Column.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Expand.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Expand.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Expand.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Expand.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Fold.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Fold.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Fold.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Fold.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Footers.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Footers.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Footers.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Footers.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Impossible.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Impossible.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Impossible.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Impossible.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_LeftAligned.Align_Widget.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_LeftAligned.Align_Widget.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_LeftAligned.Align_Widget.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_LeftAligned.Align_Widget.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_LeftAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_LeftAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_LeftAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_LeftAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Multiline.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Multiline.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Multiline.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Multiline.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Nested.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Nested.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Nested.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Nested.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_NoRows.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_NoRows.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_NoRows.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_NoRows.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_RightAligned.Align_Widget.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_RightAligned.Align_Widget.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_RightAligned.Align_Widget.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_RightAligned.Align_Widget.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_RightAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_RightAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_RightAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_RightAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Row_Separators.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Row_Separators.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Row_Separators.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Row_Separators.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Row_Separators_No_Header.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Row_Separators_No_Header.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Row_Separators_No_Header.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Row_Separators_No_Header.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_Centered.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_Centered.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_Centered.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_Centered.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_LeftAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_LeftAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_LeftAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_LeftAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_LowerCase.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_LowerCase.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_LowerCase.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_LowerCase.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_RightAligned.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_RightAligned.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_RightAligned.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Title_Caption_RightAligned.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Add.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Add.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Add.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Add.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Add.Renderables.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Add.Renderables.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Add.Renderables.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Add.Renderables.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Add.Strings.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Add.Strings.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Add.Strings.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Add.Strings.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Insert.Renderables.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Insert.Renderables.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Insert.Renderables.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Insert.Renderables.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Insert.Strings.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Insert.Strings.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Insert.Strings.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Insert.Strings.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Remove.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Remove.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Remove.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Extensions/Remove.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Insert.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Insert.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Insert.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Insert.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Remove.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Remove.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Remove.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Table/Rows/Remove.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/TextPath/GH-1307.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/TextPath/GH-1307.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/TextPath/GH-1307.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/TextPath/GH-1307.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Tree/Render.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Tree/Render.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Tree/Render.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Tree/Render.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Tree/Render_NoChildren.Output.verified.txt b/src/Tests/Spectre.Console.Tests/Expectations/Widgets/Tree/Render_NoChildren.Output.verified.txt similarity index 100% rename from test/Spectre.Console.Tests/Expectations/Widgets/Tree/Render_NoChildren.Output.verified.txt rename to src/Tests/Spectre.Console.Tests/Expectations/Widgets/Tree/Render_NoChildren.Output.verified.txt diff --git a/test/Spectre.Console.Tests/Extensions/ConsoleKeyExtensions.cs b/src/Tests/Spectre.Console.Tests/Extensions/ConsoleKeyExtensions.cs similarity index 100% rename from test/Spectre.Console.Tests/Extensions/ConsoleKeyExtensions.cs rename to src/Tests/Spectre.Console.Tests/Extensions/ConsoleKeyExtensions.cs diff --git a/test/Spectre.Console.Tests/Extensions/StreamExtensions.cs b/src/Tests/Spectre.Console.Tests/Extensions/StreamExtensions.cs similarity index 100% rename from test/Spectre.Console.Tests/Extensions/StreamExtensions.cs rename to src/Tests/Spectre.Console.Tests/Extensions/StreamExtensions.cs diff --git a/test/Spectre.Console.Tests/Properties/Usings.cs b/src/Tests/Spectre.Console.Tests/Properties/Usings.cs similarity index 100% rename from test/Spectre.Console.Tests/Properties/Usings.cs rename to src/Tests/Spectre.Console.Tests/Properties/Usings.cs diff --git a/src/Tests/Spectre.Console.Tests/Spectre.Console.Tests.csproj b/src/Tests/Spectre.Console.Tests/Spectre.Console.Tests.csproj new file mode 100644 index 000000000..97100e1ff --- /dev/null +++ b/src/Tests/Spectre.Console.Tests/Spectre.Console.Tests.csproj @@ -0,0 +1,35 @@ + + + + net8.0;net7.0;net6.0 + + + + + + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + diff --git a/test/Spectre.Console.Tests/Unit/AlternateScreenTests.cs b/src/Tests/Spectre.Console.Tests/Unit/AlternateScreenTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/AlternateScreenTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/AlternateScreenTests.cs diff --git a/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Advanced.cs b/src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.Advanced.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Advanced.cs rename to src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.Advanced.cs diff --git a/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Colors.cs b/src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.Colors.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Colors.cs rename to src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.Colors.cs diff --git a/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Cursor.cs b/src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.Cursor.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Cursor.cs rename to src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.Cursor.cs diff --git a/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Markup.cs b/src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.Markup.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Markup.cs rename to src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.Markup.cs diff --git a/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.MarkupInterpolated.cs b/src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.MarkupInterpolated.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/AnsiConsoleTests.MarkupInterpolated.cs rename to src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.MarkupInterpolated.cs diff --git a/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Prompt.cs b/src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.Prompt.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Prompt.cs rename to src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.Prompt.cs diff --git a/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Style.cs b/src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.Style.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Style.cs rename to src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.Style.cs diff --git a/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.cs b/src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/AnsiConsoleTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/AnsiConsoleTests.cs diff --git a/test/Spectre.Console.Tests/Unit/ColorSystemTests.cs b/src/Tests/Spectre.Console.Tests/Unit/ColorSystemTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/ColorSystemTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/ColorSystemTests.cs diff --git a/test/Spectre.Console.Tests/Unit/ColorTests.cs b/src/Tests/Spectre.Console.Tests/Unit/ColorTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/ColorTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/ColorTests.cs diff --git a/test/Spectre.Console.Tests/Unit/EmojiTests.cs b/src/Tests/Spectre.Console.Tests/Unit/EmojiTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/EmojiTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/EmojiTests.cs diff --git a/test/Spectre.Console.Tests/Unit/ExceptionTests.cs b/src/Tests/Spectre.Console.Tests/Unit/ExceptionTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/ExceptionTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/ExceptionTests.cs diff --git a/test/Spectre.Console.Tests/Unit/HighlightTests.cs b/src/Tests/Spectre.Console.Tests/Unit/HighlightTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/HighlightTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/HighlightTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Live/Progress/DownloadedColumnTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Live/Progress/DownloadedColumnTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Live/Progress/DownloadedColumnTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Live/Progress/DownloadedColumnTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Live/Progress/ProgressColumnFixture.cs b/src/Tests/Spectre.Console.Tests/Unit/Live/Progress/ProgressColumnFixture.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Live/Progress/ProgressColumnFixture.cs rename to src/Tests/Spectre.Console.Tests/Unit/Live/Progress/ProgressColumnFixture.cs diff --git a/test/Spectre.Console.Tests/Unit/Live/Progress/ProgressTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Live/Progress/ProgressTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Live/Progress/ProgressTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Live/Progress/ProgressTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Live/StatusTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Live/StatusTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Live/StatusTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Live/StatusTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Prompts/ListPromptStateTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Prompts/ListPromptStateTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Prompts/ListPromptStateTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Prompts/ListPromptStateTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Prompts/MultiSelectionPromptTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Prompts/MultiSelectionPromptTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Prompts/MultiSelectionPromptTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Prompts/MultiSelectionPromptTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Prompts/SelectionPromptTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Prompts/SelectionPromptTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Prompts/SelectionPromptTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Prompts/SelectionPromptTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Prompts/TextPromptTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Prompts/TextPromptTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Prompts/TextPromptTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Prompts/TextPromptTests.cs diff --git a/test/Spectre.Console.Tests/Unit/RecorderTests.cs b/src/Tests/Spectre.Console.Tests/Unit/RecorderTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/RecorderTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/RecorderTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Rendering/Borders/BoxBorderTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Rendering/Borders/BoxBorderTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Rendering/Borders/BoxBorderTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Rendering/Borders/BoxBorderTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Rendering/Borders/TableBorderTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Rendering/Borders/TableBorderTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Rendering/Borders/TableBorderTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Rendering/Borders/TableBorderTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Rendering/RenderHookTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Rendering/RenderHookTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Rendering/RenderHookTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Rendering/RenderHookTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Rendering/SegmentTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Rendering/SegmentTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Rendering/SegmentTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Rendering/SegmentTests.cs diff --git a/test/Spectre.Console.Tests/Unit/StyleTests.cs b/src/Tests/Spectre.Console.Tests/Unit/StyleTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/StyleTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/StyleTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/AlignTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/AlignTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/AlignTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/AlignTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/BarChartTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/BarChartTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/BarChartTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/BarChartTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/BreakdownChartTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/BreakdownChartTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/BreakdownChartTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/BreakdownChartTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/CalendarTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/CalendarTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/CalendarTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/CalendarTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/CanvasTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/CanvasTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/CanvasTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/CanvasTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/ColumnsTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/ColumnsTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/ColumnsTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/ColumnsTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/FigletTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/FigletTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/FigletTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/FigletTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/GridTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/GridTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/GridTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/GridTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/JsonTextTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/JsonTextTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/JsonTextTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/JsonTextTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/LayoutTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/LayoutTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/LayoutTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/LayoutTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/MarkupTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/MarkupTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/MarkupTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/MarkupTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/PadderTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/PadderTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/PadderTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/PadderTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/PanelTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/PanelTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/PanelTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/PanelTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/ProgressBarTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/ProgressBarTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/ProgressBarTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/ProgressBarTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/RowsTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/RowsTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/RowsTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/RowsTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/RuleTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/RuleTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/RuleTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/RuleTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/Table/TableRowCollectionExtensionsTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/Table/TableRowCollectionExtensionsTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/Table/TableRowCollectionExtensionsTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/Table/TableRowCollectionExtensionsTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/Table/TableRowCollectionTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/Table/TableRowCollectionTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/Table/TableRowCollectionTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/Table/TableRowCollectionTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/Table/TableTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/Table/TableTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/Table/TableTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/Table/TableTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/TextPathTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/TextPathTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/TextPathTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/TextPathTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/TextTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/TextTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/TextTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/TextTests.cs diff --git a/test/Spectre.Console.Tests/Unit/Widgets/TreeTests.cs b/src/Tests/Spectre.Console.Tests/Unit/Widgets/TreeTests.cs similarity index 100% rename from test/Spectre.Console.Tests/Unit/Widgets/TreeTests.cs rename to src/Tests/Spectre.Console.Tests/Unit/Widgets/TreeTests.cs diff --git a/test/Spectre.Console.Tests/Utilities/EmbeddedResourceReader.cs b/src/Tests/Spectre.Console.Tests/Utilities/EmbeddedResourceReader.cs similarity index 100% rename from test/Spectre.Console.Tests/Utilities/EmbeddedResourceReader.cs rename to src/Tests/Spectre.Console.Tests/Utilities/EmbeddedResourceReader.cs diff --git a/test/Spectre.Console.Tests/Utilities/GitHubIssueAttribute.cs b/src/Tests/Spectre.Console.Tests/Utilities/GitHubIssueAttribute.cs similarity index 100% rename from test/Spectre.Console.Tests/Utilities/GitHubIssueAttribute.cs rename to src/Tests/Spectre.Console.Tests/Utilities/GitHubIssueAttribute.cs diff --git a/test/Spectre.Console.Tests/Utilities/ModuleInitializerAttribute.cs b/src/Tests/Spectre.Console.Tests/Utilities/ModuleInitializerAttribute.cs similarity index 100% rename from test/Spectre.Console.Tests/Utilities/ModuleInitializerAttribute.cs rename to src/Tests/Spectre.Console.Tests/Utilities/ModuleInitializerAttribute.cs diff --git a/test/Spectre.Console.Tests/Utilities/TestConsoleExtensions.cs b/src/Tests/Spectre.Console.Tests/Utilities/TestConsoleExtensions.cs similarity index 100% rename from test/Spectre.Console.Tests/Utilities/TestConsoleExtensions.cs rename to src/Tests/Spectre.Console.Tests/Utilities/TestConsoleExtensions.cs diff --git a/test/Spectre.Console.Tests/VerifyConfiguration.cs b/src/Tests/Spectre.Console.Tests/VerifyConfiguration.cs similarity index 100% rename from test/Spectre.Console.Tests/VerifyConfiguration.cs rename to src/Tests/Spectre.Console.Tests/VerifyConfiguration.cs diff --git a/test/Directory.Build.props b/test/Directory.Build.props deleted file mode 100644 index ade39514b..000000000 --- a/test/Directory.Build.props +++ /dev/null @@ -1,16 +0,0 @@ - - - 12 - false - true - - - - - All - - - All - - - \ No newline at end of file diff --git a/test/Spectre.Console.Analyzer.Tests/CodeAnalyzerHelper.cs b/test/Spectre.Console.Analyzer.Tests/CodeAnalyzerHelper.cs deleted file mode 100644 index 860fcc88e..000000000 --- a/test/Spectre.Console.Analyzer.Tests/CodeAnalyzerHelper.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Spectre.Console.Analyzer.Tests; - -internal static class CodeAnalyzerHelper -{ - internal static ReferenceAssemblies CurrentSpectre { get; } - - static CodeAnalyzerHelper() - { - CurrentSpectre = ReferenceAssemblies.Net.Net60.AddAssemblies( - ImmutableArray.Create(typeof(AnsiConsole).Assembly.Location.Replace(".dll", string.Empty))); - } -} diff --git a/test/Spectre.Console.Analyzer.Tests/CodeFixProviderDiscovery.cs b/test/Spectre.Console.Analyzer.Tests/CodeFixProviderDiscovery.cs deleted file mode 100644 index 9cfb44d0d..000000000 --- a/test/Spectre.Console.Analyzer.Tests/CodeFixProviderDiscovery.cs +++ /dev/null @@ -1,44 +0,0 @@ -namespace Spectre.Console.Analyzer.Tests; - -internal static class CodeFixProviderDiscovery -{ - private static readonly Lazy _exportProviderFactory; - - static CodeFixProviderDiscovery() - { - _exportProviderFactory = new Lazy( - () => - { - var discovery = new AttributedPartDiscovery(Resolver.DefaultInstance, isNonPublicSupported: true); - var parts = Task.Run(() => discovery.CreatePartsAsync(typeof(SystemConsoleToAnsiConsoleFix).Assembly)).GetAwaiter().GetResult(); - var catalog = ComposableCatalog.Create(Resolver.DefaultInstance).AddParts(parts); - - var configuration = CompositionConfiguration.Create(catalog); - var runtimeComposition = RuntimeComposition.CreateRuntimeComposition(configuration); - return runtimeComposition.CreateExportProviderFactory(); - }, - LazyThreadSafetyMode.ExecutionAndPublication); - } - - public static IEnumerable GetCodeFixProviders(string language) - { - var exportProvider = _exportProviderFactory.Value.CreateExportProvider(); - var exports = exportProvider.GetExports(); - return exports.Where(export => export.Metadata.Languages.Contains(language)).Select(export => export.Value); - } - - private class LanguageMetadata - { - public LanguageMetadata(IDictionary data) - { - if (!data.TryGetValue(nameof(ExportCodeFixProviderAttribute.Languages), out var languages)) - { - languages = Array.Empty(); - } - - Languages = ((string[])languages).ToImmutableArray(); - } - - public ImmutableArray Languages { get; } - } -} diff --git a/test/Spectre.Console.Analyzer.Tests/Properties/Usings.cs b/test/Spectre.Console.Analyzer.Tests/Properties/Usings.cs deleted file mode 100644 index 394e6fe22..000000000 --- a/test/Spectre.Console.Analyzer.Tests/Properties/Usings.cs +++ /dev/null @@ -1,15 +0,0 @@ -global using System; -global using System.Collections.Generic; -global using System.Collections.Immutable; -global using System.Linq; -global using System.Threading; -global using System.Threading.Tasks; -global using Microsoft.CodeAnalysis; -global using Microsoft.CodeAnalysis.CodeFixes; -global using Microsoft.CodeAnalysis.CSharp.Testing; -global using Microsoft.CodeAnalysis.Diagnostics; -global using Microsoft.CodeAnalysis.Testing; -global using Microsoft.CodeAnalysis.Testing.Verifiers; -global using Microsoft.VisualStudio.Composition; -global using Spectre.Console.Analyzer.FixProviders; -global using Xunit; \ No newline at end of file diff --git a/test/Spectre.Console.Analyzer.Tests/Spectre.Console.Analyzer.Tests.csproj b/test/Spectre.Console.Analyzer.Tests/Spectre.Console.Analyzer.Tests.csproj deleted file mode 100644 index 19011e7c5..000000000 --- a/test/Spectre.Console.Analyzer.Tests/Spectre.Console.Analyzer.Tests.csproj +++ /dev/null @@ -1,29 +0,0 @@ - - - - net6.0 - false - - - - - - - - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - - - diff --git a/test/Spectre.Console.Analyzer.Tests/SpectreAnalyzerVerifier.cs b/test/Spectre.Console.Analyzer.Tests/SpectreAnalyzerVerifier.cs deleted file mode 100644 index eb333f279..000000000 --- a/test/Spectre.Console.Analyzer.Tests/SpectreAnalyzerVerifier.cs +++ /dev/null @@ -1,62 +0,0 @@ -namespace Spectre.Console.Analyzer.Tests; - -public static class SpectreAnalyzerVerifier - where TAnalyzer : DiagnosticAnalyzer, new() -{ - public static Task VerifyCodeFixAsync(string source, DiagnosticResult expected, string fixedSource) - => VerifyCodeFixAsync(source, OutputKind.DynamicallyLinkedLibrary, new[] { expected }, fixedSource); - - public static Task VerifyCodeFixAsync(string source, OutputKind outputKind, DiagnosticResult expected, string fixedSource) - => VerifyCodeFixAsync(source, outputKind, new[] { expected }, fixedSource); - - private static Task VerifyCodeFixAsync(string source, OutputKind outputKind, IEnumerable expected, string fixedSource) - { - var test = new Test - { - TestCode = source, - TestState = - { - OutputKind = outputKind, - }, - FixedCode = fixedSource, - }; - - test.ExpectedDiagnostics.AddRange(expected); - return test.RunAsync(); - } - - public static Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] expected) - { - var test = new Test - { - TestCode = source, - CompilerDiagnostics = CompilerDiagnostics.All, - }; - - test.ExpectedDiagnostics.AddRange(expected); - return test.RunAsync(); - } - - // Code fix tests support both analyzer and code fix testing. This test class is derived from the code fix test - // to avoid the need to maintain duplicate copies of the customization work. - private class Test : CSharpCodeFixTest - { - public Test() - { - ReferenceAssemblies = CodeAnalyzerHelper.CurrentSpectre; - TestBehaviors |= TestBehaviors.SkipGeneratedCodeCheck; - } - - protected override IEnumerable GetCodeFixProviders() - { - var analyzer = new TAnalyzer(); - foreach (var provider in CodeFixProviderDiscovery.GetCodeFixProviders(Language)) - { - if (analyzer.SupportedDiagnostics.Any(diagnostic => provider.FixableDiagnosticIds.Contains(diagnostic.Id))) - { - yield return provider; - } - } - } - } -} diff --git a/test/Spectre.Console.Analyzer.Tests/Unit/Analyzers/NoConcurrentLiveRenderablesTests.cs b/test/Spectre.Console.Analyzer.Tests/Unit/Analyzers/NoConcurrentLiveRenderablesTests.cs deleted file mode 100644 index 423ba05fb..000000000 --- a/test/Spectre.Console.Analyzer.Tests/Unit/Analyzers/NoConcurrentLiveRenderablesTests.cs +++ /dev/null @@ -1,72 +0,0 @@ -namespace Spectre.Console.Analyzer.Tests.Unit.Analyzers; - -public class NoCurrentLiveRenderablesTests -{ - private static readonly DiagnosticResult _expectedDiagnostics = new( - Descriptors.S1020_AvoidConcurrentCallsToMultipleLiveRenderables.Id, - DiagnosticSeverity.Warning); - - [Fact] - public async void Status_call_within_live_call_warns() - { - const string Source = @" -using Spectre.Console; - -class TestClass -{ - void Go() - { - AnsiConsole.Live(new Table()).Start(ctx => - { - AnsiConsole.Status().Start(""go"", innerCtx => {}); - }); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(10, 13)); - } - - [Fact] - public async void Status_call_within_live_call_warns_with_instance() - { - const string Source = @" -using Spectre.Console; - -class Child -{ - public readonly IAnsiConsole _console = AnsiConsole.Console; - - public void Go() - { - _console.Status().Start(""starting"", context => - { - _console.Progress().Start(progressContext => { }); - }); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(12, 13)); - } - - [Fact] - public async void Calling_start_on_non_live_renderable_has_no_warning() - { - const string Source = @" -using Spectre.Console; - -class Program -{ - static void Main() - { - Start(); - } - - static void Start() => AnsiConsole.WriteLine(""Starting...""); -}"; - - await SpectreAnalyzerVerifier - .VerifyAnalyzerAsync(Source); - } -} diff --git a/test/Spectre.Console.Analyzer.Tests/Unit/Analyzers/NoPromptsDuringLiveRenderablesTests.cs b/test/Spectre.Console.Analyzer.Tests/Unit/Analyzers/NoPromptsDuringLiveRenderablesTests.cs deleted file mode 100644 index c08e79ee2..000000000 --- a/test/Spectre.Console.Analyzer.Tests/Unit/Analyzers/NoPromptsDuringLiveRenderablesTests.cs +++ /dev/null @@ -1,94 +0,0 @@ -namespace Spectre.Console.Analyzer.Tests.Unit.Analyzers; - -public class NoPromptsDuringLiveRenderablesTests -{ - private static readonly DiagnosticResult _expectedDiagnostics = new( - Descriptors.S1021_AvoidPromptCallsDuringLiveRenderables.Id, - DiagnosticSeverity.Warning); - - [Fact] - public async Task Prompt_out_of_progress_does_not_warn() - { - const string Source = @" -using Spectre.Console; - -class TestClass -{ - void Go() - { - var s = AnsiConsole.Ask(""How are you?""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyAnalyzerAsync(Source); - } - - [Fact] - public async Task Instance_variables_warn() - { - const string Source = @" -using Spectre.Console; - -class TestClass -{ - public IAnsiConsole _console = AnsiConsole.Console; - - public void Go() - { - _console.Status().Start(""starting"", context => - { - var result = _console.Confirm(""we ok?""); - }); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(12, 26)); - } - - [Fact] - public async Task Prompt_in_progress_warns() - { - const string Source = @" -using Spectre.Console; - -class TestClass -{ - void Go() - { - AnsiConsole.Progress().Start(_ => - { - AnsiConsole.Ask(""How are you?""); - }); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(10, 13)); - } - - [Fact] - public async Task Can_call_other_methods_from_within_renderables() - { - const string Source = @" -using Spectre.Console; - -class Program -{ - static void Main() - { - AnsiConsole.Status().Start(""here we go"", context => - { - var result = Confirm(); - - }); - } - - static string Confirm() => string.Empty; -}"; - - await SpectreAnalyzerVerifier - .VerifyAnalyzerAsync(Source); - } -} diff --git a/test/Spectre.Console.Analyzer.Tests/Unit/Analyzers/UseInstanceAnsiConsoleTests.cs b/test/Spectre.Console.Analyzer.Tests/Unit/Analyzers/UseInstanceAnsiConsoleTests.cs deleted file mode 100644 index 684501923..000000000 --- a/test/Spectre.Console.Analyzer.Tests/Unit/Analyzers/UseInstanceAnsiConsoleTests.cs +++ /dev/null @@ -1,88 +0,0 @@ -namespace Spectre.Console.Analyzer.Tests.Unit.Analyzers; - -public class FavorInstanceAnsiConsoleOverStaticAnalyzerTests -{ - private static readonly DiagnosticResult _expectedDiagnostics = new( - Descriptors.S1010_FavorInstanceAnsiConsoleOverStatic.Id, - DiagnosticSeverity.Info); - - [Fact] - public async void Should_only_warn_within_methods() - { - const string Source = @" -using Spectre.Console; - -internal sealed class Foo -{ - private readonly IAnsiConsole _console; - - public Foo(IAnsiConsole console = null) - { - _console = console ?? AnsiConsole.Create(new AnsiConsoleSettings()); - } -} -"; - - await SpectreAnalyzerVerifier - .VerifyAnalyzerAsync(Source); - } - - [Fact] - public async void Instance_console_has_no_warnings() - { - const string Source = @" -using Spectre.Console; - -class TestClass -{ - IAnsiConsole _ansiConsole = AnsiConsole.Console; - - void TestMethod() - { - _ansiConsole.Write(""this is fine""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyAnalyzerAsync(Source); - } - - [Fact] - public async void Static_console_with_no_instance_variables_has_no_warnings() - { - const string Source = @" -using Spectre.Console; - -class TestClass -{ - void TestMethod() - { - AnsiConsole.Write(""this is fine""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyAnalyzerAsync(Source); - } - - [Fact] - public async void Console_Write_Has_Warning() - { - const string Source = @" -using Spectre.Console; - -class TestClass -{ - IAnsiConsole _ansiConsole = AnsiConsole.Console; - - void TestMethod() - { - _ansiConsole.Write(""this is fine""); - AnsiConsole.Write(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(11, 9)); - } -} diff --git a/test/Spectre.Console.Analyzer.Tests/Unit/Analyzers/UseSpectreInsteadOfSystemConsoleAnalyzerTests.cs b/test/Spectre.Console.Analyzer.Tests/Unit/Analyzers/UseSpectreInsteadOfSystemConsoleAnalyzerTests.cs deleted file mode 100644 index 094315f0a..000000000 --- a/test/Spectre.Console.Analyzer.Tests/Unit/Analyzers/UseSpectreInsteadOfSystemConsoleAnalyzerTests.cs +++ /dev/null @@ -1,59 +0,0 @@ -namespace Spectre.Console.Analyzer.Tests.Unit.Analyzers; - -public class UseSpectreInsteadOfSystemConsoleAnalyzerTests -{ - private static readonly DiagnosticResult _expectedDiagnostics = new( - Descriptors.S1000_UseAnsiConsoleOverSystemConsole.Id, - DiagnosticSeverity.Warning); - - [Fact] - public async void Non_configured_SystemConsole_methods_report_no_warnings() - { - const string Source = @" -using System; - -class TestClass { - void TestMethod() - { - var s = Console.ReadLine(); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyAnalyzerAsync(Source); - } - - [Fact] - public async void Console_Write_Has_Warning() - { - const string Source = @" -using System; - -class TestClass { - void TestMethod() - { - Console.Write(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(7, 9)); - } - - [Fact] - public async void Console_WriteLine_Has_Warning() - { - const string Source = @" -using System; - -class TestClass -{ - void TestMethod() { - Console.WriteLine(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(7, 9)); - } -} diff --git a/test/Spectre.Console.Analyzer.Tests/Unit/Fixes/UseInstanceOfStaticAnsiConsoleTests.cs b/test/Spectre.Console.Analyzer.Tests/Unit/Fixes/UseInstanceOfStaticAnsiConsoleTests.cs deleted file mode 100644 index 34fc78596..000000000 --- a/test/Spectre.Console.Analyzer.Tests/Unit/Fixes/UseInstanceOfStaticAnsiConsoleTests.cs +++ /dev/null @@ -1,146 +0,0 @@ -namespace Spectre.Console.Analyzer.Tests.Unit.Fixes; - -public class UseInstanceOfStaticAnsiConsoleTests -{ - private static readonly DiagnosticResult _expectedDiagnostic = new( - Descriptors.S1010_FavorInstanceAnsiConsoleOverStatic.Id, - DiagnosticSeverity.Info); - - [Fact] - public async Task Static_call_replaced_with_field_call() - { - const string Source = @" -using Spectre.Console; - -class TestClass -{ - IAnsiConsole _ansiConsole = AnsiConsole.Console; - - void TestMethod() - { - _ansiConsole.Write(""this is fine""); - AnsiConsole.Write(""Hello, World""); - } -}"; - - const string FixedSource = @" -using Spectre.Console; - -class TestClass -{ - IAnsiConsole _ansiConsole = AnsiConsole.Console; - - void TestMethod() - { - _ansiConsole.Write(""this is fine""); - _ansiConsole.Write(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource); - } - - [Fact] - public async Task Static_call_replaced_with_field_call_Should_Preserve_Trivia() - { - const string Source = @" -using Spectre.Console; - -class TestClass -{ - IAnsiConsole _ansiConsole = AnsiConsole.Console; - - void TestMethod() - { - var foo = 1; - - AnsiConsole.Write(""this is fine""); - _ansiConsole.Write(""Hello, World""); - } -}"; - - const string FixedSource = @" -using Spectre.Console; - -class TestClass -{ - IAnsiConsole _ansiConsole = AnsiConsole.Console; - - void TestMethod() - { - var foo = 1; - - _ansiConsole.Write(""this is fine""); - _ansiConsole.Write(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(12, 9), FixedSource); - } - - [Fact] - public async Task Static_call_replaced_with_parameter_call() - { - const string Source = @" -using Spectre.Console; - -class TestClass -{ - void TestMethod(IAnsiConsole ansiConsole) - { - AnsiConsole.Write(""Hello, World""); - } -}"; - - const string FixedSource = @" -using Spectre.Console; - -class TestClass -{ - void TestMethod(IAnsiConsole ansiConsole) - { - ansiConsole.Write(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(8, 9), FixedSource); - } - - [Fact] - public async Task Static_call_replaced_with_static_field_if_valid() - { - const string Source = @" -using Spectre.Console; - -class TestClass -{ - static IAnsiConsole staticConsole; - IAnsiConsole instanceConsole; - - static void TestMethod() - { - AnsiConsole.Write(""Hello, World""); - } -}"; - - const string FixedSource = @" -using Spectre.Console; - -class TestClass -{ - static IAnsiConsole staticConsole; - IAnsiConsole instanceConsole; - - static void TestMethod() - { - staticConsole.Write(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource); - } -} diff --git a/test/Spectre.Console.Analyzer.Tests/Unit/Fixes/UseSpectreInsteadOfSystemConsoleFixTests.cs b/test/Spectre.Console.Analyzer.Tests/Unit/Fixes/UseSpectreInsteadOfSystemConsoleFixTests.cs deleted file mode 100644 index b0eadad67..000000000 --- a/test/Spectre.Console.Analyzer.Tests/Unit/Fixes/UseSpectreInsteadOfSystemConsoleFixTests.cs +++ /dev/null @@ -1,324 +0,0 @@ -namespace Spectre.Console.Analyzer.Tests.Unit.Fixes; - -public class UseSpectreInsteadOfSystemConsoleFixTests -{ - private static readonly DiagnosticResult _expectedDiagnostic = new( - Descriptors.S1000_UseAnsiConsoleOverSystemConsole.Id, - DiagnosticSeverity.Warning); - - [Fact] - public async Task SystemConsole_replaced_with_AnsiConsole() - { - const string Source = @" -using System; - -class TestClass -{ - void TestMethod() - { - Console.WriteLine(""Hello, World""); - } -}"; - - const string FixedSource = @" -using System; -using Spectre.Console; - -class TestClass -{ - void TestMethod() - { - AnsiConsole.WriteLine(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(8, 9), FixedSource); - } - - [Fact] - public async Task SystemConsole_replaced_with_imported_AnsiConsole() - { - const string Source = @" -using System; - -class TestClass -{ - void TestMethod() - { - Console.WriteLine(""Hello, World""); - } -}"; - - const string FixedSource = @" -using System; -using Spectre.Console; - -class TestClass -{ - void TestMethod() - { - AnsiConsole.WriteLine(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(8, 9), FixedSource); - } - - [Fact] - public async Task SystemConsole_replaced_with_field_AnsiConsole() - { - const string Source = @" -using System; -using Spectre.Console; - -class TestClass -{ - IAnsiConsole _ansiConsole; - - void TestMethod() - { - Console.WriteLine(""Hello, World""); - } -}"; - - const string FixedSource = @" -using System; -using Spectre.Console; - -class TestClass -{ - IAnsiConsole _ansiConsole; - - void TestMethod() - { - _ansiConsole.WriteLine(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource); - } - - [Fact] - public async Task SystemConsole_replaced_with_local_variable_AnsiConsole() - { - const string Source = @" -using System; -using Spectre.Console; - -class TestClass -{ - void TestMethod() - { - IAnsiConsole ansiConsole = null; - Console.WriteLine(""Hello, World""); - } -}"; - - const string FixedSource = @" -using System; -using Spectre.Console; - -class TestClass -{ - void TestMethod() - { - IAnsiConsole ansiConsole = null; - ansiConsole.WriteLine(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(10, 9), FixedSource); - } - - [Fact] - public async Task SystemConsole_not_replaced_with_local_variable_declared_after_the_call() - { - const string Source = @" -using System; -using Spectre.Console; - -class TestClass -{ - void TestMethod() - { - Console.WriteLine(""Hello, World""); - IAnsiConsole ansiConsole; - } -}"; - - const string FixedSource = @" -using System; -using Spectre.Console; - -class TestClass -{ - void TestMethod() - { - AnsiConsole.WriteLine(""Hello, World""); - IAnsiConsole ansiConsole; - } -}"; - - await SpectreAnalyzerVerifier - .VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(9, 9), FixedSource); - } - - [Fact] - public async Task SystemConsole_replaced_with_static_field_AnsiConsole() - { - const string Source = @" -using System; -using Spectre.Console; - -class TestClass -{ - static IAnsiConsole _ansiConsole; - - static void TestMethod() - { - Console.WriteLine(""Hello, World""); - } -}"; - - const string FixedSource = @" -using System; -using Spectre.Console; - -class TestClass -{ - static IAnsiConsole _ansiConsole; - - static void TestMethod() - { - _ansiConsole.WriteLine(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource); - } - - [Fact] - public async Task SystemConsole_replaced_with_AnsiConsole_when_field_is_not_static() - { - const string Source = @" -using System; -using Spectre.Console; - -class TestClass -{ - IAnsiConsole _ansiConsole; - - static void TestMethod() - { - Console.WriteLine(""Hello, World""); - } -}"; - - const string FixedSource = @" -using System; -using Spectre.Console; - -class TestClass -{ - IAnsiConsole _ansiConsole; - - static void TestMethod() - { - AnsiConsole.WriteLine(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource); - } - - [Fact] - public async Task SystemConsole_replaced_with_AnsiConsole_from_local_function_parameter() - { - const string Source = @" -using System; -using Spectre.Console; - -class TestClass -{ - static void TestMethod() - { - static void LocalFunction(IAnsiConsole ansiConsole) => Console.WriteLine(""Hello, World""); - } -}"; - - const string FixedSource = @" -using System; -using Spectre.Console; - -class TestClass -{ - static void TestMethod() - { - static void LocalFunction(IAnsiConsole ansiConsole) => ansiConsole.WriteLine(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(9, 64), FixedSource); - } - - [Fact] - public async Task SystemConsole_do_not_use_variable_from_parent_method_in_static_local_function() - { - const string Source = @" -using System; -using Spectre.Console; - -class TestClass -{ - static void TestMethod() - { - IAnsiConsole ansiConsole = null; - static void LocalFunction() => Console.WriteLine(""Hello, World""); - } -}"; - - const string FixedSource = @" -using System; -using Spectre.Console; - -class TestClass -{ - static void TestMethod() - { - IAnsiConsole ansiConsole = null; - static void LocalFunction() => AnsiConsole.WriteLine(""Hello, World""); - } -}"; - - await SpectreAnalyzerVerifier - .VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(10, 40), FixedSource); - } - - [Fact] - public async Task SystemConsole_replaced_with_AnsiConsole_in_top_level_statements() - { - const string Source = @" -using System; - -Console.WriteLine(""Hello, World""); -"; - - const string FixedSource = @" -using System; -using Spectre.Console; - -AnsiConsole.WriteLine(""Hello, World""); -"; - - await SpectreAnalyzerVerifier - .VerifyCodeFixAsync(Source, OutputKind.ConsoleApplication, _expectedDiagnostic.WithLocation(4, 1), - FixedSource); - } -} diff --git a/test/Spectre.Console.Cli.Tests/Spectre.Console.Cli.Tests.csproj b/test/Spectre.Console.Cli.Tests/Spectre.Console.Cli.Tests.csproj deleted file mode 100644 index fede880e9..000000000 --- a/test/Spectre.Console.Cli.Tests/Spectre.Console.Cli.Tests.csproj +++ /dev/null @@ -1,31 +0,0 @@ - - - - net8.0;net7.0;net6.0 - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - diff --git a/test/Spectre.Console.Tests/Spectre.Console.Tests.csproj b/test/Spectre.Console.Tests/Spectre.Console.Tests.csproj deleted file mode 100644 index 1004369b8..000000000 --- a/test/Spectre.Console.Tests/Spectre.Console.Tests.csproj +++ /dev/null @@ -1,39 +0,0 @@ - - - - net8.0;net7.0;net6.0 - - - - - - - - - - - - Always - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - -