void RunAndAssert(CompressTestData testData, ICompressOptions options) { var(outAst, outMinJs, outNiceJs) = CompressTestCore(testData, options); Assert.Equal(testData.ExpectedAst, outAst); Assert.Equal(testData.ExpectedNiceJs, outNiceJs); Assert.Equal(testData.ExpectedMinJs, outMinJs); }
public void ShouldRemoveEmptyStatements(CompressTestData testData) { RunAndAssert(testData, EmptyStatementEliminationCompressOptions); }
public void ShouldRemoveUnnecessaryBlocks(CompressTestData testData) { Assert.Equal(1u, BlockEliminationCompressOptions.MaxPasses); RunAndAssert(testData, BlockEliminationCompressOptions); }
public void ShouldRemoveUnreachableCode(CompressTestData testData) { RunAndAssert(testData, UnreachableCodeBlocksCompressOptions); }
public void ShouldRemoveUnreachableCodeUnnecessaryBlocksAndEmptyStatements(CompressTestData testData) { RunAndAssert(testData, UnreachableCodeBlocksAndEmptyStatementsCompressOptions); }
public static (string outAst, string outMinJs, string outNiceJs) CompressTestCore(CompressTestData testData, ICompressOptions options) { string outAst; var outNiceJs = string.Empty; var outMinJs = string.Empty; try { var parser = new Parser(new Options(), testData.InputContent); var toplevel = parser.Parse(); toplevel.FigureOutScope(); toplevel = toplevel.Compress(options); var strSink = new StringLineSink(); var dumper = new DumpAst(new AstDumpWriter(strSink)); dumper.Walk(toplevel); outAst = strSink.ToString(); var outMinJsBuilder = new SourceMapBuilder(); toplevel.PrintToBuilder(outMinJsBuilder, new OutputOptions()); outMinJs = outMinJsBuilder.Content(); var outNiceJsBuilder = new SourceMapBuilder(); toplevel.PrintToBuilder(outNiceJsBuilder, new OutputOptions { Beautify = true }); outNiceJs = outNiceJsBuilder.Content(); } catch (SyntaxError e) { outAst = e.Message; } return(outAst, outMinJs, outNiceJs); }
public void ShouldRemoveSideEffectFreeCode(CompressTestData testData) { RunAndAssert(testData, RemoveSideEffectFreeCodeCompressOptions); }
public void ShouldRemoveUnusedFunctions(CompressTestData testData) { RunAndAssert(testData, UnusedFunctionEliminationCompressOptions); }
public void ShouldHoistVariableToBeginOfScopeWith2Passes(CompressTestData testData) { RunAndAssert(testData, VariableHosting2PassesCompressOptions); }
public void ShouldCompressFunctionsReturnStatement(CompressTestData testData) { RunAndAssert(testData, FunctionReturnCompressCompressOptions); }
public void ShouldCompressBooleanExpressions(CompressTestData testData) { RunAndAssert(testData, BooleanCompressCompressOptions); }