package org.jtwig.performance;
import net.jperf.GroupedTimingStatistics;
import net.jperf.StopWatch;
import org.apache.commons.lang3.RandomStringUtils;
import org.jtwig.JtwigModel;
import org.jtwig.JtwigTemplate;
import org.jtwig.integration.expression.SelectionTest;
import org.jtwig.resource.loader.InMemoryResourceLoader;
import org.jtwig.resource.loader.TypedResourceLoader;
import org.junit.Test;
import static org.jtwig.JtwigModel.newModel;
import static org.jtwig.environment.EnvironmentConfigurationBuilder.configuration;
public class SelectionOperatorPerformanceTest {
public static final int SIZE = 10000;
@Test
public void select() throws Exception {
GroupedTimingStatistics groupedTimingStatistics = new GroupedTimingStatistics();
groupedTimingStatistics.setStartTime(System.currentTimeMillis());
JtwigTemplate jtwigTemplate = JtwigTemplate.inlineTemplate("{{ var.nested.field[0] }}");
for (int i = 0; i < SIZE; i++) {
StopWatch stopWatch = new StopWatch("selection");
String random = RandomStringUtils.random(6);
JtwigModel jtwigModel = newModel().with("var", new SelectionTest.TestClass(random));
stopWatch.start();
jtwigTemplate.render(jtwigModel);
stopWatch.stop();
groupedTimingStatistics.addStopWatch(stopWatch);
}
groupedTimingStatistics.setStopTime(System.currentTimeMillis());
System.out.println(groupedTimingStatistics.toString());
}
public static void main(String[] args) {
JtwigTemplate jtwigTemplate = JtwigTemplate.inlineTemplate("{% include 'm:a' %}" +
"\n" +
"{% if (var is defined) %}" +
"{{ var.nested.field[0] }}" +
"{% endif %}" +
"\n" +
"{% for k, v in { test: 'one', test1: 'false' } %}" +
"{{ k }} => {{ v }}\n" +
"{% endfor %}" +
"\n" +
"{% include 'm:b' %}", configuration()
.resources().resourceLoaders().add(new TypedResourceLoader("m", InMemoryResourceLoader.builder()
.withResource("a", "This is something cool")
.withResource("b", "This is something boring")
.build()))
.and().and()
.build());
System.out.println(jtwigTemplate.render(newModel().with("var", new SelectionTest.TestClass(RandomStringUtils.randomAlphabetic(6)))));
while (true) {
String random = RandomStringUtils.random(6);
JtwigModel jtwigModel = newModel().with("var", new SelectionTest.TestClass(random));
jtwigTemplate.render(jtwigModel);
}
}
}