From 5eb40d68f3346f4ae75b11102b0bf47d23542990 Mon Sep 17 00:00:00 2001
From: zy <953725892@qq.com>
Date: Tue, 19 Sep 2023 19:51:05 +0800
Subject: [PATCH] =?UTF-8?q?test=20#I7SVZF=20=E8=A1=A5=E5=85=A8springnative?=
=?UTF-8?q?=E4=B8=8B=E6=8A=BD=E8=B1=A1chain=E8=A7=A3=E6=9E=90=E7=9B=B8?=
=?UTF-8?q?=E5=85=B3=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../AbstractChainJsonELSpringTest.java | 45 ++++++++++++++++++
.../AbstractChainXMLELSpringTest.java | 46 +++++++++++++++++++
.../AbstractChainYMLELSpringTest.java | 46 +++++++++++++++++++
.../liteflow/test/abstractChain/cmp/ACmp.java | 14 ++++++
.../liteflow/test/abstractChain/cmp/BCmp.java | 16 +++++++
.../liteflow/test/abstractChain/cmp/CCmp.java | 15 ++++++
.../liteflow/test/abstractChain/cmp/DCmp.java | 14 ++++++
.../liteflow/test/abstractChain/cmp/ECmp.java | 14 ++++++
.../test/abstractChain/cmp/FSwitchCmp.java | 14 ++++++
.../liteflow/test/abstractChain/cmp/JCmp.java | 14 ++++++
.../liteflow/test/abstractChain/cmp/KCmp.java | 14 ++++++
.../abstractChain/application-json.xml | 23 ++++++++++
.../abstractChain/application-xml.xml | 23 ++++++++++
.../abstractChain/application-yml.xml | 23 ++++++++++
.../test/resources/abstractChain/flow.el.json | 32 +++++++++++++
.../test/resources/abstractChain/flow.el.xml | 28 +++++++++++
.../test/resources/abstractChain/flow.el.yml | 18 ++++++++
17 files changed, 399 insertions(+)
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/AbstractChainJsonELSpringTest.java
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/AbstractChainXMLELSpringTest.java
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/AbstractChainYMLELSpringTest.java
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/ACmp.java
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/BCmp.java
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/CCmp.java
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/DCmp.java
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/ECmp.java
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/FSwitchCmp.java
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/JCmp.java
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/KCmp.java
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/application-json.xml
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/application-xml.xml
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/application-yml.xml
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/flow.el.json
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/flow.el.xml
create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/flow.el.yml
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/AbstractChainJsonELSpringTest.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/AbstractChainJsonELSpringTest.java
new file mode 100644
index 000000000..0fbfb81fc
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/AbstractChainJsonELSpringTest.java
@@ -0,0 +1,45 @@
+package com.yomahub.liteflow.test.abstractChain;
+
+import com.yomahub.liteflow.core.FlowExecutor;
+import com.yomahub.liteflow.flow.LiteflowResponse;
+import com.yomahub.liteflow.test.BaseTest;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import javax.annotation.Resource;
+
+@ExtendWith(SpringExtension.class)
+@ContextConfiguration("classpath:/abstractChain/application-json.xml")
+public class AbstractChainJsonELSpringTest extends BaseTest {
+
+ @Resource
+ private FlowExecutor flowExecutor;
+
+ // 是否按照流程定义配置执行
+ @Test
+ public void test1() throws Exception {
+ LiteflowResponse response = flowExecutor.execute2Resp("implA", "arg");
+ Assertions.assertTrue(response.isSuccess());
+ Assertions.assertEquals("a==>b==>c==>d==>f==>j", response.getExecuteStepStrWithoutTime());
+ }
+
+ //测试嵌套继承的baseChain是否重复解析
+ @Test
+ public void test2() throws Exception {
+ LiteflowResponse response = flowExecutor.execute2Resp("implB", "arg");
+ Assertions.assertTrue(response.isSuccess());
+ Assertions.assertEquals("a==>b==>a==>b==>a==>b==>f==>j", response.getExecuteStepStrWithoutTime());
+ }
+
+ //测试嵌套继承的baseChain是否重复解析
+ @Test
+ public void test3() throws Exception {
+ LiteflowResponse response = flowExecutor.execute2Resp("implC", "arg");
+ Assertions.assertTrue(response.isSuccess());
+ Assertions.assertEquals("a==>b==>a==>b==>a==>b==>f==>a==>b", response.getExecuteStepStrWithoutTime());
+ }
+
+}
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/AbstractChainXMLELSpringTest.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/AbstractChainXMLELSpringTest.java
new file mode 100644
index 000000000..b07b2c0ec
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/AbstractChainXMLELSpringTest.java
@@ -0,0 +1,46 @@
+package com.yomahub.liteflow.test.abstractChain;
+
+import com.yomahub.liteflow.core.FlowExecutor;
+import com.yomahub.liteflow.flow.LiteflowResponse;
+import com.yomahub.liteflow.test.BaseTest;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import javax.annotation.Resource;
+
+
+@ExtendWith(SpringExtension.class)
+@ContextConfiguration("classpath:/abstractChain/application-xml.xml")
+public class AbstractChainXMLELSpringTest extends BaseTest {
+
+ @Resource
+ private FlowExecutor flowExecutor;
+
+ // 是否按照流程定义配置执行
+ @Test
+ public void test1() throws Exception {
+ LiteflowResponse response = flowExecutor.execute2Resp("implA", "arg");
+ Assertions.assertTrue(response.isSuccess());
+ Assertions.assertEquals("a==>b==>c==>d==>f==>j", response.getExecuteStepStrWithoutTime());
+ }
+
+ //测试嵌套继承的baseChain是否重复解析
+ @Test
+ public void test2() throws Exception {
+ LiteflowResponse response = flowExecutor.execute2Resp("implB", "arg");
+ Assertions.assertTrue(response.isSuccess());
+ Assertions.assertEquals("a==>b==>a==>b==>a==>b==>f==>j", response.getExecuteStepStrWithoutTime());
+ }
+
+ //测试嵌套继承的baseChain是否重复解析
+ @Test
+ public void test3() throws Exception {
+ LiteflowResponse response = flowExecutor.execute2Resp("implC", "arg");
+ Assertions.assertTrue(response.isSuccess());
+ Assertions.assertEquals("a==>b==>a==>b==>a==>b==>f==>a==>b", response.getExecuteStepStrWithoutTime());
+ }
+
+}
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/AbstractChainYMLELSpringTest.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/AbstractChainYMLELSpringTest.java
new file mode 100644
index 000000000..adff8b938
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/AbstractChainYMLELSpringTest.java
@@ -0,0 +1,46 @@
+package com.yomahub.liteflow.test.abstractChain;
+
+import com.yomahub.liteflow.core.FlowExecutor;
+import com.yomahub.liteflow.flow.LiteflowResponse;
+import com.yomahub.liteflow.test.BaseTest;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import javax.annotation.Resource;
+
+
+@ExtendWith(SpringExtension.class)
+@ContextConfiguration("classpath:/abstractChain/application-yml.xml")
+public class AbstractChainYMLELSpringTest extends BaseTest {
+
+ @Resource
+ private FlowExecutor flowExecutor;
+
+ // 是否按照流程定义配置执行
+ @Test
+ public void test1() throws Exception {
+ LiteflowResponse response = flowExecutor.execute2Resp("implA", "arg");
+ Assertions.assertTrue(response.isSuccess());
+ Assertions.assertEquals("a==>b==>c==>d==>f==>j", response.getExecuteStepStrWithoutTime());
+ }
+
+ //测试嵌套继承的baseChain是否重复解析
+ @Test
+ public void test2() throws Exception {
+ LiteflowResponse response = flowExecutor.execute2Resp("implB", "arg");
+ Assertions.assertTrue(response.isSuccess());
+ Assertions.assertEquals("a==>b==>a==>b==>a==>b==>f==>j", response.getExecuteStepStrWithoutTime());
+ }
+
+ //测试嵌套继承的baseChain是否重复解析
+ @Test
+ public void test3() throws Exception {
+ LiteflowResponse response = flowExecutor.execute2Resp("implC", "arg");
+ Assertions.assertTrue(response.isSuccess());
+ Assertions.assertEquals("a==>b==>a==>b==>a==>b==>f==>a==>b", response.getExecuteStepStrWithoutTime());
+ }
+
+}
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/ACmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/ACmp.java
new file mode 100644
index 000000000..8aaf2caae
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/ACmp.java
@@ -0,0 +1,14 @@
+package com.yomahub.liteflow.test.abstractChain.cmp;
+
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.stereotype.Component;
+
+@Component("a")
+public class ACmp extends NodeComponent {
+
+ @Override
+ public void process() {
+ System.out.println("ACmp executed!");
+ }
+
+}
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/BCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/BCmp.java
new file mode 100644
index 000000000..2f336f6ab
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/BCmp.java
@@ -0,0 +1,16 @@
+package com.yomahub.liteflow.test.abstractChain.cmp;
+
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.stereotype.Component;
+
+
+@Component("b")
+public class BCmp extends NodeComponent {
+
+
+ @Override
+ public void process() {
+ System.out.println("BCmp executed!");
+ }
+
+}
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/CCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/CCmp.java
new file mode 100644
index 000000000..e2c16b4ae
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/CCmp.java
@@ -0,0 +1,15 @@
+package com.yomahub.liteflow.test.abstractChain.cmp;
+
+import com.yomahub.liteflow.core.NodeIfComponent;
+import org.springframework.stereotype.Component;
+
+
+@Component("c")
+public class CCmp extends NodeIfComponent {
+ @Override
+ public boolean processIf() throws Exception {
+ //do your biz
+ return true;
+ }
+}
+
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/DCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/DCmp.java
new file mode 100644
index 000000000..4f5f5b7ec
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/DCmp.java
@@ -0,0 +1,14 @@
+package com.yomahub.liteflow.test.abstractChain.cmp;
+
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.stereotype.Component;
+
+@Component("d")
+public class DCmp extends NodeComponent {
+
+ @Override
+ public void process() {
+ System.out.println("DCmp executed!");
+ }
+
+}
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/ECmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/ECmp.java
new file mode 100644
index 000000000..0a597dde2
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/ECmp.java
@@ -0,0 +1,14 @@
+package com.yomahub.liteflow.test.abstractChain.cmp;
+
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.stereotype.Component;
+
+@Component("e")
+public class ECmp extends NodeComponent {
+
+ @Override
+ public void process() {
+ System.out.println("ECmp executed!");
+ }
+
+}
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/FSwitchCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/FSwitchCmp.java
new file mode 100644
index 000000000..34b09c70a
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/FSwitchCmp.java
@@ -0,0 +1,14 @@
+package com.yomahub.liteflow.test.abstractChain.cmp;
+
+import com.yomahub.liteflow.core.NodeSwitchComponent;
+import org.springframework.stereotype.Component;
+
+@Component("f")
+public class FSwitchCmp extends NodeSwitchComponent {
+
+ @Override
+ public String processSwitch() throws Exception {
+ return "j";
+ }
+
+}
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/JCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/JCmp.java
new file mode 100644
index 000000000..a10829874
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/JCmp.java
@@ -0,0 +1,14 @@
+package com.yomahub.liteflow.test.abstractChain.cmp;
+
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.stereotype.Component;
+
+@Component("j")
+public class JCmp extends NodeComponent {
+
+ @Override
+ public void process() {
+ System.out.println("JCmp executed!");
+ }
+
+}
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/KCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/KCmp.java
new file mode 100644
index 000000000..f15e2963a
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/abstractChain/cmp/KCmp.java
@@ -0,0 +1,14 @@
+package com.yomahub.liteflow.test.abstractChain.cmp;
+
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.stereotype.Component;
+
+@Component("k")
+public class KCmp extends NodeComponent {
+
+ @Override
+ public void process() {
+ System.out.println("KCmp executed!");
+ }
+
+}
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/application-json.xml b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/application-json.xml
new file mode 100644
index 000000000..0ee724ca6
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/application-json.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/application-xml.xml b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/application-xml.xml
new file mode 100644
index 000000000..4aa6af206
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/application-xml.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/application-yml.xml b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/application-yml.xml
new file mode 100644
index 000000000..80f2f6ebb
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/application-yml.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/flow.el.json b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/flow.el.json
new file mode 100644
index 000000000..453bda2d9
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/flow.el.json
@@ -0,0 +1,32 @@
+{
+ "flow": {
+ "chain": [
+ {
+ "id": "implB",
+ "extends": "base2",
+ "value": "{3}=THEN(a,b);\n {4}=j;"
+ },
+ {
+ "id": "implC",
+ "extends": "base2",
+ "value": "{3}=THEN(a,b);\n {4}=THEN(a,b).id(\"j\");"
+ },
+ {
+ "id": "base",
+ "abstract": true,
+ "value": "THEN(a, b, {0}, {1});"
+ },
+ {
+ "id": "implA",
+ "extends": "base",
+ "value": "{0}=IF(c, d, e);\n {1}=SWITCH(f).to(j,k);"
+ },
+ {
+ "id": "base2",
+ "extends": "base",
+ "abstract": true,
+ "value": "{0}=THEN(a,b,{3});\n {1}=SWITCH(f).to({4},k);"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/flow.el.xml b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/flow.el.xml
new file mode 100644
index 000000000..1994b64c5
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/flow.el.xml
@@ -0,0 +1,28 @@
+
+
+
+ {3}=THEN(a,b);
+ {4}=j;
+
+
+
+ {3}=THEN(a,b);
+ {4}=THEN(a,b).id("j");
+
+
+
+ THEN(a, b, {0}, {1})
+
+
+
+ {0}=IF(c, d, e);
+ {1}=SWITCH(f).to(j,k);
+
+
+
+ {0}=THEN(a,b,{3});
+ {1}=SWITCH(f).to({4},k);
+
+
+
+
\ No newline at end of file
diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/flow.el.yml b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/flow.el.yml
new file mode 100644
index 000000000..b79e458fe
--- /dev/null
+++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/abstractChain/flow.el.yml
@@ -0,0 +1,18 @@
+flow:
+ chain:
+ - id: implB
+ extends: base2
+ value: "{3}=THEN(a,b);\n {4}=j;"
+ - id: implC
+ extends: base2
+ value: "{3}=THEN(a,b);\n {4}=THEN(a,b).id(\"j\");"
+ - id: base
+ abstract: true
+ value: "THEN(a, b, {0}, {1});"
+ - id: implA
+ extends: base
+ value: "{0}=IF(c, d, e);\n {1}=SWITCH(f).to(j,k);"
+ - id: base2
+ extends: base
+ abstract: true
+ value: "{0}=THEN(a,b,{3});\n {1}=SWITCH(f).to({4},k);"