Source code for jasy.test.style.supports

#!/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_outer(self): self.assertEqual(self.process(r''' @supports(-webkit-text-stroke: 1px black) { h1{ -webkit-text-stroke: 1px black; } } '''), '@supports (-webkit-text-stroke:1px black){h1{-webkit-text-stroke:1px black;}}')
[docs] def test_between(self): self.assertEqual(self.process(r''' body{ @supports(-webkit-text-stroke: 1px black) { h1{ -webkit-text-stroke: 1px black; } } } '''), '@supports (-webkit-text-stroke:1px black){body h1{-webkit-text-stroke:1px black;}}')
[docs] def test_inner(self): self.assertEqual(self.process(r''' body{ h1{ color: black; @supports(-webkit-text-stroke: 1px black) { -webkit-text-stroke: 1px black; } } } '''), 'body h1{color:black;}@supports (-webkit-text-stroke:1px black){body h1{-webkit-text-stroke:1px black;}}')
[docs] def test_combined(self): self.assertEqual(self.process(r''' body{ @supports(-webkit-text-stroke: 1px black) { h1{ -webkit-text-stroke: 1px black; @supports (color:black){ color: black; } } } } '''), '@supports (-webkit-text-stroke:1px black){body h1{-webkit-text-stroke:1px black;}}@supports (color:black) and (-webkit-text-stroke:1px black){body h1{color:black;}}')
[docs] def test_combined_inner(self): self.assertEqual(self.process(r''' body{ @supports(-webkit-text-stroke: 1px black) { h1{ -webkit-text-stroke: 1px black; @supports (color:black){ em{ color: black; } } } } } '''), '@supports (-webkit-text-stroke:1px black){body h1{-webkit-text-stroke:1px black;}}@supports (color:black) and (-webkit-text-stroke:1px black){body h1 em{color:black;}}')
[docs] def test_atmedia(self): self.assertEqual(self.process(r''' @supports(color: black) { p{ @media print, tv{ color: black; } @media screen{ color: #333; } } } '''), '@media print,tv{@supports (color:black){p{color:black;}}}@media screen{@supports (color:black){p{color:#333;}}}')
[docs] def test_join(self): self.assertEqual(self.process(r''' @supports(color: black) { p{ color: black; } } @supports(color: black) { span{ color: #333; } } '''), '@supports (color:black){p{color:black;}span{color:#333;}}')
[docs] def test_join_inside_atmedia(self): self.assertEqual(self.process(r''' @media screen{ @supports(color: black) { p{ color: black; } } @supports(color: black) { span{ color: #333; } } } '''), '@media screen{@supports (color:black){p{color:black;}span{color:#333;}}}')
[docs] def test_atmedia_deeper(self): self.assertEqual(self.process(r''' @media (min-width:800px) { @supports(color: black) { p{ @media print, tv{ color: black; } @media screen{ small{ color: #333; } } } } } '''), '''@media print and (min-width:800px),tv and (min-width:800px){@supports (color:black){p{color:black;}}}@media screen and (min-width:800px){@supports (color:black){p small{color:#333;}}}''')
if __name__ == '__main__': logging.getLogger().setLevel(logging.ERROR) suite = unittest.TestLoader().loadTestsFromTestCase(Tests) unittest.TextTestRunner(verbosity=2).run(suite)