22
33import org .junit .Test ;
44
5- import static com .jnape .palatable .lambda .adt .hlist .HList .cons ;
6- import static com .jnape .palatable .lambda .adt .hlist .HList .nil ;
7- import static com .jnape .palatable .lambda .adt .hlist .HList .singletonHList ;
8- import static com .jnape .palatable .lambda .adt .hlist .HList .tuple ;
9- import static org .junit .Assert .assertEquals ;
10- import static org .junit .Assert .assertFalse ;
11- import static org .junit .Assert .assertNotEquals ;
12- import static org .junit .Assert .assertSame ;
13- import static org .junit .Assert .assertTrue ;
5+ import static com .jnape .palatable .lambda .adt .hlist .HList .*;
6+ import static org .hamcrest .CoreMatchers .instanceOf ;
7+ import static org .junit .Assert .*;
148
159public class HListTest {
1610
@@ -36,6 +30,18 @@ public void convenienceStaticFactoryMethods() {
3630 assertEquals (nil ().cons (false ).cons (4.0 ).cons ("3" ).cons ('2' ).cons (1 ), tuple (1 , '2' , "3" , 4.0 , false ));
3731 }
3832
33+ @ Test
34+ public void autoPromotion () {
35+ assertThat (cons (1 , nil ()), instanceOf (SingletonHList .class ));
36+ assertThat (cons (1 , singletonHList (1 )), instanceOf (Tuple2 .class ));
37+ assertThat (cons (1 , tuple (1 , 1 )), instanceOf (Tuple3 .class ));
38+ assertThat (cons (1 , tuple (1 , 1 , 1 )), instanceOf (Tuple4 .class ));
39+ assertThat (cons (1 , tuple (1 , 1 , 1 , 1 )), instanceOf (Tuple5 .class ));
40+ assertThat (cons (1 , tuple (1 , 1 , 1 , 1 , 1 )), instanceOf (Tuple6 .class ));
41+ assertThat (cons (1 , tuple (1 , 1 , 1 , 1 , 1 , 1 )), instanceOf (Tuple7 .class ));
42+ assertThat (cons (1 , tuple (1 , 1 , 1 , 1 , 1 , 1 , 1 )), instanceOf (Tuple8 .class ));
43+ }
44+
3945 @ Test
4046 public void nilReusesInstance () {
4147 assertSame (nil (), nil ());
0 commit comments