Esempio n. 1
0
    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);
    }
Esempio n. 2
0
 public void ShouldRemoveEmptyStatements(CompressTestData testData)
 {
     RunAndAssert(testData, EmptyStatementEliminationCompressOptions);
 }
Esempio n. 3
0
 public void ShouldRemoveUnnecessaryBlocks(CompressTestData testData)
 {
     Assert.Equal(1u, BlockEliminationCompressOptions.MaxPasses);
     RunAndAssert(testData, BlockEliminationCompressOptions);
 }
Esempio n. 4
0
 public void ShouldRemoveUnreachableCode(CompressTestData testData)
 {
     RunAndAssert(testData, UnreachableCodeBlocksCompressOptions);
 }
Esempio n. 5
0
 public void ShouldRemoveUnreachableCodeUnnecessaryBlocksAndEmptyStatements(CompressTestData testData)
 {
     RunAndAssert(testData, UnreachableCodeBlocksAndEmptyStatementsCompressOptions);
 }
Esempio n. 6
0
    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);
    }
Esempio n. 7
0
 public void ShouldRemoveSideEffectFreeCode(CompressTestData testData)
 {
     RunAndAssert(testData, RemoveSideEffectFreeCodeCompressOptions);
 }
Esempio n. 8
0
 public void ShouldRemoveUnusedFunctions(CompressTestData testData)
 {
     RunAndAssert(testData, UnusedFunctionEliminationCompressOptions);
 }
Esempio n. 9
0
 public void ShouldHoistVariableToBeginOfScopeWith2Passes(CompressTestData testData)
 {
     RunAndAssert(testData, VariableHosting2PassesCompressOptions);
 }
Esempio n. 10
0
 public void ShouldCompressFunctionsReturnStatement(CompressTestData testData)
 {
     RunAndAssert(testData, FunctionReturnCompressCompressOptions);
 }
Esempio n. 11
0
 public void ShouldCompressBooleanExpressions(CompressTestData testData)
 {
     RunAndAssert(testData, BooleanCompressCompressOptions);
 }