package org.mvel2.tests.core;
import junit.framework.TestCase;
import org.mvel2.MVEL;
import org.mvel2.util.FastList;
import org.mvel2.util.StringAppender;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class UtilsTests extends TestCase {
public void testMain() {
assertEquals("foobarfoobar", new StringAppender().append("foo").append('b').append('a').append('r').append("foobar").toString());
}
public void testMain2() {
assertEquals("foo bar test 1 2 3foo bar test 1 2 3",
new StringAppender(0).append("foo bar ").append("test").append(" 1 2 3")
.append("foo bar").append(" ").append("test").append(" 1 2 3").toString());
}
public void testMain3() {
assertEquals("C:/projects/webcat/exploded/resources/productimages/",
new StringAppender(10).append("C:/projects/webcat/exploded/")
.append("resources/productimages/").toString());
}
public void testFastList1() {
FastList list = new FastList(3);
list.add("One");
list.add("Two");
list.add("Three");
list.add("Five");
list.add(1, "Four");
String[] zz1 = {"One", "Four", "Two", "Three", "Five"};
int i = 0;
for (Object o : list) {
if (!zz1[i++].equals(o)) throw new AssertionError("problem with list!");
}
list.remove(2);
String[] zz2 = {"One", "Four", "Three", "Five"};
i = 0;
for (Object o : list) {
if (!zz2[i++].equals(o)) throw new AssertionError("problem with list!");
}
}
public void testAddToFastList() throws Exception {
FastList fl = new FastList(0);
assertEquals(0, fl.size());
// this throws an ArrayIndexOutOfBoundsException:0
fl.add("value");
assertEquals(1, fl.size());
}
public void testAddAllFastList() throws Exception {
FastList fl1 = new FastList(1);
fl1.add("value1");
fl1.add("value2");
assertEquals(2, fl1.size());
FastList fl2 = new FastList(1);
fl2.add("value3");
fl2.add("value4");
// the addAll results in a list of 2 instead of 4 that was expected
fl1.addAll(fl2);
assertEquals(4, fl1.size());
}
public void testAddAllFastList2() throws Exception {
FastList<String> fl1 = new FastList<String>();
fl1.add("value1");
fl1.add("value2");
FastList<String> fl2 = new FastList<String>();
fl2.add("value3");
fl2.add("value4");
fl1.addAll(fl2);
assertEquals("value1", fl1.get(0));
assertEquals("value2", fl1.get(1));
assertEquals("value3", fl1.get(2)); // this results in null
assertEquals("value4", fl1.get(3)); // this results in null
}
public void testAddAll2() {
FastList<String> flSource = new FastList<String>();
flSource.add("value");
FastList<String> flDest = new FastList<String>(flSource.size());
flDest.addAll(flSource); // throws ArrayIndexOutOfBoundsException: 2
assertEquals("value", flDest.get(0));
}
public void testFastListEval() throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
// The following throws a PropertyAccessException:
// unable to resolve property: could not access property
MVEL.eval("list = []; list.add('value')", map);
assertEquals(1, ((List) map.get("list")).size());
}
}