Skip to content

Commit

Permalink
Fixed WeightedComparator to work with Integer.MIN_VALUE
Browse files Browse the repository at this point in the history
  • Loading branch information
chkal committed Mar 7, 2013
1 parent a187f4f commit 75c6d12
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 17 deletions.
2 changes: 1 addition & 1 deletion core/src/main/java/org/togglz/core/util/Weighted.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public static class WeightedComparator implements Comparator<Weighted> {

@Override
public int compare(Weighted left, Weighted right) {
return left.priority() - right.priority();
return Integer.valueOf(left.priority()).compareTo(Integer.valueOf(right.priority()));
}

}
Expand Down
79 changes: 63 additions & 16 deletions core/src/test/java/org/togglz/core/util/WeightedTest.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.togglz.core.util;

import static org.junit.Assert.assertEquals;
import static org.fest.assertions.api.Assertions.assertThat;

import java.util.ArrayList;
import java.util.Collections;
Expand All @@ -12,33 +12,80 @@
public class WeightedTest {

@Test
public void testWeightedComparator() {
public void shouldSortCorrectlySimpleIntValues() {

Weighted prio10 = new Weighted() {
@Override
public int priority() {
return 10;
}
};

Weighted prio20 = new Weighted() {
@Override
public int priority() {
return 20;
}
};

List<Weighted> list = new ArrayList<Weighted>();
list.add(new Second());
list.add(new First());
list.add(prio20);
list.add(prio10);
Collections.sort(list, new WeightedComparator());

assertEquals(First.class, list.get(0).getClass());
assertEquals(Second.class, list.get(1).getClass());
assertThat(list).containsExactly(prio10, prio20);

}

private final static class First implements Weighted {
@Test
public void shouldSupportMinimumIntValue() {

Weighted prioMinInt = new Weighted() {
@Override
public int priority() {
return Integer.MIN_VALUE;
}
};

Weighted prio50 = new Weighted() {
@Override
public int priority() {
return 50;
}
};

List<Weighted> list = new ArrayList<Weighted>();
list.add(prio50);
list.add(prioMinInt);
Collections.sort(list, new WeightedComparator());

@Override
public int priority() {
return 10;
}
assertThat(list).containsExactly(prioMinInt, prio50);

}

private final static class Second implements Weighted {
@Test
public void shouldSupportMaximumIntValue() {

Weighted prioMaxInt = new Weighted() {
@Override
public int priority() {
return Integer.MAX_VALUE;
}
};

Weighted prio50 = new Weighted() {
@Override
public int priority() {
return 50;
}
};

List<Weighted> list = new ArrayList<Weighted>();
list.add(prioMaxInt);
list.add(prio50);
Collections.sort(list, new WeightedComparator());

@Override
public int priority() {
return 20;
}
assertThat(list).containsExactly(prio50, prioMaxInt);

}

Expand Down

0 comments on commit 75c6d12

Please sign in to comment.