Source code for jasy.test.style.flattening

#!/usr/bin/env python3

import sys
import os
import unittest
import logging
import inspect

# 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.style.Engine as Engine
import jasy.core.Permutation as Permutation



[docs]class Tests(unittest.TestCase):
[docs] def process(self, code): callerName = inspect.stack()[1][3][5:] permutation = Permutation.Permutation({ "jasy.engine" : "gecko", "jasy.debug" : True }) tree = Engine.getTree(code, callerName) tree = Engine.permutateTree(tree, permutation) tree = Engine.reduceTree(tree) return Engine.compressTree(tree)
[docs] def test_media_with_one_selector(self): self.assertEqual(self.process(''' @media print{ body{ color: black; } } @media screen{ body{ color: #333; } } '''), '@media print{body{color:black;}}@media screen{body{color:#333;}}')
[docs] def test_order(self): self.assertEqual(self.process(''' .rule1{ color: black; } @media print{ .rule2a{ color: green; } .rule2b{ color: blue; } } .rule3{ color: grey; } @media screen{ .rule4a{ color: orange; } .rule4b{ color: red; } } .rule5{ color: white; } '''), '.rule1{color:black;}@media print{.rule2a{color:green;}.rule2b{color:blue;}}.rule3{color:grey;}@media screen{.rule4a{color:orange;}.rule4b{color:red;}}.rule5{color:white;}')
[docs] def test_order_inner_media(self): self.assertEqual(self.process(''' .rule1{ color: black; } .rule2a{ @media print{ color: green; } } .rule2b{ @media print{ color: blue; } } .rule3{ color: grey; } .rule4a{ @media screen{ color: orange; } } .rule4b{ @media screen{ color: red; } } .rule5{ color: white; } '''), '.rule1{color:black;}@media print{.rule2a{color:green;}.rule2b{color:blue;}}.rule3{color:grey;}@media screen{.rule4a{color:orange;}.rule4b{color:red;}}.rule5{color:white;}')
[docs] def test_merge_media(self): self.assertEqual(self.process(''' @media print{ body{ color: black; } } @media print{ header{ color: #333; } } '''), '@media print{body{color:black;}header{color:#333;}}')
[docs] def test_merge_selector(self): self.assertEqual(self.process(''' body{ color: black; } body{ font-weight: normal; } '''), 'body{color:black;font-weight:normal;}')
[docs] def test_merge_media_and_selector(self): self.assertEqual(self.process(''' @media print{ body{ color: black; } } @media print{ body{ color: #333; } } '''), '@media print{body{color:black;color:#333;}}')
[docs] def test_merge_media_and_selector_conditional(self): self.assertEqual(self.process(''' @media print{ body{ color: black; } } @if jasy.debug{ @media print{ body{ color: #333; } } } '''), '@media print{body{color:black;color:#333;}}')
if __name__ == '__main__': logging.getLogger().setLevel(logging.ERROR) suite = unittest.TestLoader().loadTestsFromTestCase(Tests) unittest.TextTestRunner(verbosity=2).run(suite)