Files
specklepy/tests/unit/test_unit_scaling.py
T
Dogukan Karatas 7a291ce2f6 migrates tests
2025-01-23 15:51:34 +01:00

53 lines
2.0 KiB
Python

import pytest
from specklepy.objects.models.units import Units, get_scale_factor
@pytest.mark.parametrize(
"fromUnits, toUnits, inValue, expectedOutValue",
[
# To self
(Units.km, Units.km, 1.5, 1.5),
(Units.km, Units.km, 0, 0),
(Units.m, Units.m, 1.5, 1.5),
(Units.m, Units.m, 0, 0),
(Units.cm, Units.cm, 1.5, 1.5),
(Units.cm, Units.cm, 0, 0),
(Units.mm, Units.mm, 1.5, 1.5),
(Units.mm, Units.mm, 0, 0),
(Units.miles, Units.miles, 1.5, 1.5),
(Units.miles, Units.miles, 0, 0),
(Units.yards, Units.yards, 1.5, 1.5),
(Units.yards, Units.yards, 0, 0),
(Units.feet, Units.feet, 1.5, 1.5),
(Units.feet, Units.feet, 0, 0),
# To Meters
(Units.km, Units.m, 987654.321, 987654321),
(Units.m, Units.m, 987654.321, 987654.321),
(Units.mm, Units.m, 98765432.1, 98765.4321),
(Units.cm, Units.m, 9876543.21, 98765.4321),
# To negative meters
(Units.km, Units.m, -987654.321, -987654321),
(Units.m, Units.m, -987654.321, -987654.321),
(Units.mm, Units.m, -98765432.1, -98765.4321),
(Units.cm, Units.m, -9876543.21, -98765.4321),
(Units.m, Units.km, 987654.321, 987.654321),
(Units.m, Units.cm, 987654.321, 98765432.1),
(Units.m, Units.mm, 987654.321, 987654321),
# Imperial
(Units.miles, Units.m, 123.45, 198673.517),
(Units.miles, Units.inches, 123.45, 7821792),
(Units.yards, Units.m, 123.45, 112.88268),
(Units.yards, Units.inches, 123.45, 4444.2),
(Units.feet, Units.m, 123.45, 37.62756),
(Units.feet, Units.inches, 123.45, 1481.4),
(Units.inches, Units.m, 123.45, 3.13563),
],
)
def test_get_scale_factor_between_units(
fromUnits: Units, toUnits: Units, inValue: float, expectedOutValue: float
):
Tolerance = 1e-10
actual = inValue * get_scale_factor(fromUnits, toUnits)
assert actual - expectedOutValue < Tolerance