File indexing completed on 2025-06-01 04:02:27
0001 from .. import base 0002 from lottie import objects 0003 0004 0005 class TestBoundingBox(base.TestCase): 0006 def test_null_ctor(self): 0007 bb = objects.BoundingBox() 0008 self.assertTrue(bb.isnull()) 0009 0010 def test_nonnull_ctor(self): 0011 bb = objects.BoundingBox(0, 0, 10, 10) 0012 self.assertFalse(bb.isnull()) 0013 0014 def test_null_include(self): 0015 bb = objects.BoundingBox() 0016 bb.include(10, 20) 0017 self.assertEqual(bb.x1, 10) 0018 self.assertEqual(bb.y1, 20) 0019 self.assertEqual(bb.x2, 10) 0020 self.assertEqual(bb.y2, 20) 0021 0022 def test_nonnull_include_null(self): 0023 bb = objects.BoundingBox(0, 0, 30, 30) 0024 bb.include(None, None) 0025 self.assertEqual(bb.x1, 0) 0026 self.assertEqual(bb.y1, 0) 0027 self.assertEqual(bb.x2, 30) 0028 self.assertEqual(bb.y2, 30) 0029 0030 def test_nonnull_include_inside(self): 0031 bb = objects.BoundingBox(0, 0, 30, 30) 0032 bb.include(10, 20) 0033 self.assertEqual(bb.x1, 0) 0034 self.assertEqual(bb.y1, 0) 0035 self.assertEqual(bb.x2, 30) 0036 self.assertEqual(bb.y2, 30) 0037 0038 def test_nonnull_include_outside(self): 0039 bb = objects.BoundingBox(0, 0, 30, 30) 0040 bb.include(50, 40) 0041 self.assertEqual(bb.x1, 0) 0042 self.assertEqual(bb.y1, 0) 0043 self.assertEqual(bb.x2, 50) 0044 self.assertEqual(bb.y2, 40) 0045 0046 def test_center(self): 0047 bb = objects.BoundingBox(0, 0, 30, 40) 0048 c = bb.center() 0049 self.assertEqual(c[0], 15) 0050 self.assertEqual(c[1], 20) 0051 0052 def test_repr(self): 0053 x = repr(objects.BoundingBox(11, 22, 30, 40)) 0054 self.assertIn("11", x) 0055 self.assertIn("22", x) 0056 self.assertIn("30", x) 0057 self.assertIn("40", x) 0058 0059 def test_null_expand_nonnull(self): 0060 a = objects.BoundingBox() 0061 b = objects.BoundingBox(1, 2, 3, 4) 0062 a.expand(b) 0063 self.assertEqual(a.x1, 1) 0064 self.assertEqual(a.y1, 2) 0065 self.assertEqual(a.x2, 3) 0066 self.assertEqual(a.y2, 4) 0067 0068 def test_null_expand_null(self): 0069 a = objects.BoundingBox() 0070 b = objects.BoundingBox() 0071 a.expand(b) 0072 self.assertEqual(a.x1, None) 0073 self.assertEqual(a.y1, None) 0074 self.assertEqual(a.x2, None) 0075 self.assertEqual(a.y2, None) 0076 0077 def test_nonnull_expand_inside(self): 0078 a = objects.BoundingBox(0, 0, 4, 5) 0079 b = objects.BoundingBox(1, 2, 3, 4) 0080 a.expand(b) 0081 self.assertEqual(a.x1, 0) 0082 self.assertEqual(a.y1, 0) 0083 self.assertEqual(a.x2, 4) 0084 self.assertEqual(a.y2, 5) 0085 0086 def test_nonnull_expand_outside(self): 0087 a = objects.BoundingBox(1, 2, 3, 4) 0088 b = objects.BoundingBox(0, 0, 4, 5) 0089 a.expand(b) 0090 self.assertEqual(a.x1, 0) 0091 self.assertEqual(a.y1, 0) 0092 self.assertEqual(a.x2, 4) 0093 self.assertEqual(a.y2, 5) 0094 0095 0096 class TestRect(base.TestCase): 0097 def test_empty(self): 0098 sh = objects.Rect() 0099 self.assertDictEqual( 0100 sh.to_dict(), 0101 { 0102 "ty": "rc", 0103 "d": 0, 0104 "p": {"a": 0, "k": [0, 0]}, 0105 "s": {"a": 0, "k": [0, 0]}, 0106 "r": {"a": 0, "k": 0}, 0107 } 0108 ) 0109 0110 def test_sized(self): 0111 sh = objects.Rect() 0112 sh.size.value = [10, 20] 0113 sh.position.value = [30, 40] 0114 sh.name = "foo" 0115 self.assertDictEqual( 0116 sh.to_dict(), 0117 { 0118 "ty": "rc", 0119 "d": 0, 0120 "p": {"a": 0, "k": [30, 40]}, 0121 "s": {"a": 0, "k": [10, 20]}, 0122 "r": {"a": 0, "k": 0}, 0123 "nm": "foo", 0124 } 0125 ) 0126 0127 def test_boundingbox(self): 0128 sh = objects.Rect() 0129 sh.position.value = [30, 40] 0130 sh.size.value = [10, 20] 0131 0132 bb = sh.bounding_box() 0133 c = bb.center() 0134 self.assertEqual(bb.x1, 30-5) 0135 self.assertEqual(bb.y1, 40-10) 0136 self.assertEqual(bb.x2, 30+5) 0137 self.assertEqual(bb.y2, 40+10) 0138 self.assertEqual(c[0], 30) 0139 self.assertEqual(c[1], 40) 0140 0141 0142 class TestStar(base.TestCase): 0143 def test_empty(self): 0144 sh = objects.Star() 0145 self.assertDictEqual( 0146 sh.to_dict(), 0147 { 0148 "ty": "sr", 0149 "d": 0, 0150 "p": {"a": 0, "k": [0, 0]}, 0151 "ir": {"a": 0, "k": 0}, 0152 "is": {"a": 0, "k": 0}, 0153 "or": {"a": 0, "k": 0}, 0154 "os": {"a": 0, "k": 0}, 0155 "r": {"a": 0, "k": 0}, 0156 "pt": {"a": 0, "k": 5}, 0157 "sy": 1, 0158 } 0159 ) 0160 0161 def test_sized(self): 0162 sh = objects.Star() 0163 sh.outer_radius.value = 20 0164 sh.position.value = [30, 40] 0165 sh.name = "foo" 0166 sh.star_type = objects.StarType.Polygon 0167 sh.points.value = 6 0168 self.assertDictEqual( 0169 sh.to_dict(), 0170 { 0171 "ty": "sr", 0172 "d": 0, 0173 "p": {"a": 0, "k": [30, 40]}, 0174 "ir": {"a": 0, "k": 0}, 0175 "is": {"a": 0, "k": 0}, 0176 "or": {"a": 0, "k": 20}, 0177 "os": {"a": 0, "k": 0}, 0178 "r": {"a": 0, "k": 0}, 0179 "pt": {"a": 0, "k": 6}, 0180 "sy": 2, 0181 "nm": "foo", 0182 } 0183 ) 0184 0185 def test_boundingbox(self): 0186 sh = objects.Star() 0187 sh.outer_radius.value = 20 0188 sh.position.value = [30, 40] 0189 0190 bb = sh.bounding_box() 0191 c = bb.center() 0192 self.assertEqual(bb.x1, 30-20) 0193 self.assertEqual(bb.y1, 40-20) 0194 self.assertEqual(bb.x2, 30+20) 0195 self.assertEqual(bb.y2, 40+20) 0196 self.assertEqual(c[0], 30) 0197 self.assertEqual(c[1], 40) 0198 0199 0200 class TestEllipse(base.TestCase): 0201 def test_empty(self): 0202 sh = objects.Ellipse() 0203 self.assertDictEqual( 0204 sh.to_dict(), 0205 { 0206 "ty": "el", 0207 "d": 0, 0208 "p": {"a": 0, "k": [0, 0]}, 0209 "s": {"a": 0, "k": [0, 0]}, 0210 } 0211 ) 0212 0213 def test_sized(self): 0214 sh = objects.Ellipse() 0215 sh.size.value = [10, 20] 0216 sh.position.value = [30, 40] 0217 sh.name = "foo" 0218 self.assertDictEqual( 0219 sh.to_dict(), 0220 { 0221 "ty": "el", 0222 "d": 0, 0223 "p": {"a": 0, "k": [30, 40]}, 0224 "s": {"a": 0, "k": [10, 20]}, 0225 "nm": "foo", 0226 } 0227 ) 0228 0229 def test_boundingbox(self): 0230 sh = objects.Ellipse() 0231 sh.position.value = [30, 40] 0232 sh.size.value = [10, 20] 0233 0234 bb = sh.bounding_box() 0235 c = bb.center() 0236 self.assertEqual(bb.x1, 30-5) 0237 self.assertEqual(bb.y1, 40-10) 0238 self.assertEqual(bb.x2, 30+5) 0239 self.assertEqual(bb.y2, 40+10) 0240 self.assertEqual(c[0], 30) 0241 self.assertEqual(c[1], 40) 0242