From 1d5b02c210dd38dac5c40d5963fd76f568f0a5e0 Mon Sep 17 00:00:00 2001 From: David North Date: Thu, 27 Sep 2012 09:35:47 +0100 Subject: [PATCH] Port a12956cd639adee61b6b9715ad7949d878a9a366 from master: Fix comparsion method in WeightedStep to honour its contract, and add a test. --- .../eclipse/editor/step/WeightedStep.java | 6 ++-- .../eclipse/editor/step/WeightedStepTest.java | 32 +++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 org.jbehave.eclipse/test/org/jbehave/eclipse/editor/step/WeightedStepTest.java diff --git a/org.jbehave.eclipse/src/org/jbehave/eclipse/editor/step/WeightedStep.java b/org.jbehave.eclipse/src/org/jbehave/eclipse/editor/step/WeightedStep.java index df6c389..aa2d1a3 100644 --- a/org.jbehave.eclipse/src/org/jbehave/eclipse/editor/step/WeightedStep.java +++ b/org.jbehave.eclipse/src/org/jbehave/eclipse/editor/step/WeightedStep.java @@ -7,14 +7,14 @@ public class WeightedStep implements Comparable, HasHTMLComment { public final StepCandidate stepCandidate; public final float weight; - public WeightedStep(StepCandidate stepCandidate, float weight) { + public WeightedStep(final StepCandidate stepCandidate, final float weight) { this.stepCandidate = stepCandidate; this.weight = weight; } @Override - public int compareTo(WeightedStep o) { - return (weight > o.weight) ? 1 : -1; + public int compareTo(final WeightedStep o) { + return Float.compare(weight, o.weight); } private String htmlComment; diff --git a/org.jbehave.eclipse/test/org/jbehave/eclipse/editor/step/WeightedStepTest.java b/org.jbehave.eclipse/test/org/jbehave/eclipse/editor/step/WeightedStepTest.java new file mode 100644 index 0000000..dd3a30c --- /dev/null +++ b/org.jbehave.eclipse/test/org/jbehave/eclipse/editor/step/WeightedStepTest.java @@ -0,0 +1,32 @@ +package org.jbehave.eclipse.editor.step; + +import static org.junit.Assert.assertEquals; + +import java.util.Collections; +import java.util.List; + +import org.junit.Test; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; + +public class WeightedStepTest { + + @Test + public void testSorting() { + WeightedStep s1 = new WeightedStep(null, 1.1f); + WeightedStep s1Also = new WeightedStep(null, 1.1f); + WeightedStep s2 = new WeightedStep(null, 1.2f); + WeightedStep s3 = new WeightedStep(null, 1.3f); + + List list = Lists.newArrayList(s1, s3, s2, s1Also); + Collections.sort(list); + + // Note we expect the relative ordering of s1Also and s1 to be preserved as they're equal + List expectedSortOrder = ImmutableList.of(s1, s1Also, s2, s3); + assertEquals(expectedSortOrder, list); + + assertEquals(0, s1.compareTo(s1Also)); + } + +}