FigureTest.java
package tech.tablesaw.plotly.components;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import tech.tablesaw.plotly.traces.ScatterTrace;
import tech.tablesaw.plotly.traces.Trace;
class FigureTest {
private static final String LINE_END = System.lineSeparator();
private String divName = "target";
private double[] x = {1, 2, 3, 4, 5};
private double[] y = {1, 4, 9, 16, 25};
@Test
void asJavascript() {
Trace trace = ScatterTrace.builder(x, y).build();
Figure figure = new Figure(trace);
assertEquals(
" <script>"
+ LINE_END
+ " var target_target = document.getElementById('target');"
+ LINE_END
+ " "
+ LINE_END
+ "var trace0 ="
+ LINE_END
+ "{"
+ LINE_END
+ "x: [\"1.0\",\"2.0\",\"3.0\",\"4.0\",\"5.0\"],"
+ LINE_END
+ "y: [\"1.0\",\"4.0\",\"9.0\",\"16.0\",\"25.0\"],"
+ LINE_END
+ "mode: 'markers',"
+ LINE_END
+ "xaxis: 'x',"
+ LINE_END
+ "yaxis: 'y',"
+ LINE_END
+ "type: 'scatter',"
+ LINE_END
+ "name: '',"
+ LINE_END
+ "};"
+ LINE_END
+ ""
+ LINE_END
+ " var data = [ trace0];"
+ LINE_END
+ "Plotly.newPlot(target_target, data); </script>"
+ LINE_END,
figure.asJavascript(divName));
}
@Test
void asJavascript2() {
Trace trace = ScatterTrace.builder(x, y).build();
Layout layout =
Layout.builder()
.title("A test title")
.xAxis(
Axis.builder()
.title("x Axis 1")
.visible(true)
.type(Axis.Type.DEFAULT)
.titleFont(
Font.builder().family(Font.Family.ARIAL).size(8).color("red").build())
.build())
.margin(Margin.builder().top(200).left(200).build())
.showLegend(true)
.build();
Figure figure = new Figure(layout, trace);
assertEquals(
" <script>"
+ LINE_END
+ " var target_target = document.getElementById('target');"
+ LINE_END
+ " var layout = {"
+ LINE_END
+ " title: 'A test title',"
+ LINE_END
+ " height: 450,"
+ LINE_END
+ " width: 700,"
+ LINE_END
+ " showlegend: true,"
+ LINE_END
+ " margin: {"
+ LINE_END
+ " \"autoexpand\" : true,"
+ LINE_END
+ " \"b\" : 80,"
+ LINE_END
+ " \"l\" : 200,"
+ LINE_END
+ " \"pad\" : 0,"
+ LINE_END
+ " \"r\" : 80,"
+ LINE_END
+ " \"t\" : 200"
+ LINE_END
+ "},"
+ LINE_END
+ " xaxis: {"
+ LINE_END
+ " title: 'x Axis 1',"
+ LINE_END
+ " titlefont: {"
+ LINE_END
+ " \"color\" : \"red\","
+ LINE_END
+ " \"family\" : \"arial\","
+ LINE_END
+ " \"size\" : 8"
+ LINE_END
+ "},"
+ LINE_END
+ " },"
+ LINE_END
+ ""
+ LINE_END
+ ""
+ LINE_END
+ "};"
+ LINE_END
+ ""
+ LINE_END
+ "var trace0 ="
+ LINE_END
+ "{"
+ LINE_END
+ "x: [\"1.0\",\"2.0\",\"3.0\",\"4.0\",\"5.0\"],"
+ LINE_END
+ "y: [\"1.0\",\"4.0\",\"9.0\",\"16.0\",\"25.0\"],"
+ LINE_END
+ "mode: 'markers',"
+ LINE_END
+ "xaxis: 'x',"
+ LINE_END
+ "yaxis: 'y',"
+ LINE_END
+ "type: 'scatter',"
+ LINE_END
+ "name: '',"
+ LINE_END
+ "};"
+ LINE_END
+ ""
+ LINE_END
+ " var data = [ trace0];"
+ LINE_END
+ "Plotly.newPlot(target_target, data, layout); </script>"
+ LINE_END,
figure.asJavascript(divName));
}
@Test
void builder() {
String title = "A test title";
Layout layout = Layout.builder().title(title).showLegend(true).build();
Trace trace = ScatterTrace.builder(x, y).build();
Figure figure = Figure.builder().layout(layout).addTraces(trace).build();
assertEquals(layout, figure.getLayout());
figure.asJavascript(divName); // force the context to get created
assertTrue(String.valueOf(figure.getContext().get("figure")).contains(title));
}
}