You've already forked FrameTour-BE
- 将ElementCreateRequest和PuzzleElementDTO中的elementType从Integer改为String - 删除所有类型特定字段,新增config和configMap支持JSON配置 - 新增BaseElement抽象基类定义元素通用行为 - 添加ElementConfig接口和具体实现类ImageConfig、TextConfig - 创建ElementFactory工厂类和ElementRegistrar注册器 - 新增ElementType枚举和ElementValidationException异常类 - 实现ImageElement和TextElement具体元素类 - 添加Position位置信息封装类
104 lines
3.9 KiB
Java
104 lines
3.9 KiB
Java
package com.ycwl.basic.puzzle.integration;
|
|
|
|
import com.ycwl.basic.puzzle.element.base.BaseElement;
|
|
import com.ycwl.basic.puzzle.element.base.ElementFactory;
|
|
import com.ycwl.basic.puzzle.element.enums.ElementType;
|
|
import com.ycwl.basic.puzzle.element.impl.ImageElement;
|
|
import com.ycwl.basic.puzzle.element.impl.TextElement;
|
|
import com.ycwl.basic.puzzle.entity.PuzzleElementEntity;
|
|
import com.ycwl.basic.puzzle.test.PuzzleTestDataBuilder;
|
|
import org.junit.jupiter.api.BeforeAll;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
/**
|
|
* Element 调试测试
|
|
* 用于验证 Element 创建和配置是否正确
|
|
*/
|
|
class ElementDebugTest {
|
|
|
|
@BeforeAll
|
|
static void registerElements() {
|
|
ElementFactory.register(ElementType.TEXT, TextElement.class);
|
|
ElementFactory.register(ElementType.IMAGE, ImageElement.class);
|
|
}
|
|
|
|
@Test
|
|
void testCreateTextElement() {
|
|
System.out.println("=== 测试创建 TEXT 元素 ===");
|
|
|
|
PuzzleElementEntity entity = PuzzleTestDataBuilder.createTextElement(
|
|
1L, "testText", 100, 200, 300, 50, 10,
|
|
"测试文字", 24, "#333333"
|
|
);
|
|
|
|
System.out.println("Entity elementType: " + entity.getElementType());
|
|
System.out.println("Entity config: " + entity.getConfig());
|
|
|
|
try {
|
|
BaseElement element = ElementFactory.create(entity);
|
|
System.out.println("✅ Element 创建成功");
|
|
System.out.println("Element type: " + element.getElementType());
|
|
System.out.println("Element key: " + element.getElementKey());
|
|
assertNotNull(element);
|
|
} catch (Exception e) {
|
|
System.err.println("❌ Element 创建失败: " + e.getMessage());
|
|
e.printStackTrace();
|
|
fail("Element 创建失败");
|
|
}
|
|
}
|
|
|
|
@Test
|
|
void testCreateImageElement() {
|
|
System.out.println("\n=== 测试创建 IMAGE 元素 ===");
|
|
|
|
PuzzleElementEntity entity = PuzzleTestDataBuilder.createImageElement(
|
|
1L, "testImage", 50, 100, 100, 100, 5,
|
|
"https://example.com/test.jpg"
|
|
);
|
|
|
|
System.out.println("Entity elementType: " + entity.getElementType());
|
|
System.out.println("Entity config: " + entity.getConfig());
|
|
|
|
try {
|
|
BaseElement element = ElementFactory.create(entity);
|
|
System.out.println("✅ Element 创建成功");
|
|
System.out.println("Element type: " + element.getElementType());
|
|
System.out.println("Element key: " + element.getElementKey());
|
|
assertNotNull(element);
|
|
} catch (Exception e) {
|
|
System.err.println("❌ Element 创建失败: " + e.getMessage());
|
|
e.printStackTrace();
|
|
fail("Element 创建失败");
|
|
}
|
|
}
|
|
|
|
@Test
|
|
void testRealScenarioElements() {
|
|
System.out.println("\n=== 测试现实场景元素创建 ===");
|
|
|
|
var elements = PuzzleTestDataBuilder.createRealScenarioElements(1L);
|
|
System.out.println("元素数量: " + elements.size());
|
|
|
|
int successCount = 0;
|
|
for (PuzzleElementEntity entity : elements) {
|
|
System.out.println("\n--- 测试元素: " + entity.getElementKey() + " ---");
|
|
System.out.println("Type: " + entity.getElementType());
|
|
System.out.println("Config: " + entity.getConfig());
|
|
|
|
try {
|
|
BaseElement element = ElementFactory.create(entity);
|
|
System.out.println("✅ 创建成功");
|
|
successCount++;
|
|
} catch (Exception e) {
|
|
System.err.println("❌ 创建失败: " + e.getMessage());
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
System.out.println("\n总结: " + successCount + "/" + elements.size() + " 个元素创建成功");
|
|
assertEquals(elements.size(), successCount, "所有元素都应该创建成功");
|
|
}
|
|
}
|