@@ -307,6 +307,62 @@ public Integer apply(Integer item1, Integer item2) {
307307 assertEquals ("6" , result .toString ());
308308 }
309309
310+ /*
311+ var sum = _.reduce([1, 2, 3], function(memo, num){ return memo + num; });
312+ => 6
313+ */
314+ @ Test
315+ public void reduceWithoutInit () {
316+ final Integer result =
317+ $ .reduce (asList (1 , 2 , 3 ),
318+ new BinaryOperator <Integer >() {
319+ public Integer apply (Integer item1 , Integer item2 ) {
320+ return item1 + item2 ;
321+ }
322+ }).get ();
323+ assertEquals ("6" , result .toString ());
324+ final Integer resultChain =
325+ $ .chain (asList (1 , 2 , 3 ))
326+ .reduce (
327+ new BinaryOperator <Integer >() {
328+ public Integer apply (Integer item1 , Integer item2 ) {
329+ return item1 + item2 ;
330+ }
331+ }).item ().get ();
332+ assertEquals ("6" , resultChain .toString ());
333+ $ .reduce (new ArrayList <Integer >(),
334+ new BinaryOperator <Integer >() {
335+ public Integer apply (Integer item1 , Integer item2 ) {
336+ return item1 + item2 ;
337+ }
338+ });
339+ }
340+
341+ /*
342+ var sum = _.reduceRight([1, 2, 3], function(memo, num){ return memo + num; });
343+ => 6
344+ */
345+ @ Test
346+ public void reduceRightWithoutInit () {
347+ final Integer result =
348+ $ .reduceRight (asList (1 , 2 , 3 ),
349+ new BinaryOperator <Integer >() {
350+ public Integer apply (Integer item1 , Integer item2 ) {
351+ return item1 + item2 ;
352+ }
353+ }).get ();
354+ assertEquals ("6" , result .toString ());
355+ final Integer resultChain =
356+ $ .chain (asList (1 , 2 , 3 ))
357+ .reduceRight (
358+ new BinaryOperator <Integer >() {
359+ public Integer apply (Integer item1 , Integer item2 ) {
360+ return item1 + item2 ;
361+ }
362+ }).item ().get ();
363+ assertEquals ("6" , resultChain .toString ());
364+ }
365+
310366/*
311367var sum = _.reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0);
312368=> 6
0 commit comments