public void TestAllUsageOutputsDontThrowExceptionsOrContainUnprocessedReplacements()
{
int verifyCount = 0;
var types = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.GetCustomAttributes(typeof(UsageAutomation), true).Length > 0);
System.Threading.Tasks.Parallel.ForEach(types, (type) =>
{
ArgUsage.GetStyledUsage(type, "testusage.exe");
var consoleOutput = ArgUsage.GenerateUsageFromTemplate(type, template: PowerArgs.Resources.DefaultConsoleUsageTemplate);
var browserOutput = ArgUsage.GenerateUsageFromTemplate(type, template: PowerArgs.Resources.DefaultBrowserUsageTemplate);
Assert.IsFalse(consoleOutput.Contains("{{"));
Assert.IsFalse(consoleOutput.Contains("}}"));
Assert.IsFalse(browserOutput.Contains("{{"));
Assert.IsFalse(browserOutput.Contains("}}"));
Interlocked.Increment(ref verifyCount);
Console.WriteLine("*************************************");
Console.WriteLine("* " + type.Name);
Console.WriteLine("*************************************\n");
Console.WriteLine(consoleOutput);
Console.WriteLine("*************************************\n");
});
Console.WriteLine("Verified usage output for "+verifyCount+" types");
}