package jetbrick.template.exec.directive;
import jetbrick.template.exec.AbstractJetxTest;
import org.junit.Assert;
import org.junit.Test;
public class DirectiveForTest extends AbstractJetxTest {
@Test
public void testForList() {
Assert.assertEquals("", eval("#for(i:[])${i}#end"));
Assert.assertEquals("123", eval("#for(i:[1,2,3])${i}#end"));
}
@Test
public void testForMap() {
Assert.assertEquals("", eval("#for(i:{})${i}#end"));
Assert.assertEquals("a-1,b-2,", eval("#for(e:{a:1,b:2})${e.key}-${e.value},#end"));
}
@Test
public void testForElse() {
Assert.assertEquals("XX", eval("#for(i:[])${i}#else()XX#end"));
Assert.assertEquals("123", eval("#for(i:[1,2,3])${i}#else()XX#end"));
}
@Test
public void testForStatus() {
Assert.assertEquals("1-true,2-false,3-true,", eval("#for(i:[10,11,12])${for.index}-${for.odd},#end"));
}
@Test
public void testForOuter() {
Assert.assertEquals("1.1,1.2,1.3,2.1,2.2,2.3,", eval("#for(x:[1,2])#for(y:[1,2,3])${for.outer.index}.${for.index},#end#end"));
}
@Test
public void testForComplex() {
StringBuilder sb = new StringBuilder();
sb.append("#for(i:[1,2])");
sb.append("${for.index}-${i},");
sb.append("#for(j:['a','b'])");
sb.append("${for.index}-${j},");
sb.append("#end");
sb.append("#end");
Assert.assertEquals("1-1,1-a,2-b,2-2,1-a,2-b,", eval(sb.toString()));
}
}