Skip to content

Commit

Permalink
Use outer group and relative ref to clarify evaluation context
Browse files Browse the repository at this point in the history
  • Loading branch information
lognaturel committed Jul 8, 2024
1 parent 757bad9 commit 3e8c91f
Showing 1 changed file with 14 additions and 11 deletions.
25 changes: 14 additions & 11 deletions src/test/java/org/javarosa/xpath/expr/IndexedRepeatTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static org.javarosa.core.test.AnswerDataMatchers.stringAnswer;
import static org.javarosa.test.BindBuilderXFormsElement.bind;
import static org.javarosa.test.XFormsElement.body;
import static org.javarosa.test.XFormsElement.group;
import static org.javarosa.test.XFormsElement.head;
import static org.javarosa.test.XFormsElement.html;
import static org.javarosa.test.XFormsElement.input;
Expand Down Expand Up @@ -58,28 +59,30 @@ public void getsIndexedValueInSingleRepeat() throws Exception {
model(
mainInstance(t("data id=\"indexed-repeat\"",
t("index"),
t("repeat",
t("inside")),
t("outer_group", // included to clarify intended evaluation context for index references
t("repeat",
t("inside"))),
t("calc")
)),
bind("/data/calc").calculate("indexed-repeat(/data/repeat/inside, /data/repeat, /data/index)")
bind("/data/calc").calculate("indexed-repeat(/data/outer_group/repeat/inside, /data/outer_group/repeat, ../index)")
)
),
body(
input("/data/index"),
repeat("/data/repeat",
input("/data/repeat/inside"))
group("/data/outer_group",
repeat("/data/outer_group/repeat",
input("/data/outer_group/repeat/inside")))
))
);

scenario.createNewRepeat("/data/repeat");
scenario.answer("/data/repeat[1]/inside", "index1");
scenario.createNewRepeat("/data/outer_group[1]/repeat");
scenario.answer("/data/outer_group[1]/repeat[1]/inside", "index1");

scenario.createNewRepeat("/data/repeat");
scenario.answer("/data/repeat[2]/inside", "index2");
scenario.createNewRepeat("/data/outer_group[1]/repeat");
scenario.answer("/data/outer_group[1]/repeat[2]/inside", "index2");

scenario.createNewRepeat("/data/repeat");
scenario.answer("/data/repeat[3]/inside", "index3");
scenario.createNewRepeat("/data/outer_group[1]/repeat");
scenario.answer("/data/outer_group[1]/repeat[3]/inside", "index3");

scenario.answer("/data/index", "2");
assertThat(scenario.answerOf("/data/calc"), is(stringAnswer("index2")));
Expand Down

0 comments on commit 3e8c91f

Please sign in to comment.