Skip to content

Commit 112783d

Browse files
committed
test:补充自定义对象调用单测
1 parent 4c6b386 commit 112783d

7 files changed

Lines changed: 59 additions & 26 deletions

File tree

src/main/java/org/github/azirzsk/fcp/invoke/FunctionCall.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public Object functionCall(String name, String argumentsStr) {
6060
private Object[] parseArguments(JSONObject argumentJson, ParametersEntity parameters) {
6161
Map<String, PropertyEntity> propertiesMap = parameters.getProperties();
6262
Collection<PropertyEntity> property = propertiesMap.values();
63+
// 根据方法中参数顺序排序
6364
List<PropertyEntity> sortedList = property.stream()
6465
.sorted(Comparator.comparingInt(PropertyEntity::getIndex).reversed())
6566
.collect(Collectors.toList());

src/test/java/org/github/azirzsk/fcp/invoke/FunctionCallTest.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package org.github.azirzsk.fcp.invoke;
22

33
import org.github.azirzsk.fcp.FCP;
4-
import org.github.azirzsk.fcp.testclass.tool.SingleNoArgMethod;
5-
import org.github.azirzsk.fcp.testclass.tool.SingleNoReturnMethod;
6-
import org.github.azirzsk.fcp.testclass.tool.SingleReturnMethod;
4+
import org.github.azirzsk.fcp.testclass.invoke.SingleNoArgMethod;
5+
import org.github.azirzsk.fcp.testclass.invoke.SingleNoReturnMethod;
6+
import org.github.azirzsk.fcp.testclass.invoke.SingleReturnMethod;
77
import org.junit.jupiter.api.Assertions;
88
import org.junit.jupiter.api.Test;
99

@@ -53,4 +53,24 @@ public void testNoArg() {
5353
String invokeStr = "{}";
5454
Assertions.assertEquals(123, fcp.functionCall("noArg", invokeStr));
5555
}
56+
57+
@Test
58+
public void testCustomObject() {
59+
SingleReturnMethod singleReturnMethod = new SingleReturnMethod();
60+
FCP fcp = FCP.create();
61+
fcp.functionCall(singleReturnMethod);
62+
63+
String invokeStr = "{\"user\":{\"name\":\"azirzsk\",\"age\":25}}";
64+
Assertions.assertEquals("姓名:azirzsk,年龄:25", fcp.functionCall("print", invokeStr));
65+
}
66+
67+
@Test
68+
public void testNestCustomObject() {
69+
SingleReturnMethod singleReturnMethod = new SingleReturnMethod();
70+
FCP fcp = FCP.create();
71+
fcp.functionCall(singleReturnMethod);
72+
73+
String invokeStr = "{\"home\":{\"address\":\"北京市朝阳区\",\"userInfo\":{\"name\":\"azirzsk\",\"age\":25}}}";
74+
Assertions.assertEquals("地址:北京市朝阳区,用户信息:姓名:azirzsk,年龄:25", fcp.functionCall("printHome", invokeStr));
75+
}
5676
}

src/test/java/org/github/azirzsk/fcp/parser/ToolParserTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.github.azirzsk.fcp.parser;
22

33
import org.github.azirzsk.fcp.entity.ToolEntity;
4-
import org.github.azirzsk.fcp.testclass.tool.SingleReturnMethod;
4+
import org.github.azirzsk.fcp.testclass.invoke.SingleReturnMethod;
55
import org.github.azirzsk.fcp.utils.FileUtils;
66
import org.github.azirzsk.fcp.utils.JsonUtils;
77
import org.junit.jupiter.api.Assertions;

src/test/java/org/github/azirzsk/fcp/testclass/tool/SingleNoArgMethod.java renamed to src/test/java/org/github/azirzsk/fcp/testclass/invoke/SingleNoArgMethod.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.github.azirzsk.fcp.testclass.tool;
1+
package org.github.azirzsk.fcp.testclass.invoke;
22

33
import org.github.azirzsk.fcp.annotation.Function;
44

src/test/java/org/github/azirzsk/fcp/testclass/tool/SingleNoReturnMethod.java renamed to src/test/java/org/github/azirzsk/fcp/testclass/invoke/SingleNoReturnMethod.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.github.azirzsk.fcp.testclass.tool;
1+
package org.github.azirzsk.fcp.testclass.invoke;
22

33
import org.github.azirzsk.fcp.annotation.Function;
44
import org.github.azirzsk.fcp.annotation.Property;
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.github.azirzsk.fcp.testclass.invoke;
2+
3+
import org.github.azirzsk.fcp.annotation.Function;
4+
import org.github.azirzsk.fcp.annotation.Property;
5+
import org.github.azirzsk.fcp.testclass.property.PropertyTestClass;
6+
7+
/**
8+
* @author zhangshukun
9+
* @since 2024/12/22
10+
*/
11+
public class SingleReturnMethod {
12+
13+
@Function(desc = "计算最大公约数")
14+
public int gcd(@Property(desc = "非负整数A") int a, @Property(desc = "非负整数B") int b) {
15+
if (b == 0) {
16+
return a;
17+
}
18+
return gcd(b, a % b);
19+
}
20+
21+
@Function(desc = "打印用户信息")
22+
public String print(@Property(desc = "用户信息") PropertyTestClass.UserInfo user) {
23+
return String.format("姓名:%s,年龄:%s", user.getName(), user.getAge());
24+
}
25+
26+
@Function(desc = "打印家庭信息")
27+
public String printHome(@Property(desc = "家庭信息") PropertyTestClass.Home home) {
28+
return String.format("地址:%s,用户信息:姓名:%s,年龄:%s", home.getAddress(),
29+
home.getUserInfo().getName(), home.getUserInfo().getAge());
30+
}
31+
32+
}

src/test/java/org/github/azirzsk/fcp/testclass/tool/SingleReturnMethod.java

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)