Skip to content

Commit 57ca74a

Browse files
committed
feat: default behavior set to statement reordering enabled
1 parent bc510c8 commit 57ca74a

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

docs/docs/developer-guide/dag.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ So even though we wrote (i) before (ii), the engine reorders them automatically,
3535

3636
### Activate reordering
3737

38-
The current behavior of Trevas is that statement reordering is **deactivated per default**.
39-
Statement reordering can be activated via the following config flag ("$vtl.engine.use_dag")
38+
The current behavior of Trevas is that statement reordering is **activated per default**, as this is the behavior required by the VTL standard.
39+
Statement reordering can be **deactivated** via the following config flag ("$vtl.engine.use_dag")
4040

4141
```java
4242
ScriptEngine engine = new ScriptEngineManager().getEngineByName("vtl");
43-
engine.put("$vtl.engine.use_dag", "true");
43+
engine.put("$vtl.engine.use_dag", "false");
4444
```

vtl-engine/src/main/java/fr/insee/vtl/engine/VtlScriptEngine.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ private String getProcessingEngineName() {
169169
*/
170170
public boolean isUseDag() {
171171
Object useDag = get(USE_DAG);
172-
return useDag != null && "true".equalsIgnoreCase(useDag.toString());
172+
return useDag == null || "true".equalsIgnoreCase(useDag.toString());
173173
}
174174

175175
/**

vtl-engine/src/test/java/fr/insee/vtl/engine/utils/dag/DagTest.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static org.junit.jupiter.api.Assertions.assertThrows;
55

66
import fr.insee.vtl.engine.VtlScriptEngine;
7+
import fr.insee.vtl.engine.exceptions.UndefinedVariableException;
78
import fr.insee.vtl.engine.samples.DatasetSamples;
89
import fr.insee.vtl.model.Dataset;
910
import fr.insee.vtl.model.InMemoryDataset;
@@ -15,7 +16,6 @@
1516
import java.util.*;
1617
import java.util.stream.Stream;
1718
import javax.script.ScriptContext;
18-
import javax.script.ScriptEngine;
1919
import javax.script.ScriptEngineManager;
2020
import javax.script.ScriptException;
2121
import org.junit.jupiter.api.BeforeEach;
@@ -69,7 +69,7 @@ public class DagTest {
6969
new Structured.Component("id2", Long.class, Dataset.Role.IDENTIFIER),
7070
new Structured.Component("m2", Long.class, Dataset.Role.MEASURE)));
7171

72-
private ScriptEngine engine;
72+
private VtlScriptEngine engine;
7373

7474
public static Stream<Arguments> shuffledListSource() {
7575
return permutations(List.of("b := a", "c := b", "d := c", "e := d + c"))
@@ -153,21 +153,28 @@ private static Positioned.Position getPositionOfStatementInScript(
153153

154154
@BeforeEach
155155
void setUp() {
156-
engine = new ScriptEngineManager().getEngineByName("vtl");
157-
engine.put(VTL_ENGINE_USE_DAG, "true");
156+
engine = (VtlScriptEngine) new ScriptEngineManager().getEngineByName("vtl");
158157
}
159158

160159
@Test
161160
void testNoDagConfig() {
162-
VtlScriptEngine vtlScriptEngine = (VtlScriptEngine) engine;
163161
engine.put(VTL_ENGINE_USE_DAG, "false");
164-
assertThat(vtlScriptEngine.isUseDag()).isFalse();
162+
assertThat(engine.isUseDag()).isFalse();
165163
}
166164

167165
@Test
168166
void testUseDagConfig() {
169-
VtlScriptEngine vtlScriptEngine = (VtlScriptEngine) engine;
170-
assertThat(vtlScriptEngine.isUseDag()).isTrue();
167+
assertThat(engine.isUseDag()).isTrue();
168+
}
169+
170+
@Test
171+
void testNoReorderingWhenDAGDeactivated() {
172+
engine.put(VTL_ENGINE_USE_DAG, "false");
173+
ScriptContext context = engine.getContext();
174+
context.setAttribute("a", 1L, ScriptContext.ENGINE_SCOPE);
175+
assertThatExceptionOfType(UndefinedVariableException.class)
176+
.isThrownBy(() -> engine.eval("b := a; d := c; c := b;"))
177+
.withMessage("undefined variable c");
171178
}
172179

173180
@Test

0 commit comments

Comments
 (0)