1
1
mirror of https://github.com/Kozea/WeasyPrint.git synced 2024-10-05 08:27:22 +03:00
WeasyPrint/weasyprint/tests/test_variables.py
Guillaume Ayoub b40ad461be Remove repeated copyright assignments in files
Everything is replaced by a more explicit message in the COPYRIGHT file.

Inspired by rust-lang/rust#43498 and rust-lang/rust#57108.
2020-01-02 14:10:09 +01:00

111 lines
2.2 KiB
Python

"""
weasyprint.tests.test_variables
-------------------------------
Test CSS custom proproperties, also known as CSS variables.
"""
import pytest
from ..css.properties import KNOWN_PROPERTIES
from .test_boxes import render_pages as parse
def test_variable_simple():
page, = parse('''
<style>
p { --var: 10px; width: var(--var) }
</style>
<p></p>
''')
html, = page.children
body, = html.children
paragraph, = body.children
assert paragraph.width == 10
def test_variable_inherit():
page, = parse('''
<style>
html { --var: 10px }
p { width: var(--var) }
</style>
<p></p>
''')
html, = page.children
body, = html.children
paragraph, = body.children
assert paragraph.width == 10
def test_variable_inherit_override():
page, = parse('''
<style>
html { --var: 20px }
p { width: var(--var); --var: 10px }
</style>
<p></p>
''')
html, = page.children
body, = html.children
paragraph, = body.children
assert paragraph.width == 10
def test_variable_case_sensitive():
page, = parse('''
<style>
html { --var: 20px }
body { --VAR: 10px }
p { width: var(--VAR) }
</style>
<p></p>
''')
html, = page.children
body, = html.children
paragraph, = body.children
assert paragraph.width == 10
def test_variable_chain():
page, = parse('''
<style>
html { --foo: 10px }
body { --var: var(--foo) }
p { width: var(--var) }
</style>
<p></p>
''')
html, = page.children
body, = html.children
paragraph, = body.children
assert paragraph.width == 10
def test_variable_initial():
page, = parse('''
<style>
html { --var: initial }
p { width: var(--var, 10px) }
</style>
<p></p>
''')
html, = page.children
body, = html.children
paragraph, = body.children
assert paragraph.width == 10
@pytest.mark.parametrize('prop', sorted(KNOWN_PROPERTIES))
def test_variable_fallback(prop):
parse('''
<style>
div {
--var: improperValue;
%s: var(--var);
}
</style>
<div></div>
''' % prop)