Harden MCP tool composition
This commit is contained in:
@@ -10,6 +10,7 @@ from roll_calculation import (
|
||||
calculate_roll,
|
||||
get_article,
|
||||
modify_calculation,
|
||||
transport_roll_inputs_from_roll_calculation,
|
||||
)
|
||||
|
||||
|
||||
@@ -131,6 +132,48 @@ class RollCalculationTests(unittest.TestCase):
|
||||
self.assertEqual(calculation["effective_roll_length_m"], 50.0)
|
||||
self.assertAlmostEqual(calculation["roll_weight_kg"], 512.4909)
|
||||
|
||||
def test_transport_roll_inputs_match_browser_average_and_display_rounding(self):
|
||||
result = calculate_roll(representative_request())
|
||||
|
||||
self.assertEqual(
|
||||
transport_roll_inputs_from_roll_calculation(result),
|
||||
{
|
||||
"roll_diameter_mm": 845.9,
|
||||
"core_diameter_mm": 150.0,
|
||||
"roll_width_m": 5.8,
|
||||
"roll_weight_kg": 512.5,
|
||||
"product_length_m": 50.0,
|
||||
},
|
||||
)
|
||||
|
||||
def test_transport_roll_inputs_use_browser_equivalent_half_rounding(self):
|
||||
result = {
|
||||
"status": "success",
|
||||
"calculation": {
|
||||
"average_diameter_mm": 1000.25,
|
||||
"roll_weight_kg": 12.25,
|
||||
"effective_roll_length_m": 10.0,
|
||||
},
|
||||
"effective_inputs": {
|
||||
"core_diameter_mm": {"value": 150.0},
|
||||
"width_m": {"value": 2.0},
|
||||
},
|
||||
}
|
||||
|
||||
inputs = transport_roll_inputs_from_roll_calculation(result)
|
||||
|
||||
self.assertEqual(inputs["roll_diameter_mm"], 1000.3)
|
||||
self.assertEqual(inputs["roll_weight_kg"], 12.3)
|
||||
|
||||
def test_transport_roll_inputs_reject_unsuccessful_or_incomplete_results(self):
|
||||
for result in (
|
||||
{"status": "needs_clarification"},
|
||||
{"status": "success", "calculation": {}, "effective_inputs": {}},
|
||||
):
|
||||
with self.subTest(result=result):
|
||||
with self.assertRaises(ValueError):
|
||||
transport_roll_inputs_from_roll_calculation(result)
|
||||
|
||||
def test_optional_weight_is_omitted_without_requesting_it(self):
|
||||
result = calculate_roll(
|
||||
representative_request(width_m=None, include_roll_weight=False)
|
||||
|
||||
Reference in New Issue
Block a user