Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 17 additions & 16 deletions src/jmh/java/org/javarosa/benchmarks/ChildVaccinationBenchmark.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,22 @@
package org.javarosa.benchmarks;


import org.javarosa.core.model.instance.TreeReference;
import org.javarosa.test.Scenario;
import org.javarosa.xform.parse.XFormParser;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Level;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.infra.Blackhole;

import java.nio.file.Path;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;

import static java.util.stream.Collectors.toList;
import static org.javarosa.benchmarks.BenchmarkUtils.dryRun;
import static org.javarosa.benchmarks.BenchmarkUtils.prepareAssets;
Expand All @@ -31,21 +47,6 @@
import static org.javarosa.test.Scenario.getRef;
import static org.javarosa.test.Scenario.init;

import java.nio.file.Path;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
import org.javarosa.core.model.instance.TreeReference;
import org.javarosa.test.Scenario;
import org.javarosa.xform.parse.XFormParser;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Level;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.infra.Blackhole;

public class ChildVaccinationBenchmark {

public static void main(String[] args) {
Expand Down Expand Up @@ -110,7 +111,7 @@ private void answerAllQuestions(ChildVaccinationState state, Blackhole bh) {
bh.consume(state.scenario.answer("multi"));
bh.consume(state.scenario.next());
bh.consume(state.scenario.next());
bh.consume(state.scenario.answer("1.234 5.678"));
bh.consume(state.scenario.answer("1.234 5.678 0 2.3"));
bh.consume(state.scenario.next());
bh.consume(state.scenario.answer("Some building"));
bh.consume(state.scenario.next());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,24 @@
package org.javarosa.core.model.data.test;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

import org.javarosa.core.model.data.GeoPointData;
import org.javarosa.test.Scenario;
import org.javarosa.xform.parse.XFormParser;
import org.junit.Test;

import java.io.IOException;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.javarosa.test.BindBuilderXFormsElement.bind;
import static org.javarosa.test.XFormsElement.body;
import static org.javarosa.test.XFormsElement.head;
import static org.javarosa.test.XFormsElement.html;
import static org.javarosa.test.XFormsElement.input;
import static org.javarosa.test.XFormsElement.mainInstance;
import static org.javarosa.test.XFormsElement.model;
import static org.javarosa.test.XFormsElement.t;
import static org.javarosa.test.XFormsElement.title;

public class GeoPointDataTests {
@Test
public void getDisplayText_returnsSpaceSeparatedComponents() {
Expand All @@ -20,4 +33,39 @@ public void getDisplayText_whenAllComponentsAreZero_returnsEmptyString() {

assertThat(zeroedOut.getDisplayText(), is(""));
}

@Test
public void getDisplayText_whenAccuracyOmitted_HasThreeComponents() {
GeoPointData point = new GeoPointData(new double[]{2.3, 7.3, 3.2});

assertThat(point.getDisplayText(), is("2.3 7.3 3.2"));
}

@Test
public void missingAccuracy_isNotTreatedAs0() throws IOException, XFormParser.ParseException {
Scenario scenario = Scenario.init("Missing accuracy", html(
head(
title("Missing accuracy"),
model(
mainInstance(
t("data id=\"missing-accuracy\"",
t("q1"),
t("accuracy_rounded"),
t("note")
)),
bind("/data/q1").type("geopoint"),
bind("/data/accuracy_rounded").calculate("round(selected-at(/data/q1, 3), 2)"),
bind("/data/note").relevant("/data/accuracy_rounded = 0"))),
body(
input("/data/q1"),
input("/data/note")
)
));

scenario.answer("/data/q1","1.234 5.678");
assertThat(scenario.getAnswerNode("/data/note").isRelevant(), is(false));

scenario.answer("/data/q1", "1.234 5.678 0 0");

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion:

  • Having a test where the altitude is not zero: 1.234 5.678 0 0
  • Having another test where values can produce NaN (e.g. then value is nullable, field is not relevant): ABC 23.55, PP 0

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lognaturel, would you prefer to leave this suggestion for another PR?

assertThat(scenario.getAnswerNode("/data/note").isRelevant(), is(true));
}
}
23 changes: 12 additions & 11 deletions src/test/java/org/javarosa/smoketests/ChildVaccinationTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,20 @@
package org.javarosa.smoketests;


import org.javarosa.core.model.instance.TreeReference;
import org.javarosa.test.Scenario;
import org.javarosa.xform.parse.XFormParser;
import org.junit.Test;

import java.time.LocalDate;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;

import static java.util.stream.Collectors.toList;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.anyOf;
import static org.hamcrest.Matchers.is;
import static org.javarosa.test.Scenario.getRef;
import static org.javarosa.smoketests.ChildVaccinationTest.Sex.FEMALE;
import static org.javarosa.smoketests.ChildVaccinationTest.Sex.MALE;
import static org.javarosa.smoketests.ChildVaccinationTest.Vaccines.DIPHTERIA;
Expand All @@ -30,17 +39,9 @@
import static org.javarosa.smoketests.ChildVaccinationTest.Vaccines.DIPHTERIA_FIRST_AND_MEASLES;
import static org.javarosa.smoketests.ChildVaccinationTest.Vaccines.MEASLES;
import static org.javarosa.smoketests.ChildVaccinationTest.Vaccines.NONE;
import static org.javarosa.test.Scenario.getRef;
import static org.junit.Assert.fail;

import java.time.LocalDate;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
import org.javarosa.core.model.instance.TreeReference;
import org.javarosa.test.Scenario;
import org.javarosa.xform.parse.XFormParser;
import org.junit.Test;

public class ChildVaccinationTest {

public static final TreeReference DOB_DAY_MONTH_TYPE_1_REF = getRef("/data/household/child_repeat/dob_day_1");
Expand Down Expand Up @@ -70,7 +71,7 @@ public void smoke_test() throws XFormParser.ParseException {
scenario.answer("multi");
scenario.next();
scenario.next();
scenario.answer("1.234 5.678");
scenario.answer("1.234 5.678 0 2.3"); // an accuracy of 0m or greater than 5m makes a second geopoint question relevant
scenario.next();
scenario.answer("Some building");
scenario.next();
Expand Down