blob: 236a3bad17e4678c1340da1c1edc46b83598c833 [file] [log] [blame]
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]