FormCollectDimensionTest.java
2.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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<String, String> known(String... kv) {
Map<String, String> 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<String, String> 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<String, String> m = known("尺寸", "长和宽50cm,高5cm");
FormCollectTool.expandDimensions(m);
assertEquals("50", m.get("长"));
assertEquals("50", m.get("宽"));
assertEquals("5", m.get("高"));
}
@Test
void multiplicationSignsAndDecimals() {
Map<String, String> 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<String, String> m = known("长", "99", "规格", "60*40*30");
FormCollectTool.expandDimensions(m);
assertEquals("99", m.get("长"), "模型已明确给的 长 不被覆盖");
assertEquals("40", m.get("宽"));
}
@Test
void plainValuesAreUntouched() {
Map<String, String> m = known("数量", "5000", "产品名称", "大16开画册", "联系电话", "0571-88881234");
FormCollectTool.expandDimensions(m);
assertFalse(m.containsKey("长"), "普通数值/名称/电话不产生尺寸");
assertEquals("大16开画册", m.get("产品名称"), "值逐字保留");
}
}