| from __future__ import print_function, division, absolute_import |
| from fontTools.misc.py23 import * |
| from fontTools.misc.py23 import round3 |
| from fontTools.misc.arrayTools import ( |
| calcBounds, calcIntBounds, updateBounds, pointInRect, pointsInRect, |
| vectorLength, asInt16, normRect, scaleRect, offsetRect, insetRect, |
| sectRect, unionRect, rectCenter, intRect) |
| import math |
| |
| |
| def test_calcBounds(): |
| assert calcBounds([]) == (0, 0, 0, 0) |
| assert calcBounds( |
| [(0, 40), (0, 100), (50, 50), (80, 10)]) == (0, 10, 80, 100) |
| |
| |
| def test_calcIntBounds(): |
| assert calcIntBounds( |
| [(0.1, 40.1), (0.1, 100.1), (49.9, 49.9), (78.5, 9.5)] |
| ) == (0, 10, 79, 100) |
| |
| assert calcIntBounds( |
| [(0.1, 40.1), (0.1, 100.1), (49.9, 49.9), (78.5, 9.5)], |
| round=round3 |
| ) == (0, 10, 78, 100) |
| |
| |
| def test_updateBounds(): |
| assert updateBounds((0, 0, 0, 0), (100, 100)) == (0, 0, 100, 100) |
| |
| |
| def test_pointInRect(): |
| assert pointInRect((50, 50), (0, 0, 100, 100)) |
| assert pointInRect((0, 0), (0, 0, 100, 100)) |
| assert pointInRect((100, 100), (0, 0, 100, 100)) |
| assert not pointInRect((101, 100), (0, 0, 100, 100)) |
| |
| |
| def test_pointsInRect(): |
| assert pointsInRect([], (0, 0, 100, 100)) == [] |
| assert pointsInRect( |
| [(50, 50), (0, 0), (100, 100), (101, 100)], |
| (0, 0, 100, 100)) == [True, True, True, False] |
| |
| |
| def test_vectorLength(): |
| assert vectorLength((1, 1)) == math.sqrt(2) |
| |
| |
| def test_asInt16(): |
| assert asInt16([0, 0.1, 0.5, 0.9]) == [0, 0, 1, 1] |
| |
| |
| def test_normRect(): |
| assert normRect((0, 10, 100, 200)) == (0, 10, 100, 200) |
| assert normRect((100, 200, 0, 10)) == (0, 10, 100, 200) |
| |
| |
| def test_scaleRect(): |
| assert scaleRect((10, 20, 50, 150), 1.5, 2) == (15.0, 40, 75.0, 300) |
| |
| |
| def test_offsetRect(): |
| assert offsetRect((10, 20, 30, 40), 5, 6) == (15, 26, 35, 46) |
| |
| |
| def test_insetRect(): |
| assert insetRect((10, 20, 50, 60), 5, 10) == (15, 30, 45, 50) |
| assert insetRect((10, 20, 50, 60), -5, -10) == (5, 10, 55, 70) |
| |
| |
| def test_sectRect(): |
| intersects, rect = sectRect((0, 10, 20, 30), (0, 40, 20, 50)) |
| assert not intersects |
| |
| intersects, rect = sectRect((0, 10, 20, 30), (5, 20, 35, 50)) |
| assert intersects |
| assert rect == (5, 20, 20, 30) |
| |
| |
| def test_unionRect(): |
| assert unionRect((0, 10, 20, 30), (0, 40, 20, 50)) == (0, 10, 20, 50) |
| |
| |
| def test_rectCenter(): |
| assert rectCenter((0, 0, 100, 200)) == (50.0, 100.0) |
| assert rectCenter((0, 0, 100, 199.0)) == (50.0, 99.5) |
| |
| |
| def test_intRect(): |
| assert intRect((0.9, 2.9, 3.1, 4.1)) == (0, 2, 4, 5) |