From aea492970c68fbc1f74899ebdf9ab1fc3b86e923 Mon Sep 17 00:00:00 2001 From: 0007 <0007@qq.com> Date: Wed, 27 Aug 2025 19:58:10 +0800 Subject: [PATCH] Add File --- .../chain/ChainNodeLoopConditionTest.java | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 agents-flex-core/src/test/java/com/agentsflex/core/test/chain/ChainNodeLoopConditionTest.java diff --git a/agents-flex-core/src/test/java/com/agentsflex/core/test/chain/ChainNodeLoopConditionTest.java b/agents-flex-core/src/test/java/com/agentsflex/core/test/chain/ChainNodeLoopConditionTest.java new file mode 100644 index 0000000..1eec92c --- /dev/null +++ b/agents-flex-core/src/test/java/com/agentsflex/core/test/chain/ChainNodeLoopConditionTest.java @@ -0,0 +1,104 @@ +package com.agentsflex.core.test.chain; + +import com.agentsflex.core.chain.*; +import com.agentsflex.core.util.Maps; +import org.junit.Test; + +import java.util.HashMap; +import java.util.Map; + +public class ChainNodeLoopConditionTest { + + @Test + public void test() { + + Chain chain = new Chain(); + + ChainNode a = new ChainNode() { + @Override + protected Map execute(Chain chain) { + return Maps.of(); + } + }; + a.setId("a"); + chain.addNode(a); + + ChainNode b = new ChainNode() { + @Override + protected Map execute(Chain chain) { + System.out.println("b>>> execute!"); + return Maps.of(); + } + }; + b.setId("b"); + b.setLoopEnable(true); +// b.setLoopBreakCondition(new NodeCondition() { +// @Override +// public boolean check(Chain chain, NodeContext context) { +// int executeCount = context.getExecuteCount(); +// System.out.println("b loopBreak check >>>> " + executeCount); +// return executeCount > 4; +// } +// }); + + + b.setLoopBreakCondition(new JsCodeCondition("_context.getExecuteCount() > 4")); + + + chain.addNode(b); + + ChainNode c = new ChainNode() { + @Override + protected Map execute(Chain chain) { + System.out.println("c>>> execute!"); + return Maps.of(); + } + }; + c.setId("c"); + chain.addNode(c); + + ChainNode d = new ChainNode() { + @Override + protected Map execute(Chain chain) { + System.out.println("d>>> execute!"); + return Maps.of(); + } + }; + d.setId("d"); + d.setCondition(new NodeCondition() { + @Override + public boolean check(Chain chain, NodeContext context, Map executeResult) { + System.out.println("d check >>>> " + context.isUpstreamFullyExecuted()); + return context.isUpstreamFullyExecuted(); + } + }); + chain.addNode(d); + + ChainEdge ab = new ChainEdge(); + ab.setSource("a"); + ab.setTarget("b"); + chain.addEdge(ab); + + ChainEdge ac = new ChainEdge(); + ac.setSource("a"); + ac.setTarget("c"); + chain.addEdge(ac); + + + ChainEdge bd = new ChainEdge(); + bd.setSource("b"); + bd.setTarget("d"); + chain.addEdge(bd); + + ChainEdge cd = new ChainEdge(); + cd.setSource("c"); + cd.setTarget("d"); + chain.addEdge(cd); + + + // A→B→D + // ↘C↗ + chain.executeForResult(new HashMap<>()); + + } +}