mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			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, "--")
 |