@@ -511,6 +511,8 @@ public String toString() {
511511 public void first () {
512512 final Integer result = _ .first (asList (5 , 4 , 3 , 2 , 1 ));
513513 assertEquals ("5" , result .toString ());
514+ final Object resultChain = _ .chain (asList (5 , 4 , 3 , 2 , 1 )).first ().item ();
515+ assertEquals ("5" , resultChain .toString ());
514516 final List <Integer > resultList = _ .first (asList (5 , 4 , 3 , 2 , 1 ), 2 );
515517 assertEquals ("[5, 4]" , resultList .toString ());
516518 final int resultInt = _ .first (new Integer [] {5 , 4 , 3 , 2 , 1 });
@@ -547,8 +549,12 @@ public void head() {
547549 public void initial () {
548550 final List <Integer > result = _ .initial (asList (5 , 4 , 3 , 2 , 1 ));
549551 assertEquals ("[5, 4, 3, 2]" , result .toString ());
552+ final List <Integer > resultChain = _ .chain (asList (5 , 4 , 3 , 2 , 1 )).initial ().value ();
553+ assertEquals ("[5, 4, 3, 2]" , resultChain .toString ());
550554 final List <Integer > resultList = _ .initial (asList (5 , 4 , 3 , 2 , 1 ), 2 );
551555 assertEquals ("[5, 4, 3]" , resultList .toString ());
556+ final List <Integer > resultListChain = _ .chain (asList (5 , 4 , 3 , 2 , 1 )).initial (2 ).value ();
557+ assertEquals ("[5, 4, 3]" , resultListChain .toString ());
552558 final Integer [] resultArray = _ .initial (new Integer [] {5 , 4 , 3 , 2 , 1 });
553559 assertEquals ("[5, 4, 3, 2]" , asList (resultArray ).toString ());
554560 final Integer [] resultListArray = _ .initial (new Integer [] {5 , 4 , 3 , 2 , 1 }, 2 );
@@ -563,6 +569,8 @@ public void initial() {
563569 public void last () {
564570 final Integer result = _ .last (asList (5 , 4 , 3 , 2 , 1 ));
565571 assertEquals ("1" , result .toString ());
572+ final Object resultChain = _ .chain (asList (5 , 4 , 3 , 2 , 1 )).last ().item ();
573+ assertEquals ("1" , resultChain .toString ());
566574 final Integer resultArray = _ .last (new Integer [] {5 , 4 , 3 , 2 , 1 });
567575 assertEquals ("1" , resultArray .toString ());
568576 }
@@ -617,8 +625,12 @@ public void drop() {
617625 public void rest () {
618626 final List <Integer > result = _ .rest (asList (5 , 4 , 3 , 2 , 1 ));
619627 assertEquals ("[4, 3, 2, 1]" , result .toString ());
628+ final List <Integer > resultChain = _ .chain (asList (5 , 4 , 3 , 2 , 1 )).rest ().value ();
629+ assertEquals ("[4, 3, 2, 1]" , resultChain .toString ());
620630 final List <Integer > result2 = _ .rest (asList (5 , 4 , 3 , 2 , 1 ), 2 );
621631 assertEquals ("[3, 2, 1]" , result2 .toString ());
632+ final List <Integer > result2Chain = _ .chain (asList (5 , 4 , 3 , 2 , 1 )).rest (2 ).value ();
633+ assertEquals ("[3, 2, 1]" , result2Chain .toString ());
622634 final Object [] resultArray = _ .rest (new Integer [] {5 , 4 , 3 , 2 , 1 });
623635 assertEquals ("[4, 3, 2, 1]" , asList (resultArray ).toString ());
624636 final Object [] resultArray2 = _ .rest (new Integer [] {5 , 4 , 3 , 2 , 1 }, 2 );
@@ -1128,6 +1140,54 @@ public String apply(Map<String, Object> item) {
11281140 assertEquals ("moe is 21" , youngest );
11291141 }
11301142
1143+ @ Test
1144+ public void chainSet () throws Exception {
1145+ final Set <Map <String , Object >> stooges = new HashSet <Map <String , Object >>() {{
1146+ add (new LinkedHashMap <String , Object >() {{ put ("name" , "curly" ); put ("age" , 25 ); }});
1147+ add (new LinkedHashMap <String , Object >() {{ put ("name" , "moe" ); put ("age" , 21 ); }});
1148+ add (new LinkedHashMap <String , Object >() {{ put ("name" , "larry" ); put ("age" , 23 ); }});
1149+ }};
1150+ final String youngest = _ .chain (stooges )
1151+ .sortBy (
1152+ new Function1 <Map <String , Object >, String >() {
1153+ public String apply (Map <String , Object > item ) {
1154+ return item .get ("age" ).toString ();
1155+ }
1156+ })
1157+ .map (
1158+ new Function1 <Map <String , Object >, String >() {
1159+ public String apply (Map <String , Object > item ) {
1160+ return item .get ("name" ) + " is " + item .get ("age" );
1161+ }
1162+ })
1163+ .first ().item ().toString ();
1164+ assertEquals ("moe is 21" , youngest );
1165+ }
1166+
1167+ @ Test
1168+ public void chainArray () throws Exception {
1169+ final List <Map <String , Object >> stooges = new ArrayList <Map <String , Object >>() {{
1170+ add (new LinkedHashMap <String , Object >() {{ put ("name" , "curly" ); put ("age" , 25 ); }});
1171+ add (new LinkedHashMap <String , Object >() {{ put ("name" , "moe" ); put ("age" , 21 ); }});
1172+ add (new LinkedHashMap <String , Object >() {{ put ("name" , "larry" ); put ("age" , 23 ); }});
1173+ }};
1174+ final String youngest = _ .chain (stooges .toArray ())
1175+ .sortBy (
1176+ new Function1 <Map <String , Object >, String >() {
1177+ public String apply (Map <String , Object > item ) {
1178+ return item .get ("age" ).toString ();
1179+ }
1180+ })
1181+ .map (
1182+ new Function1 <Map <String , Object >, String >() {
1183+ public String apply (Map <String , Object > item ) {
1184+ return item .get ("name" ) + " is " + item .get ("age" );
1185+ }
1186+ })
1187+ .first ().item ().toString ();
1188+ assertEquals ("moe is 21" , youngest );
1189+ }
1190+
11311191/*
11321192var lyrics = [
11331193 {line: 1, words: "I'm a lumberjack and I'm okay"},
0 commit comments