package com.hubspot.jinjava.el.ext;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.Maps;
import com.hubspot.jinjava.Jinjava;
import com.hubspot.jinjava.interpret.FatalTemplateErrorsException;
public class PowerOfTest {
@Before
public void setUp() {
jinja = new Jinjava();
}
@Test
public void testPowerOfInteger() {
Map<String, Object> context = Maps.newHashMap();
context.put("base", 2);
context.put("exponent", 8);
String template = "{% set x = base ** exponent %}{{x}}";
String rendered = jinja.render(template, context);
assertEquals("256", rendered);
}
@Test
public void testPowerOfFractional() {
Map<String, Object> context = Maps.newHashMap();
context.put("base", 2);
context.put("exponent", 8.0);
String template = "{% set x = base ** exponent %}{{x}}";
String rendered = jinja.render(template, context);
assertEquals("256.0", rendered);
}
@Test
public void test04PowerOfStringFails() {
Map<String, Object> context = Maps.newHashMap();
context.put("base", "2");
context.put("exponent", "8");
String template = "{% set x = base ** exponent %}{{x}}";
try {
jinja.render(template, context);
} catch (FatalTemplateErrorsException e) {
String msg = e.getMessage();
assertTrue(msg.contains("Unsupported operand type(s)"));
}
}
private Jinjava jinja;
}