1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 21:06:19 +00:00

Add new weight device class (#79185)

This commit is contained in:
epenet
2022-09-28 12:13:49 +02:00
committed by GitHub
parent c96c5bed7d
commit 5389ff3253
12 changed files with 165 additions and 4 deletions

View File

@@ -13,6 +13,12 @@ from homeassistant.const import (
LENGTH_MILES,
LENGTH_MILLIMETERS,
LENGTH_YARD,
MASS_GRAMS,
MASS_KILOGRAMS,
MASS_MICROGRAMS,
MASS_MILLIGRAMS,
MASS_OUNCES,
MASS_POUNDS,
POWER_KILO_WATT,
POWER_WATT,
PRESSURE_CBAR,
@@ -46,6 +52,7 @@ from homeassistant.util.unit_conversion import (
BaseUnitConverter,
DistanceConverter,
EnergyConverter,
MassConverter,
PowerConverter,
PressureConverter,
SpeedConverter,
@@ -70,6 +77,12 @@ INVALID_SYMBOL = "bob"
(EnergyConverter, ENERGY_WATT_HOUR),
(EnergyConverter, ENERGY_KILO_WATT_HOUR),
(EnergyConverter, ENERGY_MEGA_WATT_HOUR),
(MassConverter, MASS_GRAMS),
(MassConverter, MASS_KILOGRAMS),
(MassConverter, MASS_MICROGRAMS),
(MassConverter, MASS_MILLIGRAMS),
(MassConverter, MASS_OUNCES),
(MassConverter, MASS_POUNDS),
(PowerConverter, POWER_WATT),
(PowerConverter, POWER_KILO_WATT),
(PressureConverter, PRESSURE_PA),
@@ -107,6 +120,7 @@ def test_convert_same_unit(converter: type[BaseUnitConverter], valid_unit: str)
[
(DistanceConverter, LENGTH_KILOMETERS),
(EnergyConverter, ENERGY_KILO_WATT_HOUR),
(MassConverter, MASS_GRAMS),
(PowerConverter, POWER_WATT),
(PressureConverter, PRESSURE_PA),
(SpeedConverter, SPEED_KILOMETERS_PER_HOUR),
@@ -132,6 +146,7 @@ def test_convert_invalid_unit(
[
(DistanceConverter, LENGTH_KILOMETERS, LENGTH_METERS),
(EnergyConverter, ENERGY_WATT_HOUR, ENERGY_KILO_WATT_HOUR),
(MassConverter, MASS_GRAMS, MASS_KILOGRAMS),
(PowerConverter, POWER_WATT, POWER_KILO_WATT),
(PressureConverter, PRESSURE_HPA, PRESSURE_INHG),
(SpeedConverter, SPEED_KILOMETERS_PER_HOUR, SPEED_MILES_PER_HOUR),
@@ -239,6 +254,51 @@ def test_energy_convert(
assert EnergyConverter.convert(value, from_unit, to_unit) == expected
@pytest.mark.parametrize(
"value,from_unit,expected,to_unit",
[
(10, MASS_KILOGRAMS, 10000, MASS_GRAMS),
(10, MASS_KILOGRAMS, 10000000, MASS_MILLIGRAMS),
(10, MASS_KILOGRAMS, 10000000000, MASS_MICROGRAMS),
(10, MASS_KILOGRAMS, pytest.approx(352.73961), MASS_OUNCES),
(10, MASS_KILOGRAMS, pytest.approx(22.046226), MASS_POUNDS),
(10, MASS_GRAMS, 0.01, MASS_KILOGRAMS),
(10, MASS_GRAMS, 10000, MASS_MILLIGRAMS),
(10, MASS_GRAMS, 10000000, MASS_MICROGRAMS),
(10, MASS_GRAMS, pytest.approx(0.35273961), MASS_OUNCES),
(10, MASS_GRAMS, pytest.approx(0.022046226), MASS_POUNDS),
(10, MASS_MILLIGRAMS, 0.00001, MASS_KILOGRAMS),
(10, MASS_MILLIGRAMS, 0.01, MASS_GRAMS),
(10, MASS_MILLIGRAMS, 10000, MASS_MICROGRAMS),
(10, MASS_MILLIGRAMS, pytest.approx(0.00035273961), MASS_OUNCES),
(10, MASS_MILLIGRAMS, pytest.approx(0.000022046226), MASS_POUNDS),
(10000, MASS_MICROGRAMS, 0.00001, MASS_KILOGRAMS),
(10000, MASS_MICROGRAMS, 0.01, MASS_GRAMS),
(10000, MASS_MICROGRAMS, 10, MASS_MILLIGRAMS),
(10000, MASS_MICROGRAMS, pytest.approx(0.00035273961), MASS_OUNCES),
(10000, MASS_MICROGRAMS, pytest.approx(0.000022046226), MASS_POUNDS),
(1, MASS_POUNDS, 0.45359237, MASS_KILOGRAMS),
(1, MASS_POUNDS, 453.59237, MASS_GRAMS),
(1, MASS_POUNDS, 453592.37, MASS_MILLIGRAMS),
(1, MASS_POUNDS, 453592370, MASS_MICROGRAMS),
(1, MASS_POUNDS, 16, MASS_OUNCES),
(16, MASS_OUNCES, 0.45359237, MASS_KILOGRAMS),
(16, MASS_OUNCES, 453.59237, MASS_GRAMS),
(16, MASS_OUNCES, 453592.37, MASS_MILLIGRAMS),
(16, MASS_OUNCES, 453592370, MASS_MICROGRAMS),
(16, MASS_OUNCES, 1, MASS_POUNDS),
],
)
def test_mass_convert(
value: float,
from_unit: str,
expected: float,
to_unit: str,
) -> None:
"""Test conversion to other units."""
assert MassConverter.convert(value, from_unit, to_unit) == expected
@pytest.mark.parametrize(
"value,from_unit,expected,to_unit",
[