Source code for jasy.test.script.combinedecl

#!/usr/bin/env python3

import sys
import os
import unittest
import logging

# Extend PYTHONPATH with local 'lib' folder
if __name__ == "__main__":
    jasyroot = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir, os.pardir, os.pardir))
    sys.path.insert(0, jasyroot)
    print("Running from %s..." % jasyroot)

import jasy.script.parse.Parser as Parser
import jasy.script.parse.ScopeScanner as ScopeScanner
import jasy.script.output.Compressor as Compressor
import jasy.script.optimize.CombineDeclarations as CombineDeclarations


[docs]class Tests(unittest.TestCase):
[docs] def process(self, code): node = Parser.parse(code) ScopeScanner.scan(node) CombineDeclarations.optimize(node) return Compressor.Compressor().compress(node)
[docs] def test_combine_basic(self): self.assertEqual(self.process( ''' var foo=3; var bar=4; foo++; var baz=foo+bar; '''), 'var foo=3,bar=4,baz;foo++;baz=foo+bar;' )
[docs] def test_combine_closure_innerfirst(self): self.assertEqual(self.process( ''' function inner() { var innerVarA = 5; var innerVarB = 10; doSomething(); var innerVarC = 15; } var after; var afterInit = 6; '''), 'function inner(){var innerVarA=5,innerVarB=10,innerVarC;doSomething();innerVarC=15}var after,afterInit=6;' )
[docs] def test_combine_closure(self): self.assertEqual(self.process( ''' var before = 4; function inner() { var innerVarA = 5; var innerVarB = 10; doSomething(); var innerVarC = 15; } var after; var afterInit = 6; '''), 'var before=4,after,afterInit;function inner(){var innerVarA=5,innerVarB=10,innerVarC;doSomething();innerVarC=15}afterInit=6;' )
[docs] def test_combine_complex(self): self.assertEqual(self.process( ''' var foo=3; var bar=4; foo++; { var baz=foo+bar; var next; } '''), 'var foo=3,bar=4,baz,next;foo++;{baz=foo+bar}' )
[docs] def test_combine_destruct_assign(self): self.assertEqual(self.process( ''' function wrapper() { var desFirst=3; while(x); var [desFirst, desSecond] = destruct(); } '''), 'function wrapper(){var desFirst=3,desSecond;while(x);[desFirst,desSecond]=destruct()}' )
[docs] def test_combine_destruct(self): self.assertEqual(self.process( ''' function wrapper() { var desFirst=3, desSecond; var [desFirst, desSecond] = destruct(); } '''), 'function wrapper(){var desFirst=3,[desFirst,desSecond]=destruct()}' )
[docs] def test_combine_doubles(self): self.assertEqual(self.process( ''' var foo=3; var foo=4; '''), 'var foo=3,foo=4;' )
[docs] def test_combine_doubles_break(self): self.assertEqual(self.process( ''' var foo = 3; var bar = 2; x(); var foo = 4; '''), 'var foo=3,bar=2;x();foo=4;' )
[docs] def test_combine_doubles_for(self): self.assertEqual(self.process( ''' for(var key in obj) {} for(var key in obj2) {} for(var key2 in obj) {} '''), 'var key,key2;for(key in obj){}for(key in obj2){}for(key2 in obj){}' )
[docs] def test_combine_doubles_oneassign(self): self.assertEqual(self.process( ''' var foo=3; var foo; '''), 'var foo=3;' )
if __name__ == '__main__': logging.getLogger().setLevel(logging.ERROR) suite = unittest.TestLoader().loadTestsFromTestCase(Tests) unittest.TextTestRunner(verbosity=2).run(suite)