package net.varkhan.base.functor.curry;
import junit.framework.TestCase;
import net.varkhan.base.functor._;
/**
* <b></b>.
* <p/>
*
* @author varkhan
* @date 12/1/13
* @time 1:22 PM
*/
public class CTupleTest extends TestCase {
public void testLvalue() throws Exception {
CTuple<Integer,CTuple<String,CTuple>> t1 = new CTuple.Value<Integer,CTuple<String,CTuple>>(Integer.class,null,3,null);
assertEquals("ltyp",Integer.class,t1.ltype());
assertEquals("lval",(Object)3,t1.lvalue());
CTuple<Integer,CTuple<String,CTuple>> t2 = new CTuple.Value<Integer,CTuple<String,CTuple>>(Integer.class,new Class<?>[]{String.class},3,new Object[]{"s"});
assertEquals("ltyp",Integer.class,t2.ltype());
assertEquals("lval",(Object)3,t2.lvalue());
}
public void test_value() throws Exception {
CTuple<Integer,CTuple<String,CTuple>> t1 = new CTuple.Value<Integer,CTuple<String,CTuple>>(Integer.class,null,3,null);
assertEquals("rval",null,t1._value());
CTuple<Integer,CTuple<String,CTuple>> t2 = new CTuple.Value<Integer,CTuple<String,CTuple>>(Integer.class,new Class<?>[]{String.class},3,new Object[]{"s"});
assertEquals("rval","s",t2._value().lvalue());
assertEquals("rval",null,t2._value()._value());
}
public void testValues() throws Exception {
CTuple<Integer,CTuple<String,CTuple>> t1 = new CTuple.Value<Integer,CTuple<String,CTuple>>(Integer.class,null,3,null);
assertEquals("typs",1,t1.types().length);
assertEquals("typs",Integer.class,t1.types()[0]);
assertEquals("vals",1,t1.values().length);
assertEquals("vals",3,t1.values()[0]);
CTuple<Integer,CTuple<String,CTuple>> t2 = new CTuple.Value<Integer,CTuple<String,CTuple>>(Integer.class,new Class<?>[]{String.class},3,new Object[]{"s"});
assertEquals("typs",2,t2.types().length);
assertEquals("typs",Integer.class,t2.types()[0]);
assertEquals("typs",String.class,t2.types()[1]);
assertEquals("vals",2,t2.values().length);
assertEquals("vals",3,t2.values()[0]);
assertEquals("vals","s",t2.values()[1]);
}
}