169 lines
6.4 KiB
Python
169 lines
6.4 KiB
Python
from django.template import TemplateSyntaxError
|
|
from django.test import SimpleTestCase
|
|
|
|
from ..utils import setup
|
|
|
|
|
|
class WidthRatioTagTests(SimpleTestCase):
|
|
libraries = {"custom": "template_tests.templatetags.custom"}
|
|
|
|
@setup({"widthratio01": "{% widthratio a b 0 %}"})
|
|
def test_widthratio01(self):
|
|
output = self.engine.render_to_string("widthratio01", {"a": 50, "b": 100})
|
|
self.assertEqual(output, "0")
|
|
|
|
@setup({"widthratio02": "{% widthratio a b 100 %}"})
|
|
def test_widthratio02(self):
|
|
output = self.engine.render_to_string("widthratio02", {"a": 0, "b": 0})
|
|
self.assertEqual(output, "0")
|
|
|
|
@setup({"widthratio03": "{% widthratio a b 100 %}"})
|
|
def test_widthratio03(self):
|
|
output = self.engine.render_to_string("widthratio03", {"a": 0, "b": 100})
|
|
self.assertEqual(output, "0")
|
|
|
|
@setup({"widthratio04": "{% widthratio a b 100 %}"})
|
|
def test_widthratio04(self):
|
|
output = self.engine.render_to_string("widthratio04", {"a": 50, "b": 100})
|
|
self.assertEqual(output, "50")
|
|
|
|
@setup({"widthratio05": "{% widthratio a b 100 %}"})
|
|
def test_widthratio05(self):
|
|
output = self.engine.render_to_string("widthratio05", {"a": 100, "b": 100})
|
|
self.assertEqual(output, "100")
|
|
|
|
@setup({"widthratio06": "{% widthratio a b 100 %}"})
|
|
def test_widthratio06(self):
|
|
"""
|
|
62.5 should round to 62
|
|
"""
|
|
output = self.engine.render_to_string("widthratio06", {"a": 50, "b": 80})
|
|
self.assertEqual(output, "62")
|
|
|
|
@setup({"widthratio07": "{% widthratio a b 100 %}"})
|
|
def test_widthratio07(self):
|
|
"""
|
|
71.4 should round to 71
|
|
"""
|
|
output = self.engine.render_to_string("widthratio07", {"a": 50, "b": 70})
|
|
self.assertEqual(output, "71")
|
|
|
|
# Raise exception if we don't have 3 args, last one an integer
|
|
@setup({"widthratio08": "{% widthratio %}"})
|
|
def test_widthratio08(self):
|
|
with self.assertRaises(TemplateSyntaxError):
|
|
self.engine.get_template("widthratio08")
|
|
|
|
@setup({"widthratio09": "{% widthratio a b %}"})
|
|
def test_widthratio09(self):
|
|
with self.assertRaises(TemplateSyntaxError):
|
|
self.engine.render_to_string("widthratio09", {"a": 50, "b": 100})
|
|
|
|
@setup({"widthratio10": "{% widthratio a b 100.0 %}"})
|
|
def test_widthratio10(self):
|
|
output = self.engine.render_to_string("widthratio10", {"a": 50, "b": 100})
|
|
self.assertEqual(output, "50")
|
|
|
|
@setup({"widthratio11": "{% widthratio a b c %}"})
|
|
def test_widthratio11(self):
|
|
"""
|
|
#10043: widthratio should allow max_width to be a variable
|
|
"""
|
|
output = self.engine.render_to_string(
|
|
"widthratio11", {"a": 50, "c": 100, "b": 100}
|
|
)
|
|
self.assertEqual(output, "50")
|
|
|
|
# #18739: widthratio should handle None args consistently with
|
|
# non-numerics
|
|
@setup({"widthratio12a": "{% widthratio a b c %}"})
|
|
def test_widthratio12a(self):
|
|
output = self.engine.render_to_string(
|
|
"widthratio12a", {"a": "a", "c": 100, "b": 100}
|
|
)
|
|
self.assertEqual(output, "")
|
|
|
|
@setup({"widthratio12b": "{% widthratio a b c %}"})
|
|
def test_widthratio12b(self):
|
|
output = self.engine.render_to_string(
|
|
"widthratio12b", {"a": None, "c": 100, "b": 100}
|
|
)
|
|
self.assertEqual(output, "")
|
|
|
|
@setup({"widthratio13a": "{% widthratio a b c %}"})
|
|
def test_widthratio13a(self):
|
|
output = self.engine.render_to_string(
|
|
"widthratio13a", {"a": 0, "c": 100, "b": "b"}
|
|
)
|
|
self.assertEqual(output, "")
|
|
|
|
@setup({"widthratio13b": "{% widthratio a b c %}"})
|
|
def test_widthratio13b(self):
|
|
output = self.engine.render_to_string(
|
|
"widthratio13b", {"a": 0, "c": 100, "b": None}
|
|
)
|
|
self.assertEqual(output, "")
|
|
|
|
@setup({"widthratio14a": "{% widthratio a b c %}"})
|
|
def test_widthratio14a(self):
|
|
with self.assertRaises(TemplateSyntaxError):
|
|
self.engine.render_to_string("widthratio14a", {"a": 0, "c": "c", "b": 100})
|
|
|
|
@setup({"widthratio14b": "{% widthratio a b c %}"})
|
|
def test_widthratio14b(self):
|
|
with self.assertRaises(TemplateSyntaxError):
|
|
self.engine.render_to_string("widthratio14b", {"a": 0, "c": None, "b": 100})
|
|
|
|
@setup({"widthratio15": '{% load custom %}{% widthratio a|noop:"x y" b 0 %}'})
|
|
def test_widthratio15(self):
|
|
"""
|
|
Test whitespace in filter argument
|
|
"""
|
|
output = self.engine.render_to_string("widthratio15", {"a": 50, "b": 100})
|
|
self.assertEqual(output, "0")
|
|
|
|
# Widthratio with variable assignment
|
|
@setup({"widthratio16": "{% widthratio a b 100 as variable %}-{{ variable }}-"})
|
|
def test_widthratio16(self):
|
|
output = self.engine.render_to_string("widthratio16", {"a": 50, "b": 100})
|
|
self.assertEqual(output, "-50-")
|
|
|
|
@setup({"widthratio17": "{% widthratio a b 100 as variable %}-{{ variable }}-"})
|
|
def test_widthratio17(self):
|
|
output = self.engine.render_to_string("widthratio17", {"a": 100, "b": 100})
|
|
self.assertEqual(output, "-100-")
|
|
|
|
@setup({"widthratio18": "{% widthratio a b 100 as %}"})
|
|
def test_widthratio18(self):
|
|
with self.assertRaises(TemplateSyntaxError):
|
|
self.engine.get_template("widthratio18")
|
|
|
|
@setup({"widthratio19": "{% widthratio a b 100 not_as variable %}"})
|
|
def test_widthratio19(self):
|
|
with self.assertRaises(TemplateSyntaxError):
|
|
self.engine.get_template("widthratio19")
|
|
|
|
@setup({"widthratio20": "{% widthratio a b 100 %}"})
|
|
def test_widthratio20(self):
|
|
output = self.engine.render_to_string(
|
|
"widthratio20", {"a": float("inf"), "b": float("inf")}
|
|
)
|
|
self.assertEqual(output, "")
|
|
|
|
@setup({"widthratio21": "{% widthratio a b 100 %}"})
|
|
def test_widthratio21(self):
|
|
output = self.engine.render_to_string(
|
|
"widthratio21", {"a": float("inf"), "b": 2}
|
|
)
|
|
self.assertEqual(output, "")
|
|
|
|
@setup({"t": "{% widthratio a b 100 as variable %}-{{ variable }}-"})
|
|
def test_zerodivisionerror_as_var(self):
|
|
output = self.engine.render_to_string("t", {"a": 0, "b": 0})
|
|
self.assertEqual(output, "-0-")
|
|
|
|
@setup({"t": "{% widthratio a b c as variable %}-{{ variable }}-"})
|
|
def test_typeerror_as_var(self):
|
|
output = self.engine.render_to_string("t", {"a": "a", "c": 100, "b": 100})
|
|
self.assertEqual(output, "--")
|