@@ -246,6 +246,55 @@ public double doubleValue() {
246246 U .sum (asList (new MyNumber (), new MyNumber ()));
247247 }
248248
249+ /*
250+ _.subtract(1, 2);
251+ => -1
252+ _.subtract(1, 2, 3);
253+ => -4
254+ _.subtract();
255+ => null
256+ */
257+ @ Test
258+ public void subtract () {
259+ assertEquals ("-1" , U .subtract ((byte ) 1 , (byte ) 2 ).toString ());
260+ assertEquals ("-1" , U .subtract ((short ) 1 , (short ) 2 ).toString ());
261+ assertEquals ("-1" , U .subtract ((int ) 1 , (int ) 2 ).toString ());
262+ assertEquals ("-1" , U .subtract ((long ) 1 , (long ) 2 ).toString ());
263+ assertEquals ("-1.0" , U .subtract ((float ) 1 , (float ) 2 ).toString ());
264+ assertEquals ("-1.0" , U .subtract ((double ) 1 , (double ) 2 ).toString ());
265+ assertEquals ("-1" , U .subtract (Byte .valueOf ((byte ) 1 ), Byte .valueOf ((byte ) 2 )).toString ());
266+ assertEquals ("-1" , U .subtract (Short .valueOf ((short ) 1 ), Short .valueOf ((short ) 2 )).toString ());
267+ assertEquals ("-1" , U .subtract (Integer .valueOf (1 ), Integer .valueOf (2 )).toString ());
268+ assertEquals ("-1" , U .subtract (Long .valueOf (1 ), Long .valueOf (2 )).toString ());
269+ assertEquals ("-1.0" , U .subtract (Float .valueOf (1 ), Float .valueOf (2 )).toString ());
270+ assertEquals ("-1.0" , U .subtract (Double .valueOf (1 ), Double .valueOf (2 )).toString ());
271+ assertEquals ("-1" , U .subtract (java .math .BigDecimal .valueOf (1 ), java .math .BigDecimal .valueOf (2 )).toString ());
272+ assertEquals ("-1" , U .subtract (java .math .BigInteger .valueOf (1 ), java .math .BigInteger .valueOf (2 )).toString ());
273+ assertEquals ("-1" , U .subtract ((Number ) 1 , (Number ) 2 ).toString ());
274+ assertEquals ("-4" , U .subtract ((int ) 1 , (int ) 2 , (int ) 3 ).toString ());
275+ assertEquals ("1" , U .subtract ((int ) 1 ).toString ());
276+ assertEquals (null , U .subtract ());
277+ }
278+
279+ @ Test
280+ public void subtractError () {
281+ class MyNumber extends Number {
282+ public int intValue () {
283+ return 0 ;
284+ }
285+ public long longValue () {
286+ return 0 ;
287+ }
288+ public float floatValue () {
289+ return 0 ;
290+ }
291+ public double doubleValue () {
292+ return 0 ;
293+ }
294+ }
295+ U .subtract (new MyNumber (), new MyNumber ());
296+ }
297+
249298/*
250299_.mean([0, 0.5, 1]);
251300=> 0.5
0 commit comments