def test_self_close(self): html = Config({'options': {'output.selfClosingStyle': 'html'}}) xhtml = Config({'options': {'output.selfClosingStyle': 'xhtml'}}) xml = Config({'options': {'output.selfClosingStyle': 'xml'}}) self.assertEqual(self_close(html), '') self.assertEqual(self_close(xhtml), ' /') self.assertEqual(self_close(xml), '/')
def test_attribute_name(self): as_is = Config({'options': {'output.attributeCase': ''}}) upper = Config({'options': {'output.attributeCase': 'upper'}}) lower = Config({'options': {'output.attributeCase': 'lower'}}) self.assertEqual(attr_name('Foo', as_is), 'Foo') self.assertEqual(attr_name('bAr', as_is), 'bAr') self.assertEqual(attr_name('Foo', upper), 'FOO') self.assertEqual(attr_name('bAr', upper), 'BAR') self.assertEqual(attr_name('Foo', lower), 'foo') self.assertEqual(attr_name('bAr', lower), 'bar')
def test_profile_tag_name(self): as_is = Config({'options': {'output.tagCase': ''}}) upper = Config({'options': {'output.tagCase': 'upper'}}) lower = Config({'options': {'output.tagCase': 'lower'}}) self.assertEqual(tag_name('Foo', as_is), 'Foo') self.assertEqual(tag_name('bAr', as_is), 'bAr') self.assertEqual(tag_name('Foo', upper), 'FOO') self.assertEqual(tag_name('bAr', upper), 'BAR') self.assertEqual(tag_name('Foo', lower), 'foo') self.assertEqual(tag_name('bAr', lower), 'bar')
def test_stream(self): conf = Config({'options': {'output.baseIndent': '>>'}}) out = OutputStream(conf.options) out.push('aaa') self.assertEqual(out.value, 'aaa') self.assertEqual(out.line, 0) self.assertEqual(out.column, 3) self.assertEqual(out.offset, 3) out.push_string('bbb') self.assertEqual(out.value, 'aaabbb') self.assertEqual(out.line, 0) self.assertEqual(out.column, 6) self.assertEqual(out.offset, 6) # Add text with newlines out.push_string('ccc\nddd') self.assertEqual(out.value, 'aaabbbccc\n>>ddd') self.assertEqual(out.line, 1) self.assertEqual(out.column, 5) self.assertEqual(out.offset, 15) # Add newline with indent out.level += 1 out.push_newline(True) self.assertEqual(out.value, 'aaabbbccc\n>>ddd\n>>\t') self.assertEqual(out.line, 2) self.assertEqual(out.column, 3) self.assertEqual(out.offset, 19)
def test_comment(self): opt = Config({ 'options': { 'comment.enabled': True } }) self.assertEqual(output_html('ul>li.item', opt), '<ul>\n\t<li class="item"></li>\n\t<!-- /.item -->\n</ul>') self.assertEqual(output_html('div>ul>li.item#foo', opt), '<div>\n\t<ul>\n\t\t<li class="item" id="foo"></li>\n\t\t<!-- /#foo.item -->\n\t</ul>\n</div>') opt.options['comment.after'] = ' { [%ID] }' self.assertEqual(output_html('div>ul>li.item#foo', opt), '<div>\n\t<ul>\n\t\t<li class="item" id="foo"></li> { %foo }\n\t</ul>\n</div>')
def test_xsl(self): config = Config({'syntax': 'xsl'}) self.assertEqual(expand('xsl:variable[select]', config), '<xsl:variable select=""></xsl:variable>') self.assertEqual(expand('xsl:with-param[select]', config), '<xsl:with-param select=""></xsl:with-param>') self.assertEqual(expand('xsl:variable[select]>div', config), '<xsl:variable><div></div></xsl:variable>') self.assertEqual(expand('xsl:with-param[select]{foo}', config), '<xsl:with-param>foo</xsl:with-param>')
def test_customize_modifier(self): conf = Config({ 'options': { 'bem.enabled': True, 'bem.element': '-', 'bem.modifier': '__' } }) self.assertEqual(expand('div.b_m', conf), '<div class="b b__m"></div>') self.assertEqual(expand('div.b._m', conf), '<div class="b b__m"></div>')
def test_parent_context(self): conf = Config({ 'context': { 'name': 'div', 'attributes': { 'class': 'bl' } }, 'options': { 'bem.enabled': True } }) self.assertEqual(expand('.-e_m', conf), '<div class="bl__e bl__e_m"></div>')
import unittest import sys sys.path.append('../') from emmet.config import Config from emmet.markup import parse from .stringify import stringify_node default_config = Config() bem = Config({'options': {'bem.enabled': True}, 'cache': {}}) def expand(abbr: str, config=default_config): return stringify_node(parse(abbr, config)) class TestMarkupAbbreviation(unittest.TestCase): def test_implicit_tags(self): self.assertEqual(expand('.'), '<div class=""></div>') self.assertEqual(expand('.foo>.bar'), '<div class="foo"><div class="bar"></div></div>') self.assertEqual(expand('p.foo>.bar'), '<p class="foo"><span class="bar"></span></p>') self.assertEqual( expand('ul>.item*2'), '<ul><li*2@0 class="item"></li><li*2@1 class="item"></li></ul>') self.assertEqual( expand('table>.row>.cell'), '<table><tr class="row"><td class="cell"></td></tr></table>') self.assertEqual(expand('{test}'), 'test')
def create_profile(options: dict): return Config({'options': options})
import unittest import sys sys.path.append('../') from emmet.markup import parse, html, haml, pug, slim from emmet.config import Config def tabstops(index: int, placeholder: str, **kwargs): if placeholder: return '${%d:%s}' % (index, placeholder) return '${%d}' % index default_config = Config() field = Config({ 'options': { 'output.field': tabstops } }) def create_profile(options: dict): return Config({'options': options}) def output_html(abbr: str, config=default_config): return html(parse(abbr, config), config) class TestHTMLFormat(unittest.TestCase):
def test_inline_elements(self): config = Config() self.assertEqual(is_inline('a', config), True) self.assertEqual(is_inline('b', config), True) self.assertEqual(is_inline('c', config), False)