package com.hubspot.jinjava.el.ext;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
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 TruncDivTest {
private Jinjava jinja;
@Before
public void setUp() {
jinja = new Jinjava();
}
/**
* Test the truncated division operator "//" with integer values
*/
@Test
public void testTruncDivInteger() {
Map<String, Object> context = Maps.newHashMap();
context.put("dividend", 5);
context.put("divisor", 2);
String template = "{% set x = dividend // divisor %}{{x}}";
String rendered = jinja.render(template, context);
assertEquals("2", rendered);
}
/**
* Test the truncated division operator "//" with fractional values
*/
@Test
public void testTruncDivFractional() {
Map<String, Object> context = Maps.newHashMap();
context.put("dividend", 5.0);
context.put("divisor", 2);
String template = "{% set x = dividend // divisor %}{{x}}";
String rendered = jinja.render(template, context);
assertEquals("2.0", rendered);
}
/**
* Test the truncated division operator "//" with strings
*/
@Test
public void testTruncDivStringFails() {
Map<String, Object> context = Maps.newHashMap();
context.put("dividend", "5");
context.put("divisor", "2");
String template = "{% set x = dividend // divisor %}";
try {
jinja.render(template, context);
} catch (FatalTemplateErrorsException e) {
assertThat(e.getMessage()).contains("Unsupported operand type(s) for //: '5' (String) and '2' (String)");
}
}
}