public int compare(OptionSpec o1, OptionSpec o2) { Range arity1 = o1.arity(); Range arity2 = o2.arity(); int result = arity1.max - arity2.max; if (result == 0) { result = arity1.min - arity2.min; } if (result == 0) { // arity is same if (o1.isMultiValue() && !o2.isMultiValue()) { result = 1; } // f1 > f2 if (!o1.isMultiValue() && o2.isMultiValue()) { result = -1; } // f1 < f2 } return result == 0 ? super.compare(o1, o2) : result; } }
@Test public void testSortByShortestOptionNameAlphabetically_handlesNulls() throws Exception { Help.SortByShortestOptionNameAlphabetically sort = new Help.SortByShortestOptionNameAlphabetically(); OptionSpec a = OptionSpec.builder("-a").build(); OptionSpec b = OptionSpec.builder("-b").build(); assertEquals(1, sort.compare(null, a)); assertEquals(-1, sort.compare(a, null)); assertEquals(-1, sort.compare(a, b)); assertEquals(0, sort.compare(a, a)); assertEquals(1, sort.compare(b, a)); }
public int compare(OptionSpec o1, OptionSpec o2) { Range arity1 = o1.arity(); Range arity2 = o2.arity(); int result = arity1.max - arity2.max; if (result == 0) { result = arity1.min - arity2.min; } if (result == 0) { // arity is same if (o1.isMultiValue() && !o2.isMultiValue()) { result = 1; } // f1 > f2 if (!o1.isMultiValue() && o2.isMultiValue()) { result = -1; } // f1 < f2 } return result == 0 ? super.compare(o1, o2) : result; } }
@Test public void testSortByShortestOptionNameAlphabetically_handlesNulls() throws Exception { Help.SortByShortestOptionNameAlphabetically sort = new Help.SortByShortestOptionNameAlphabetically(); OptionSpec a = OptionSpec.builder("-a").build(); OptionSpec b = OptionSpec.builder("-b").build(); assertEquals(1, sort.compare(null, a)); assertEquals(-1, sort.compare(a, null)); assertEquals(-1, sort.compare(a, b)); assertEquals(0, sort.compare(a, a)); assertEquals(1, sort.compare(b, a)); }