diff --git a/reader/src/main/java/org/jline/reader/Candidate.java b/reader/src/main/java/org/jline/reader/Candidate.java index 3a204c85b..07da89725 100644 --- a/reader/src/main/java/org/jline/reader/Candidate.java +++ b/reader/src/main/java/org/jline/reader/Candidate.java @@ -166,7 +166,7 @@ public int compareTo(Candidate o) { if( sort == o.sort() ) { return value.compareTo(o.value); } else { - return sort - o.sort(); + return Integer.compare(sort, o.sort()); } } diff --git a/reader/src/test/java/org/jline/reader/CandidateTest.java b/reader/src/test/java/org/jline/reader/CandidateTest.java new file mode 100644 index 000000000..96715a8c9 --- /dev/null +++ b/reader/src/test/java/org/jline/reader/CandidateTest.java @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2021, the original author or authors. + * + * This software is distributable under the BSD license. See the terms of the + * BSD license in the documentation provided with this software. + * + * https://opensource.org/licenses/BSD-3-Clause + */ +package org.jline.reader; + +import org.junit.Test; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +public class CandidateTest { + + @Test + public void testCandidatesSortedByValue() { + List candidates = Arrays.asList( + new Candidate("cand3", "cand3", null, null, null, null, true), + new Candidate("cand1", "cand1", null, null, null, null, true), + new Candidate("cand2", "cand2", null, null, null, null, true) + ); + Collections.sort(candidates); + + assertEquals("cand1", candidates.get(0).value()); + assertEquals("cand2", candidates.get(1).value()); + assertEquals("cand3", candidates.get(2).value()); + } + + @Test + public void testCandidatesSortedBySortProperty() { + List candidates = Arrays.asList( + new Candidate("cand3", "cand3", null, null, null, null, true, 3), + new Candidate("cand1", "cand1", null, null, null, null, true, 1), + new Candidate("cand2", "cand2", null, null, null, null, true, 2) + ); + Collections.sort(candidates); + + assertEquals("cand1", candidates.get(0).value()); + assertEquals("cand2", candidates.get(1).value()); + assertEquals("cand3", candidates.get(2).value()); + } + + @Test + public void testCandidatesSortedByValueAndSortProperty() { + List candidates = Arrays.asList( + new Candidate("cand3", "cand3", null, null, null, null, true, -3), + new Candidate("aaa", "cand1", null, null, null, null, true), + new Candidate("cand2", "cand2", null, null, null, null, true, 2) + ); + Collections.sort(candidates); + + assertEquals("cand3", candidates.get(0).value()); + assertEquals("aaa", candidates.get(1).value()); + assertEquals("cand2", candidates.get(2).value()); + } + + @Test + public void testCandidatesSortedByCornerSortProps() { + List candidates = Arrays.asList( + new Candidate("cand1", "cand1", null, null, null, null, true, 1), + new Candidate("cand2", "cand2", null, null, null, null, true, Integer.MAX_VALUE), + new Candidate("cand3", "cand3", null, null, null, null, true, Integer.MIN_VALUE) + ); + Collections.sort(candidates); + + assertEquals("cand3", candidates.get(0).value()); + assertEquals("cand1", candidates.get(1).value()); + assertEquals("cand2", candidates.get(2).value()); + } +} diff --git a/reader/src/test/java/org/jline/reader/LineReaderBuilderTest.java b/reader/src/test/java/org/jline/reader/LineReaderBuilderTest.java index f400b5501..341cdb038 100644 --- a/reader/src/test/java/org/jline/reader/LineReaderBuilderTest.java +++ b/reader/src/test/java/org/jline/reader/LineReaderBuilderTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 20021, the original author or authors. + * Copyright (c) 2021, the original author or authors. * * This software is distributable under the BSD license. See the terms of the * BSD license in the documentation provided with this software.