Fix .compareTo() calculation in Size and Weight classes.
[Persons_Comparator.git] / src / Size.java
index 0cecada6c98192f7cfa94f874f937e1fe9831276..6946e5a8967e2358072fccd1fb7fa13e619e9f9d 100644 (file)
@@ -1,9 +1,11 @@
-
-public class Size {
+public class Size implements Comparable<Size> {
     private int max = 240;
     private int min = 20;
     private int size;
 
+    Size() {
+    }
+
     Size(int size) {
         setSize(size);
     }
@@ -15,10 +17,22 @@ public class Size {
     public void setSize(int size) {
         if (validateSize(size)) {
             this.size = size;
-        } /* FIXME: raise an error */
+        } else {
+            throw new IllegalArgumentException("Size must be between " + this.min + " and " + this.max);
+        }
     }
 
     private boolean validateSize(int size) {
-        return (size > max || size < min);
+        return (size >= min && size <= max);
+    }
+
+    @Override
+    public int compareTo(Size size) {
+        int distance = size.getSize() - this.getSize();
+        if (distance >= 0)
+            return distance;
+        else
+            return -distance;
+
     }
 }