| from buddy_fusion.fallback import edit_boxes_fallback |
|
|
| BASE = [{"x": 0, "y": 0, "z": 0, "w": 4, "h": 4, "d": 4, "color": "#4caf50"}] |
|
|
|
|
| def test_recolor_changes_dominant_colour(): |
| out = edit_boxes_fallback(BASE, "make it purple") |
| assert any(b["color"] == "#a855f7" for b in out) |
| assert all(b["color"] != "#4caf50" for b in out) |
|
|
|
|
| def test_add_horn_appends_boxes(): |
| out = edit_boxes_fallback(BASE, "add two horns") |
| assert len(out) > len(BASE) |
|
|
|
|
| def test_add_wings_appends_boxes(): |
| out = edit_boxes_fallback(BASE, "give it wings") |
| assert len(out) > len(BASE) |
|
|
|
|
| def test_unknown_instruction_returns_unchanged_content(): |
| out = edit_boxes_fallback(BASE, "zxqw nonsense") |
| assert out == BASE |
|
|
|
|
| def test_does_not_mutate_input(): |
| snapshot = [dict(b) for b in BASE] |
| edit_boxes_fallback(BASE, "make it purple") |
| assert BASE == snapshot |
|
|
|
|
| def test_empty_input_returns_empty(): |
| assert edit_boxes_fallback([], "add a horn") == [] |
|
|
|
|
| def test_fake_runtime_edit_creature(): |
| from buddy_fusion.runtime import FakeBuddyRuntime |
| rt = FakeBuddyRuntime() |
| genome = {"name": "X", "archetype": "chick", "parts": []} |
| g, boxes, tweaks, status = rt.edit_creature(genome, BASE, "add two horns") |
| assert len(boxes) > len(BASE) |
| assert status.used_fallback |
| assert g["name"] == "X" |
| assert len(tweaks) == 4 and all(isinstance(t, str) and t for t in tweaks) |
|
|
|
|