package net.varkhan.base.functor.expander; import junit.framework.TestCase; import net.varkhan.base.functor.Expander; import java.util.Iterator; /** * <b></b>. * <p/> * @author varkhan * @date 11/5/13 * @time 5:13 PM */ public class BlockExpanderTest extends TestCase { public void testExpander() throws Exception { String[] str1 = new String[] { "a"}; String[] str2 = new String[] { "a", "b"}; String[] str3 = new String[] { "a", "b", "c" }; String[] str6 = new String[] { "a", "b", "c", "d", "e", "f" }; Expander<String[],String[],Object> exp11 = new BlockExpander<String, String[], Object>(String.class,new ArrayExpander<String,Object>(),1,1); Iterable<String[]> itb111 = exp11.invoke(str1,null); Iterator<String[]> itr111 = itb111.iterator(); assertTrue(itr111.hasNext()); assertEquals("a",toString(itr111.next())); assertFalse(itr111.hasNext()); Iterable<String[]> itb113 = exp11.invoke(str3,null); Iterator<String[]> itr113 = itb113.iterator(); assertTrue(itr113.hasNext()); assertEquals("a",toString(itr113.next())); assertEquals("b",toString(itr113.next())); assertEquals("c",toString(itr113.next())); assertFalse(itr113.hasNext()); Expander<String[],String[],Object> exp23 = new BlockExpander<String, String[], Object>(String.class,new ArrayExpander<String,Object>(),2,3); Iterable<String[]> itb231 = exp23.invoke(str1,null); Iterator<String[]> itr231 = itb231.iterator(); assertFalse(itr231.hasNext()); Iterable<String[]> itb232 = exp23.invoke(str2,null); Iterator<String[]> itr232 = itb232.iterator(); assertTrue(itr232.hasNext()); assertEquals("a b",toString(itr232.next())); assertFalse(itr232.hasNext()); Iterable<String[]> itb233 = exp23.invoke(str3,null); Iterator<String[]> itr233 = itb233.iterator(); assertTrue(itr233.hasNext()); assertEquals("a b",toString(itr233.next())); assertEquals("b c",toString(itr233.next())); assertEquals("a b c",toString(itr233.next())); assertFalse(itr233.hasNext()); Iterable<String[]> itb236 = exp23.invoke(str6,null); Iterator<String[]> itr236 = itb236.iterator(); assertTrue(itr236.hasNext()); assertEquals("a b",toString(itr236.next())); assertEquals("b c",toString(itr236.next())); assertEquals("a b c",toString(itr236.next())); assertEquals("c d",toString(itr236.next())); assertEquals("b c d",toString(itr236.next())); assertEquals("d e",toString(itr236.next())); assertEquals("c d e",toString(itr236.next())); assertEquals("e f",toString(itr236.next())); assertEquals("d e f",toString(itr236.next())); assertFalse(itr236.hasNext()); } private String toString(String[] a) { StringBuilder buf = new StringBuilder(); boolean first = true; for(String s: a) { if(first) first = false; else buf.append(' '); buf.append(s); } return buf.toString(); } }