package org.commcare.android.tests;
import org.commcare.suite.model.graph.Graph;
import org.commcare.suite.model.graph.XYSeries;
import org.javarosa.core.model.instance.TreeReference;
import org.javarosa.core.model.data.IntegerData;
import org.javarosa.core.model.data.StringData;
import org.javarosa.core.model.condition.EvaluationContext;
import org.javarosa.core.model.instance.FormInstance;
import org.javarosa.xpath.test.XPathEvalTest;
import org.javarosa.xpath.parser.XPathSyntaxException;
import org.commcare.CommCareApplication;
import org.commcare.android.CommCareTestRunner;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;
import java.util.Vector;
@Config(application = CommCareApplication.class)
@RunWith(CommCareTestRunner.class)
public class GraphTest extends XPathEvalTest {
@Test
public void testSeriesNodeSetExpansion() throws XPathSyntaxException {
FormInstance instance = createTestInstance();
EvaluationContext ec = new EvaluationContext(instance);
addDataRef(instance, "/data/flag", new IntegerData(1));
addDataRef(instance, "/data/three[1]", new StringData("alpha"));
addDataRef(instance, "/data/three[2]", new StringData("beta"));
addDataRef(instance, "/data/three[3]", new StringData("delta"));
addDataRef(instance, "/data/two[1]", new StringData("omega"));
addDataRef(instance, "/data/two[2]", new StringData("psi"));
XYSeries pathSeries = new XYSeries("/data/two");
Vector<TreeReference> pathNodes = Graph.expandNodeSet(pathSeries, ec);
Assert.assertEquals(2, pathNodes.size());
XYSeries expressionSeries = new XYSeries("if(/data/flag = 1, '/data/three', '/data/two')");
Vector<TreeReference> expressionNodes = Graph.expandNodeSet(expressionSeries, ec);
Assert.assertEquals(3, expressionNodes.size());
}
}