package com.xly.tool; import org.junit.jupiter.api.Test; import java.util.LinkedHashMap; import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; /** * 尺寸拆分正则(自 SlotFillService 迁入):模型拆不对「长和宽50cm,高5cm」是实测结论, * 预填值里的尺寸表达必须由代码确定性拆成 长/宽/高。 */ class FormCollectDimensionTest { private static Map known(String... kv) { Map m = new LinkedHashMap<>(); for (int i = 0; i < kv.length; i += 2) { m.put(kv[i], kv[i + 1]); } return m; } @Test void positionalSpecSplitsIntoLwh() { Map m = known("规格", "60*40*30"); FormCollectTool.expandDimensions(m); assertEquals("60", m.get("长")); assertEquals("40", m.get("宽")); assertEquals("30", m.get("高")); assertEquals("60*40*30", m.get("规格"), "原值保留"); } @Test void labeledSpecWithSharedValueAndUnits() { Map m = known("尺寸", "长和宽50cm,高5cm"); FormCollectTool.expandDimensions(m); assertEquals("50", m.get("长")); assertEquals("50", m.get("宽")); assertEquals("5", m.get("高")); } @Test void multiplicationSignsAndDecimals() { Map m = known("规格", "50×30x5.5"); FormCollectTool.expandDimensions(m); assertEquals("50", m.get("长")); assertEquals("30", m.get("宽")); assertEquals("5.5", m.get("高")); } @Test void existingExplicitDimsAreNotOverwritten() { Map m = known("长", "99", "规格", "60*40*30"); FormCollectTool.expandDimensions(m); assertEquals("99", m.get("长"), "模型已明确给的 长 不被覆盖"); assertEquals("40", m.get("宽")); } @Test void plainValuesAreUntouched() { Map m = known("数量", "5000", "产品名称", "大16开画册", "联系电话", "0571-88881234"); FormCollectTool.expandDimensions(m); assertFalse(m.containsKey("长"), "普通数值/名称/电话不产生尺寸"); assertEquals("大16开画册", m.get("产品名称"), "值逐字保留"); } }