#!/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.core.Permutation as Permutation
import jasy.script.parse.Parser as Parser
import jasy.script.parse.ScopeScanner as ScopeScanner
import jasy.script.output.Compressor as Compressor
import jasy.script.clean.Permutate as Permutate
[docs]class Tests(unittest.TestCase):
[docs] def process(self, code, contextId=""):
node = Parser.parse(code)
permutation = Permutation.Permutation({
'debug': False,
'legacy': True,
'engine': 'webkit',
'version': 3,
'fullversion': 3.11
})
Permutate.patch(node, permutation)
return Compressor.Compressor().compress(node)
[docs] def test_get(self):
self.assertEqual(self.process(
'var engine = jasy.Env.getValue("engine");'),
'var engine="webkit";'
)
[docs] def test_if_isset(self):
self.assertEqual(self.process(
'''
if (jasy.Env.isSet("debug", true)) {
var x = 1;
}
'''),
'if(false){var x=1}'
)
[docs] def test_isset_bool_false(self):
self.assertEqual(self.process(
'var debug = jasy.Env.isSet("debug", true);'),
'var debug=false;'
)
[docs] def test_isset_bool_shorthand_false(self):
self.assertEqual(self.process(
'var debug = jasy.Env.isSet("debug");'),
'var debug=false;'
)
[docs] def test_isset_bool_true(self):
self.assertEqual(self.process(
'var legacy = jasy.Env.isSet("legacy", true);'),
'var legacy=true;'
)
[docs] def test_isset_bool_shorthand_true(self):
self.assertEqual(self.process(
'var legacy = jasy.Env.isSet("legacy");'),
'var legacy=true;'
)
[docs] def test_isset_typediff(self):
self.assertEqual(self.process(
'var legacy = jasy.Env.isSet("legacy", "foo");'),
'var legacy=false;'
)
[docs] def test_isset_lookup(self):
self.assertEqual(self.process(
'var legacy = jasy.Env.isSet("legacy", x);'),
'var legacy=jasy.Env.isSet("legacy",x);'
)
[docs] def test_isset_int_true(self):
self.assertEqual(self.process(
'var recent = jasy.Env.isSet("version", 3);'),
'var recent=true;'
)
[docs] def test_isset_int_false(self):
self.assertEqual(self.process(
'var recent = jasy.Env.isSet("version", 5);'),
'var recent=false;'
)
[docs] def test_isset_float_true(self):
self.assertEqual(self.process(
'var buggy = jasy.Env.isSet("fullversion", 3.11);'),
'var buggy=true;'
)
[docs] def test_isset_float_false(self):
self.assertEqual(self.process(
'var buggy = jasy.Env.isSet("fullversion", 3.2);'),
'var buggy=false;'
)
[docs] def test_isset_str_single(self):
self.assertEqual(self.process(
'var modern = jasy.Env.isSet("engine", "webkit");'),
'var modern=true;'
)
[docs] def test_isset_str_multi(self):
self.assertEqual(self.process(
'var modern = jasy.Env.isSet("engine", "gecko|webkit");'),
'var modern=true;'
)
[docs] def test_isset_str_multilong(self):
self.assertEqual(self.process(
'var modern = jasy.Env.isSet("engine", "gecko|webkitbrowser");'),
'var modern=false;'
)
[docs] def test_select(self):
self.assertEqual(self.process(
'''
var prefix = jasy.Env.select("engine", {
webkit: "Webkit",
gecko: "Moz",
trident: "ms"
});
'''),
'var prefix="Webkit";'
)
[docs] def test_select_notfound(self):
self.assertEqual(self.process(
'''
var prefix = jasy.Env.select("engine", {
gecko: "Moz",
trident: "ms"
});
'''),
'var prefix=jasy.Env.select("engine",{gecko:"Moz",trident:"ms"});'
)
[docs] def test_select_default(self):
self.assertEqual(self.process(
'''
var prefix = jasy.Env.select("engine", {
gecko: "Moz",
trident: "ms",
"default": ""
});
'''),
'var prefix="";'
)
[docs] def test_select_multi(self):
self.assertEqual(self.process(
'''
var prefix = jasy.Env.select("engine", {
"webkit|khtml": "Webkit",
trident: "ms",
});
'''),
'var prefix="Webkit";'
)
if __name__ == '__main__':
logging.getLogger().setLevel(logging.ERROR)
suite = unittest.TestLoader().loadTestsFromTestCase(Tests)
unittest.TextTestRunner(verbosity=2).run(suite)