# SPDX-License-Identifier: MIT """Check declared fictional rectangular dimensions; not a physical fit test.""" from decimal import Decimal import json def dimensions(*values): return tuple(Decimal(value) for value in values) def differences(available, required): return [str(a - r) for a, r in zip(available, required)] def fits(available, required): return all(a >= r for a, r in zip(available, required)) cavity = dimensions("19", "16", "6") outside = dimensions("18", "14", "5.5") inside = dimensions("16.75", "12.75", "4.75") contents = dimensions("16", "12", "4.5") opening = dimensions("15", "5") entry_face = dimensions("14", "5.5") revised_opening = dimensions("15", "6") open_lid_total_height = Decimal("7") results = { "input_type": "fictional declared dimensions", "units": "inches", "orientation": "length inward, width across opening, height upright", "cavity_lwh": list(map(str, cavity)), "outside_lwh": list(map(str, outside)), "inside_lwh": list(map(str, inside)), "contents_lwh": list(map(str, contents)), "opening_wh": list(map(str, opening)), "revised_opening_wh": list(map(str, revised_opening)), "open_lid_total_height": str(open_lid_total_height), "cavity_minus_outside_lwh": differences(cavity, outside), "inside_minus_contents_lwh": differences(inside, contents), "opening_minus_entry_face_wh": differences(opening, entry_face), "revised_opening_minus_entry_face_wh": differences(revised_opening, entry_face), "open_lid_height_margin": str(cavity[2] - open_lid_total_height), "nominal_cavity_fit": fits(cavity, outside), "nominal_contents_fit": fits(inside, contents), "straight_entry_at_original_opening": fits(opening, entry_face), "straight_entry_at_revised_opening": fits(revised_opening, entry_face), "open_lid_in_cavity": cavity[2] >= open_lid_total_height, "physical_fit_tested": False, } assert results["cavity_minus_outside_lwh"] == ["1", "2", "0.5"] assert results["inside_minus_contents_lwh"] == ["0.75", "0.75", "0.25"] assert results["opening_minus_entry_face_wh"] == ["1", "-0.5"] assert results["revised_opening_minus_entry_face_wh"] == ["1", "0.5"] assert results["open_lid_height_margin"] == "-1" assert results["nominal_cavity_fit"] and results["nominal_contents_fit"] assert not results["straight_entry_at_original_opening"] assert results["straight_entry_at_revised_opening"] assert not results["open_lid_in_cavity"] results["assertions_passed"] = 9 print(json.dumps(results, indent=2) + "\n", end="")