package org.maziarz.yiiclipse.codegen;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import junit.framework.Assert;
import org.eclipse.php.internal.core.ast.nodes.Expression;
import org.eclipse.php.internal.core.ast.nodes.Program;
import org.junit.Test;
public class ArrayMapperTests extends BaseArrayMapperTest{
@Test
public void testSimpleList(){
PhpCodeGenerator generator = new PhpCodeGenerator();
Program program = generator.getProgram();
ArrayMapper am = new ArrayMapper(program.getAST());
String[] values = new String[] {"raz", "dwa", "trzy"};
Expression expr = am.getArray(Arrays.asList(values));
addToProgram(program, expr);
String expectedCode = "array('raz','dwa','trzy',);";
Assert.assertEquals(expectedCode, generator.emit().replace("\n", ""));
}
@Test
public void testSimpleMap1(){
Map<String, String> map = new LinkedHashMap<String, String>();
map.put("app", "aa");
map.put("app2", "ee");
String expectedCode = "array('app'=>'aa','app2'=>'ee',);";
testMap(map, expectedCode);
}
@Test
public void testSimpleMap1a(){
Map<String, String> map = new LinkedHashMap<String, String>();
map.put("app", null);
map.put("app2", "ee");
String expectedCode = "array('app','app2'=>'ee',);";
testMap(map, expectedCode);
}
@Test
public void testSimpleMap2(){
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("app", "aa");
Map<String, String> m2 = new LinkedHashMap<String, String>();
m2.put("a", "b");
m2.put("c", "d");
map.put("app2", m2);
String expectedCode = "array('app'=>'aa','app2'=>array('a'=>'b','c'=>'d',),);";
testMap(map, expectedCode);
}
@Test
public void testSimpleMap3(){
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("app", "aa");
Map<String, String> m2 = new LinkedHashMap<String, String>();
m2.put("0", null);
m2.put("a", "b");
m2.put("c", "d");
map.put("app2", m2);
String expectedCode = "array('app'=>'aa','app2'=>array('0','a'=>'b','c'=>'d',),);";
testMap(map, expectedCode);
}
@Test
public void testSimpleMap4(){
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("app", null);
Map<String, String> m2 = new LinkedHashMap<String, String>();
m2.put("0", null);
m2.put("a", "b");
m2.put("c", "d");
map.put("app2", m2);
String expectedCode = "array('app','app2'=>array('0','a'=>'b','c'=>'d',),);";
testMap(map, expectedCode);
}
@Test
public void testSimpleMap5(){
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("app", null);
Map<String, Object> m2 = new LinkedHashMap<String, Object>();
m2.put("0", null);
m2.put("a", "b");
List<String> list = Arrays.asList(new String[]{"1", "2", "3"});
m2.put("c", list);
map.put("app2", m2);
String expectedCode = "array('app','app2'=>array('0','a'=>'b','c'=>array('1','2','3',),),);";
testMap(map, expectedCode);
}
@Test
public void testSimpleMap5WithIntegers(){
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("app", null);
Map<String, Object> m2 = new LinkedHashMap<String, Object>();
m2.put("0", null);
m2.put("a", "b");
List<Integer> list = Arrays.asList(new Integer[]{1, 2, 3});
m2.put("c", list);
map.put("app2", m2);
String expectedCode = "array('app','app2'=>array('0','a'=>'b','c'=>array(1,2,3,),),);";
testMap(map, expectedCode);
}
@Test
public void testSimpleMap5WithMixed(){
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("app", null);
Map<String, Object> m2 = new LinkedHashMap<String, Object>();
m2.put("0", null);
m2.put("a", "b");
List<Object> list = Arrays.asList(new Object[]{1, "2", Arrays.asList(new String[]{"3"})});
m2.put("c", list);
map.put("app2", m2);
String expectedCode = "array('app','app2'=>array('0','a'=>'b','c'=>array(1,'2',array('3',),),),);";
testMap(map, expectedCode);
}
}