| import math |
| import pytest |
| from fontTools.misc.arrayTools import Vector as ArrayVector |
| from fontTools.misc.vector import Vector |
| |
| |
| def test_Vector(): |
| v = Vector((100, 200)) |
| assert repr(v) == "Vector((100, 200))" |
| assert v == Vector((100, 200)) |
| assert v == Vector([100, 200]) |
| assert v == (100, 200) |
| assert (100, 200) == v |
| assert v == [100, 200] |
| assert [100, 200] == v |
| assert v is Vector(v) |
| assert v + 10 == (110, 210) |
| assert 10 + v == (110, 210) |
| assert v + Vector((1, 2)) == (101, 202) |
| assert v - Vector((1, 2)) == (99, 198) |
| assert v * 2 == (200, 400) |
| assert 2 * v == (200, 400) |
| assert v * 0.5 == (50, 100) |
| assert v / 2 == (50, 100) |
| assert 2 / v == (0.02, 0.01) |
| v = Vector((3, 4)) |
| assert abs(v) == 5 # length |
| assert v.length() == 5 |
| assert v.normalized() == Vector((0.6, 0.8)) |
| assert abs(Vector((1, 1, 1))) == math.sqrt(3) |
| assert bool(Vector((0, 0, 1))) |
| assert not bool(Vector((0, 0, 0))) |
| v1 = Vector((2, 3)) |
| v2 = Vector((3, 4)) |
| assert v1.dot(v2) == 18 |
| v = Vector((2, 4)) |
| assert round(v / 3) == (1, 1) |
| with pytest.raises( |
| AttributeError, |
| match="'Vector' object has no attribute 'newAttr'", |
| ): |
| v.newAttr = 12 |
| |
| |
| def test_deprecated(): |
| with pytest.warns( |
| DeprecationWarning, |
| match="fontTools.misc.arrayTools.Vector has been deprecated", |
| ): |
| ArrayVector((1, 2)) |
| with pytest.warns( |
| DeprecationWarning, |
| match="the 'keep' argument has been deprecated", |
| ): |
| Vector((1, 2), keep=True) |
| v = Vector((1, 2)) |
| with pytest.warns( |
| DeprecationWarning, |
| match="the 'toInt' method has been deprecated", |
| ): |
| v.toInt() |
| with pytest.warns( |
| DeprecationWarning, |
| match="the 'values' attribute has been deprecated", |
| ): |
| v.values |
| with pytest.raises( |
| AttributeError, |
| match="the 'values' attribute has been deprecated", |
| ): |
| v.values = [12, 23] |