| File: CmdLine\CmdIndenterTest.cs | Web Access |
| Project: src\test\Microsoft.ML.Predictor.Tests\Microsoft.ML.Predictor.Tests.csproj (Microsoft.ML.Predictor.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System; using System.CodeDom.Compiler; using System.IO; using Microsoft.ML.Internal.Utilities; using Microsoft.ML.Runtime; using Xunit; using Xunit.Abstractions; namespace Microsoft.ML.RunTests { public sealed partial class CmdIndenterTests : BaseTestBaseline { public CmdIndenterTests(ITestOutputHelper helper) : base(helper) { } [Fact(Skip = "Need CoreTLC specific baseline update")] [TestCategory("Cmd Parsing")] public void TestCmdIndenter() { Run(); } private string GetResText(string resName) { var stream = typeof(CmdIndenterTests).Assembly.GetManifestResourceStream(resName); if (stream == null) return string.Format("<couldn't read {0}>", resName); using (var reader = new StreamReader(stream)) { return reader.ReadToEnd(); } } internal void Run() { string text = GetResText("Microsoft.ML.RunTests.CmdLine.IndenterTestInput.txt"); string outName = "CmdIndenterOutput.txt"; string outPath = DeleteOutputPath("CmdLine", outName); using (var writer = File.CreateText(outPath)) { var wrt = new IndentedTextWriter(writer, " "); // Individual scripts are separated by $ int count = 0; int ichLim = 0; int lineLim = 1; while (ichLim < text.Length) { int ichMin = ichLim; int lineMin = lineLim; while (ichLim < text.Length && text[ichLim] != '$') { if (text[ichLim] == '\n') lineLim++; ichLim++; } while (ichMin < ichLim && char.IsWhiteSpace(text[ichMin])) { if (text[ichMin] == '\n') lineMin++; ichMin++; } if (ichMin < ichLim) { // Process the script. count++; string scriptName = string.Format("Script {0}, lines {1} to {2}", count, lineMin, lineLim); wrt.WriteLine("===== Start {0} =====", scriptName); string input = text.Substring(ichMin, ichLim - ichMin); try { wrt.WriteLine(CmdIndenter.GetIndentedCommandLine(input)); } catch (Exception ex) { if (!ex.IsMarked()) wrt.WriteLine("Unknown Exception!"); wrt.WriteLine("Exception: {0}", ex.Message); } wrt.WriteLine("===== End {0} =====", scriptName); } // Skip the $ ichLim++; } } CheckEquality("CmdLine", outName); Done(); } } }