Clover coverage report - JGAP 3.1
Coverage timestamp: Mo Dez 11 2006 21:16:18 CET
file stats: LOC: 141   Methods: 7
NCLOC: 61   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
KeyedValue.java 93,8% 100% 100% 98%
coverage coverage
 1    /*
 2    * This file is part of JGAP.
 3    *
 4    * JGAP offers a dual license model containing the LGPL as well as the MPL.
 5    *
 6    * For licencing information please see the file license.txt included with JGAP
 7    * or have a look at the top of class org.jgap.Chromosome which representatively
 8    * includes the JGAP license policy applicable for any file delivered with JGAP.
 9    */
 10    package org.jgap.audit;
 11   
 12    import java.io.Serializable;
 13   
 14    /**
 15    * A (key, value) tupel.
 16    *
 17    * @author Klaus Meffert
 18    * @since 2.3
 19    */
 20    public class KeyedValue
 21    implements Cloneable, Serializable {
 22    /** String containing the CVS revision. Read out via reflection!*/
 23    private static final String CVS_REVISION = "$Revision: 1.2 $";
 24   
 25    private Comparable m_key;
 26   
 27    private Number m_value;
 28   
 29    /**
 30    * Creates a new (key, value) tupel.
 31    *
 32    * @param a_key the key
 33    * @param a_value the value, could be null
 34    *
 35    * @author Klaus Meffert
 36    * @since 2.3
 37    */
 38  59 public KeyedValue(final Comparable a_key, final Number a_value) {
 39  59 m_key = a_key;
 40  59 m_value = a_value;
 41    }
 42   
 43    /**
 44    * @return key of the tupel
 45    *
 46    * @author Klaus Meffert
 47    * @since 2.3
 48    */
 49  118 public Comparable getKey() {
 50  118 return m_key;
 51    }
 52   
 53    /**
 54    * @return value of the tupel
 55    *
 56    * @author Klaus Meffert
 57    * @since 2.3
 58    */
 59  49 public synchronized Number getValue() {
 60  49 return m_value;
 61    }
 62   
 63    /**
 64    * Sets the value for the key
 65    *
 66    * @param a_value the value to set for the key
 67    *
 68    * @author Klaus Meffert
 69    * @since 2.3
 70    */
 71  6 public synchronized void setValue(final Number a_value) {
 72  6 m_value = a_value;
 73    }
 74   
 75    /**
 76    * Tests if this object is equal to another.
 77    *
 78    * @param a_object the other object
 79    *
 80    * @return true: this object is equal to other one
 81    *
 82    * @author Klaus Meffert
 83    * @since 2.3
 84    */
 85  8 public boolean equals(final Object a_object) {
 86  8 if (this == a_object) {
 87  1 return true;
 88    }
 89  7 if (! (a_object instanceof KeyedValue)) {
 90  2 return false;
 91    }
 92  5 final KeyedValue defaultKeyedValue = (KeyedValue) a_object;
 93  5 if (m_key != null ? !m_key.equals(defaultKeyedValue.m_key)
 94    : defaultKeyedValue.m_key != null) {
 95  2 return false;
 96    }
 97  3 if (m_value != null ? !m_value.equals(defaultKeyedValue.m_value)
 98    : defaultKeyedValue.m_value != null) {
 99  2 return false;
 100    }
 101  1 return true;
 102    }
 103   
 104    /**
 105    * @return hash code of the instance
 106    *
 107    * @author Klaus Meffert
 108    * @since 2.3
 109    */
 110  4 public int hashCode() {
 111  4 int result;
 112  4 if (m_key == null) {
 113  1 result = -37;
 114    }
 115    else {
 116  3 result = m_key.hashCode();
 117    }
 118  4 result = 41 * result;
 119  4 if (m_value == null) {
 120  1 result += -3;
 121    }
 122    else {
 123  3 result += m_value.hashCode();
 124    }
 125  4 return result;
 126    }
 127   
 128    /**
 129    * @return clone of the current instance
 130    *
 131    * @throws CloneNotSupportedException not thrown here
 132    *
 133    * @author Klaus Meffert
 134    * @since 2.3
 135    */
 136  3 public Object clone()
 137    throws CloneNotSupportedException {
 138  3 KeyedValue clone = (KeyedValue)super.clone();
 139  3 return clone;
 140    }
 141    }