Update tests based on new simpler unit settings code

This commit is contained in:
Dion Moult
2026-01-27 19:12:43 +11:00
parent e41df68124
commit 6ad9949571
3 changed files with 51 additions and 64 deletions
+2 -2
View File
@@ -627,8 +627,8 @@ class BIMProperties(PropertyGroup):
items=[ items=[
("NONE", "None", ""), ("NONE", "None", ""),
("GRAM", "Gram", "Grams"), ("GRAM", "Gram", "Grams"),
("KILO/KILOGRAM", "Kilogram", "Kilograms"), ("KILO/GRAM", "Kilogram", "Kilograms"),
("MEGA/TONNE", "Tonne", "Metric Tons"), ("MEGA/GRAM", "Tonne", "Metric Tons"),
("pound", "Pound", "Pounds"), ("pound", "Pound", "Pounds"),
("ounce", "Ounce", "Ounces"), ("ounce", "Ounce", "Ounces"),
], ],
+11 -4
View File
@@ -336,11 +336,18 @@ class Unit(bonsai.core.tool.Unit):
def get_scene_unit_name(cls, unit_type: UNIT_TYPE) -> str | None: def get_scene_unit_name(cls, unit_type: UNIT_TYPE) -> str | None:
if unit_type == "LENGTHUNIT": if unit_type == "LENGTHUNIT":
name = bpy.context.scene.unit_settings.length_unit name = bpy.context.scene.unit_settings.length_unit
name = {"MILES": "mile", "FEET": "foot", "INCHES": "inch", "THOU": "thou", "ADAPTIVE": "METERS"}.get( if name == "ADAPTIVE":
name, name if bpy.context.scene.unit_settings.system == "IMPERIAL":
name = "foot"
else:
name = "METRE"
name = (
{"MILES": "mile", "FEET": "foot", "INCHES": "inch", "THOU": "thou", "ADAPTIVE": "METERS"}
.get(name, name)
.replace("METERS", "METRE")
) )
if len(name) > len("METERS") and name.endswith("METERS"): if len(name) > len("METRE") and name.endswith("METRE"):
return f"{name[:-6]}/METRE" return f"{name[:-5]}/METRE"
return name return name
bim_props = tool.Blender.get_bim_props() bim_props = tool.Blender.get_bim_props()
if (name := getattr(bim_props, f"{unit_type[:-4].lower()}_unit")) != "NONE": if (name := getattr(bim_props, f"{unit_type[:-4].lower()}_unit")) != "NONE":
+38 -58
View File
@@ -131,25 +131,43 @@ class TestGetSceneUnitName(NewFile):
assert subject.get_scene_unit_name("AREAUNIT") == "square foot" assert subject.get_scene_unit_name("AREAUNIT") == "square foot"
assert subject.get_scene_unit_name("VOLUMEUNIT") == "cubic inch" assert subject.get_scene_unit_name("VOLUMEUNIT") == "cubic inch"
def test_getting_an_si_name(self):
props = tool.Blender.get_bim_props()
bpy.context.scene.unit_settings.system = "METRIC"
bpy.context.scene.unit_settings.length_unit = "METERS"
props.area_unit = "SQUARE_METRE"
props.volume_unit = "CUBIC_METRE"
assert subject.get_scene_unit_name("LENGTHUNIT") == "METRE"
assert subject.get_scene_unit_name("AREAUNIT") == "SQUARE_METRE"
assert subject.get_scene_unit_name("VOLUMEUNIT") == "CUBIC_METRE"
bpy.context.scene.unit_settings.length_unit = "MILLIMETERS"
assert subject.get_scene_unit_name("LENGTHUNIT") == "MILLI/METRE"
bpy.context.scene.unit_settings.length_unit = "ADAPTIVE"
assert subject.get_scene_unit_name("LENGTHUNIT") == "METRE"
def test_getting_a_name_with_no_unit_system(self): def test_getting_a_name_with_no_unit_system(self):
assert bpy.context.scene assert bpy.context.scene
bpy.context.scene.unit_settings.system = "NONE" bpy.context.scene.unit_settings.system = "NONE"
assert subject.get_scene_unit_name("LENGTHUNIT") == "foot" assert subject.get_scene_unit_name("LENGTHUNIT") == "METRE"
bpy.context.scene.unit_settings.length_unit = "ADAPTIVE"
assert subject.get_scene_unit_name("LENGTHUNIT") == "METRE"
assert subject.get_scene_unit_name("AREAUNIT") == "SQUARE_METRE"
assert subject.get_scene_unit_name("VOLUMEUNIT") == "CUBIC_METRE"
def test_getting_mass_unit_names(self): def test_getting_mass_unit_names(self):
"""Test getting mass unit names for different systems""" """Test getting mass unit names for different systems"""
assert bpy.context.scene assert bpy.context.scene
props = tool.Blender.get_bim_props() props = tool.Blender.get_bim_props()
props.mass_unit = "GRAM" props.mass_unit = "GRAM"
assert subject.get_scene_unit_name("MASSUNIT") == "gram" assert subject.get_scene_unit_name("MASSUNIT") == "GRAM"
props.mass_unit = "KILOGRAM" props.mass_unit = "KILO/GRAM"
assert subject.get_scene_unit_name("MASSUNIT") == "kilogram" assert subject.get_scene_unit_name("MASSUNIT") == "KILO/GRAM"
props.mass_unit = "POUND" props.mass_unit = "MEGA/GRAM"
assert subject.get_scene_unit_name("MASSUNIT") == "MEGA/GRAM"
props.mass_unit = "pound"
assert subject.get_scene_unit_name("MASSUNIT") == "pound" assert subject.get_scene_unit_name("MASSUNIT") == "pound"
props.mass_unit = "OUNCE" props.mass_unit = "ounce"
assert subject.get_scene_unit_name("MASSUNIT") == "ounce" assert subject.get_scene_unit_name("MASSUNIT") == "ounce"
props.mass_unit = "TONNE"
assert subject.get_scene_unit_name("MASSUNIT") == "tonne"
def test_getting_time_unit_names(self): def test_getting_time_unit_names(self):
"""Test getting time unit names for different systems""" """Test getting time unit names for different systems"""
@@ -157,64 +175,26 @@ class TestGetSceneUnitName(NewFile):
props = tool.Blender.get_bim_props() props = tool.Blender.get_bim_props()
props.time_unit = "SECOND" props.time_unit = "SECOND"
assert subject.get_scene_unit_name("TIMEUNIT") == "second" assert subject.get_scene_unit_name("TIMEUNIT") == "SECOND"
props.time_unit = "MINUTE" props.time_unit = "minute"
assert subject.get_scene_unit_name("TIMEUNIT") == "minute" assert subject.get_scene_unit_name("TIMEUNIT") == "minute"
props.time_unit = "HOUR" props.time_unit = "NONE"
assert subject.get_scene_unit_name("TIMEUNIT") == "hour" assert not subject.get_scene_unit_name("TIMEUNIT")
props.time_unit = "DAY"
assert subject.get_scene_unit_name("TIMEUNIT") == "day"
class TestGetSceneUnitSIPrefix: class TestGetSceneUnitSIPrefix:
def test_run(self): def test_run(self):
assert bpy.context.scene assert bpy.context.scene
bpy.context.scene.unit_settings.system = "METRIC" assert subject.get_scene_unit_si_prefix("METRE") is None
bpy.context.scene.unit_settings.length_unit = "METERS" assert subject.get_scene_unit_si_prefix("MICRO/METRE") == "MICRO"
assert subject.get_scene_unit_si_prefix("LENGTHUNIT") is None assert subject.get_scene_unit_si_prefix("SQUARE_METRE") is None
bpy.context.scene.unit_settings.length_unit = "MICROMETERS" assert subject.get_scene_unit_si_prefix("MILLI/SQUARE_METRE") == "MILLI"
assert subject.get_scene_unit_si_prefix("LENGTHUNIT") == "MICRO" assert subject.get_scene_unit_si_prefix("foot") is None
bpy.context.scene.unit_settings.length_unit = "MILLIMETERS"
assert subject.get_scene_unit_si_prefix("LENGTHUNIT") == "MILLI"
bpy.context.scene.unit_settings.length_unit = "CENTIMETERS"
assert subject.get_scene_unit_si_prefix("LENGTHUNIT") == "CENTI"
bpy.context.scene.unit_settings.length_unit = "KILOMETERS"
assert subject.get_scene_unit_si_prefix("LENGTHUNIT") == "KILO"
bpy.context.scene.unit_settings.length_unit = "ADAPTIVE"
assert subject.get_scene_unit_si_prefix("LENGTHUNIT") is None
props = tool.Blender.get_bim_props()
props.area_unit = "SQUARE_METRE"
assert subject.get_scene_unit_si_prefix("AREAUNIT") is None
props.area_unit = "MILLI/SQUARE_METRE"
assert subject.get_scene_unit_si_prefix("AREAUNIT") == "MILLI"
props.volume_unit = "CUBIC_METRE"
assert subject.get_scene_unit_si_prefix("VOLUMEUNIT") is None
props.volume_unit = "MILLI/CUBIC_METRE"
assert subject.get_scene_unit_si_prefix("VOLUMEUNIT") == "MILLI"
def test_mass_and_time_unit_prefixes(self): def test_mass_and_time_unit_prefixes(self):
assert bpy.context.scene assert subject.get_scene_unit_si_prefix("KILO/GRAM") == "KILO"
props = tool.Blender.get_bim_props() assert subject.get_scene_unit_si_prefix("MEGA/GRAM") == "MEGA"
assert subject.get_scene_unit_si_prefix("GRAM") is None
props.mass_unit = "KILOGRAM"
assert subject.get_scene_unit_si_prefix("MASSUNIT") == "KILO"
props.mass_unit = "GRAM"
assert subject.get_scene_unit_si_prefix("MASSUNIT") is None
props.mass_unit = "POUND"
assert subject.get_scene_unit_si_prefix("MASSUNIT") == "CONVERSION"
props.mass_unit = "OUNCE"
assert subject.get_scene_unit_si_prefix("MASSUNIT") == "CONVERSION"
props.mass_unit = "TONNE"
assert subject.get_scene_unit_si_prefix("MASSUNIT") == "MEGA"
props.time_unit = "SECOND"
assert subject.get_scene_unit_si_prefix("TIMEUNIT") is None
props.time_unit = "MINUTE"
assert subject.get_scene_unit_si_prefix("TIMEUNIT") == "CONVERSION"
props.time_unit = "HOUR"
assert subject.get_scene_unit_si_prefix("TIMEUNIT") == "CONVERSION"
props.time_unit = "DAY"
assert subject.get_scene_unit_si_prefix("TIMEUNIT") == "CONVERSION"
class TestImportUnitAttributes(NewFile): class TestImportUnitAttributes(NewFile):